NAME
envassert - Ensure that the environment variables match what you need, or abort.
VERSION
version 0.010
SYNOPSIS
envassert [options]
Options: --help --man --version --break-at-error --env-description
DESCRIPTION
envassert checks that your runtime environment, as defined with environment variables, matches with what you want.
You can define your required environment in a file. Default file is .envassert but you can use any file.
It is advantageous to use envassert for examnple when running a container. If you check your environment for missing or wrongly defined environment variables at the beginning of the container run, your container will fail sooner instead of in a later point in execution when the variables are needed.
Errors
There are three kinds of errors:
- ENV_ASSERT_MISSING_FROM_ENVIRONMENT
-
"Variable <var_name> is missing from environment"
- ENV_ASSERT_INVALID_CONTENT_IN_VARIABLE
-
"Variable <var_name> has invalid content"
- ENV_ASSERT_MISSING_FROM_DEFINITION
-
"Variable <var_name> is missing from description"
This error will only be reported if you have set the special option exact. See below.
Environment Description Language
Environment is described in file .envdesc. Environment description file is a Unix shell compatible file, similar to a .env file.
.envdesc Format
In .envdesc file there is only environment variables, comments or empty rows. Example:
# Required env
## envassert (opts: exact=1)
FILENAME=^[[:word:]]{1,}$
Env var name is followed by a regular expression. The regexp is an extended Perl regular expression without quotation marks. One env var and its descriptive regexp use one row.
A comment begins at the beginning of the row and uses the whole row. It start with '#' character.
Two comment characters and the word envassert at the beginning of the row mean this is an envassert meta command. You can specify different environment related options with these commands.
Supported options:
- exact
-
The option exact means that all allowed env variables are described in this file. Any unknown env var causes an error when verifying.
CLI interface without dependencies
The envassert command is also available as self contained executable. You can download it and run it as it is without additional installation of CPAN packages. Of course, you still need Perl, but Perl comes with any normal Linux installation.
This can be convenient if you want to, for instance, include envassert in a docker container build.
curl -LSs -o envassert https://raw.githubusercontent.com/mikkoi/env-assert/main/envassert.self-contained
chmod +x ./envassert
OPTIONS
- --help
-
Print a brief help message and exits.
- --man
-
Prints the manual page and exits.
- --version
-
Prints the version and exits.
- -b, --break-at-first-error
-
Break checking at the first error and report back. Default: false
- -e, --env-description
-
Path to file which has the environment description. Default: .envdesc
- -x, --exact
-
Fail check if environment contains variables not defined in environment descript. This option will override the equivalent option in .envdesc file. Default: false
EXAMPLES
$ envassert
Environment Assert: ERRORS:
variables:
FIRST_VAR: Variable FIRST_VAR is missing from environment
FOURTH_VAR: Variable FOURTH_VAR is missing from environment
DEPENDENCIES
No external dependencies outside Perl's standard distribution.
AUTHOR
Mikko Koivunalho <mikkoi@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2023 by Mikko Koivunalho.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.