apigenieconfig

config

Prints the effective configuration, checks a configuration file, and prints the JSON Schema of the configuration file.

Usage

apigenie config [--config FILE | --no-config] [--json] [--origin] [--for SECTION]
apigenie config check [FILE]
apigenie config schema [--for SECTION | --standalone-server] [--out FILE]

Description

The commands of apigenie, apigenie-generator, apigenie-server and apigenie-catalog read their settings from the configuration file: apigenie.yaml in the current directory or a parent up to the root of the repository, or the file given with --config. Every file is checked against a JSON Schema (draft-7) when it is loaded. The schema is made of one part per section, so it covers the settings of all four executables.

apigenie config

Prints the settings the commands use: the values of the file, those set by environment variables, and the defaults of the settings the file leaves out. Sections without any setting are left out.

Option Description
--config FILE Uses FILE instead of the file found in the repository.
--no-config Uses no file: prints the defaults.
--json Prints JSON instead of YAML.
--origin Annotates each value with where it comes from.
--for SECTION Prints one section only: catalog, lint, format, diff, generate, generate.<target> (for example generate.client_go) or mock.

With --origin, the YAML output has a comment after each value:

commands:
  lint:
    extends:
      - recommended # apigenie.yaml (repository file)
  mock:
    server:
      host: 127.0.0.1 # default
      port: 8080 # environment APIGENIE_SERVER_PORT

The origins are:

Origin Meaning
<path> (repository file) the file found in the current directory or a parent
--config <path> the file given with --config
environment <VARIABLE> an environment variable of apigenie-server (APIGENIE_SERVER_PORT and the others listed in mock server), which wins over the file
default the value used when the file leaves the setting out

With --json --origin, the output is an object with the configuration under config and the origin of each value, keyed by its JSON pointer, under origins.

Below a section with extends (such as extends: [recommended] in lint, format or diff), only the values of the file are shown: the presets set the others.

Settings given on the command line of a command (such as --port of apigenie-server) are not part of the configuration and are not shown.

apigenie config check

Validates FILE, or the file found in the repository, against the schema. It prints <file>: ok and exits with 0 when the file is valid. Otherwise it prints each error with its position and the JSON pointer of the value, and exits with 2:

$ apigenie config check apigenie.yaml
apigenie.yaml:4:11: /commands/fromat: unknown property 'fromat'; did you mean 'format'?
apigenie.yaml:9:15: /commands/format/openapi/indent: expected type integer, found string
apigenie.yaml:12:20: /commands/generate/server_express/validation: "zod" is not one of "ajv", "generated", "none"

Every unknown setting is reported at once. Of the other errors, the first one found is reported.

apigenie config schema

Prints the JSON Schema of the configuration file, of one section with --for, or of a standalone apigenie-server file (apigenie-server.yaml, whose root holds the settings of commands.mock) with --standalone-server. --out FILE writes it to FILE.

The schema of each release is also published on the website, at https://apigenie.pl/schemas/apigenie-config/<version>.json and https://apigenie.pl/schemas/apigenie-server-config/<version>.json, with latest.json for the last release. See editor support.

Exit status

Status Meaning
0 Success; config check: the file is valid.
2 config check found errors in the file, the configuration file can’t be loaded, or a usage error: an unknown section, no file to check.

These are the statuses of every command (exit status).

See also