---
name: "GitLab::API::v4::Config"
section: "3pm"
platform: "linux"
package: "libgitlab-api-v4-perl"
version: "0.27-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/GitLab::API::v4::Config"
---

# GitLab::API::v4::Config(3pm)

Load configuration from a file, environment, and/or CLI options.

## NAME

GitLab::API::v4::Config - Load configuration from a file, environment, and/or CLI options.

## SYNOPSIS

```
    use GitLab::API::v4;
    use GitLab::API::v4::Config;

    my $config = GitLab::API::v4::Config->new();
    my $api = GitLab::API::v4->new( $config->args() );
```

## DESCRIPTION

This module is used by gitlab-api-v4 to load configuration.

If you are using GitLab::API::v4 directly then this module will not be automatically used, but you are welcome to explicitly use it as shown in the "SYNOPSIS".

## ARGUMENTS

### file

The file to load configuration from.  The file should hold valid JSON.

By default this will be set to `".gitlab-api-v4-config"` in the current user's home directory.

This can be overridden with the `"GITLAB_API_V4_CONFIG_FILE"` environment variable or the `"--config-file=..."` command line argument.

## ATTRIBUTES

### opt\_args

Returns a hashref of arguments derived from command line options.

Supported options are:

```
    --config_file=...
    --url=...
    --private-token=...
    --access-token=...
    --retries=...
```

Note that the options are read from, and removed from, `@ARGV`.  Due to this the arguments are saved internally and re-used for all instances of this class so that there are no weird race conditions.

### env\_args

Returns a hashref of arguments derived from environment variables.

Supported environment variables are:

```
    GITLAB_API_V4_CONFIG_FILE
    GITLAB_API_V4_URL
    GITLAB_API_V4_PRIVATE_TOKEN
    GITLAB_API_V4_ACCESS_TOKEN
    GITLAB_API_V4_RETRIES
```

### file\_args

Returns a hashref of arguments gotten by decoding the JSON in the "file".

### args

Returns a final, combined, hashref of arguments containing everything in "opt\_args", "env\_args", and "file\_args".  If there are any duplicate arguments then "opt\_args" has highest precedence, "env\_args" is next, and at the bottom is "file\_args".

## METHODS

### get\_options

### configure

When called this method interactively prompts the user for argument values and then encodes them as JSON and stores them in "file".  The file will be chmod'ed `0600` so that only the current user may read or write to the file.

## SUPPORT

See "SUPPORT" in GitLab::API::v4.

## AUTHORS

See "AUTHORS" in GitLab::API::v4.

## LICENSE

See "LICENSE" in GitLab::API::v4.
