Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Boeing/config-file-validator
Cross Platform tool to validate configuration files
https://github.com/Boeing/config-file-validator
config configuration-files developer-tools devops files go golang hacktoberfest hacktoberfest-2024 hacktoberfest2024 ini json toml validator xml yaml
Last synced: 19 days ago
JSON representation
Cross Platform tool to validate configuration files
- Host: GitHub
- URL: https://github.com/Boeing/config-file-validator
- Owner: Boeing
- License: apache-2.0
- Created: 2022-12-06T01:23:11.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-25T17:02:33.000Z (19 days ago)
- Last Synced: 2024-10-25T19:49:11.773Z (19 days ago)
- Topics: config, configuration-files, developer-tools, devops, files, go, golang, hacktoberfest, hacktoberfest-2024, hacktoberfest2024, ini, json, toml, validator, xml, yaml
- Language: Go
- Homepage: https://boeing.github.io/config-file-validator/
- Size: 16.8 MB
- Stars: 337
- Watchers: 10
- Forks: 65
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-go - config-file-validator - Cross Platform tool to validate configuration files. (Utilities / Utility/Miscellaneous)
README
Config File Validator
Single cross-platform CLI tool to validate different configuration file types
## Supported config files formats:
* Apple PList XML
* CSV
* EDITORCONFIG
* ENV
* HCL
* HOCON
* INI
* JSON
* Properties
* TOML
* XML
* YAML## Demo
## Installation
There are several ways to install the config file validator tool### Binary Releases
Download and unpack from https://github.com/Boeing/config-file-validator/releases### Aqua
You can install the validator using [aqua](https://aquaproj.github.io/).```
aqua g -i Boeing/config-file-validator
```### Scoop
You can install the validator using [Scoop](https://scoop.sh/).```
scoop install config-file-validator
```### Arch Linux
We release an [AUR package](https://aur.archlinux.org/packages/config-file-validator) for the config-file-validator```
git clone https://aur.archlinux.org/config-file-validator.git
cd config-file-validator
makepkg -si
```### `go install`
If you have a go environment on your desktop you can use [go install](https://go.dev/doc/go-get-install-deprecation) to install the validator executable. The validator executable will be installed to the directory named by the GOBIN environment variable, which defaults to $GOPATH/bin or $HOME/go/bin if the GOPATH environment variable is not set.```
go install github.com/Boeing/config-file-validator/cmd/[email protected]
```## Usage
```
Usage: validator [OPTIONS] [...]positional arguments:
search_path: The search path on the filesystem for configuration files. Defaults to the current working directory if no search_path providedoptional flags:
-depth int
Depth of recursion for the provided search paths. Set depth to 0 to disable recursive path traversal
-exclude-dirs string
Subdirectories to exclude when searching for configuration files
-exclude-file-types string
A comma separated list of file types to ignore
-groupby string
Group output by filetype, directory, pass-fail. Supported for Standard and JSON reports
-output string
Destination to a file to output results
-quiet
If quiet flag is set. It doesn't print any output to stdout.
-reporter string
Format of the printed report. Options are standard and json (default "standard")
-version
Version prints the release version of validator
```### Environment Variables
The config-file-validator supports setting options via environment variables. If both command-line flags and environment variables are set, the command-line flags will take precedence. The supported environment variables are as follows:
| Environment Variable | Equivalent Flag |
|----------------------|-----------------|
| `CFV_DEPTH` | `-depth` |
| `CFV_EXCLUDE_DIRS` | `-exclude-dirs` |
| `CFV_EXCLUDE_FILE_TYPES` | `-exclude-file-types` |
| `CFV_OUTPUT` | `-output` |
| `CFV_REPORTER` | `-reporter` |
| `CFV_GROUPBY` | `-groupby` |
| `CFV_QUIET` | `-quiet` |### Examples
#### Standard Run
If the search path is omitted it will search the current directory
```
validator /path/to/search
```![Standard Run](./img/standard_run.png)
#### Multiple search paths
Multiple search paths are supported, and the results will be merged into a single report
```
validator /path/to/search /another/path/to/search
```![Multiple Search Paths Run](./img/multiple_paths.png)
#### Exclude directories
Exclude subdirectories in the search path```
validator --exclude-dirs=/path/to/search/tests /path/to/search
```![Exclude Dirs Run](./img/exclude_dirs.png)
#### Exclude file types
Exclude file types in the search path. Available file types are `csv`, `env`, `hcl`, `hocon`, `ini`, `json`, `plist`, `properties`, `toml`, `xml`, `yaml`, and `yml````
validator --exclude-file-types=json /path/to/search
```![Exclude File Types Run](./img/exclude_file_types.png)
#### Customize recursion depth
By default there is no recursion limit. If desired, the recursion depth can be set to an integer value. If depth is set to `0` recursion will be disabled and only the files in the search path will be validated.```
validator --depth=0 /path/to/search
```![Custom Recursion Run](./img/custom_recursion.png)
#### Customize report output
Customize the report output. Available options are `standard`, `junit`, and `json````
validator --reporter=json /path/to/search
```![Exclude File Types Run](./img/custom_reporter.png)
### Group report output
Group the report output by file type, directory, or pass-fail. Supports one or more groupings.```
validator -groupby filetype
```![Groupby File Type](./img/gb-filetype.png)
#### Multiple groups
```
validator -groupby directory,pass-fail
```![Groupby File Type and Pass/Fail](./img/gb-filetype-and-pass-fail.png)
### Output results to a file
Output report results to a file (default name is `result.{extension}`). Must provide reporter flag with a supported extension format. Available options are `junit` and `json`. If an existing directory is provided, create a file named default name in the given directory. If a file name is provided, create a file named the given name at the current working directory.```
validator --reporter=json --output=/path/to/dir
```### Suppress output
Passing the `--quiet` flag suppresses all output to stdout. If there are invalid config files the validator tool will exit with 1. Any errors in execution such as an invalid path will still be displayed.```
validator --quiet /path/to/search
```#### Container Run
```
docker run -it --rm -v /path/to/config/files:/test config-file-validator:1.6.0 /test
```![Docker Standard Run](./img/docker_run.png)
## Build
The project can be downloaded and built from source using an environment with Go 1.21+ installed. After a successful build, the binary can be moved to a location on your operating system PATH.### macOS
#### Build
```
CGO_ENABLED=0 \
GOOS=darwin \
GOARCH=amd64 \ # for Apple Silicon use arm64
go build \
-ldflags='-w -s -extldflags "-static"' \
-tags netgo \
-o validator \
cmd/validator/validator.go
```#### Install
```
cp ./validator /usr/local/bin/
chmod +x /usr/local/bin/validator
```### Linux
#### Build
```
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
go build \
-ldflags='-w -s -extldflags "-static"' \
-tags netgo \
-o validator \
cmd/validator/validator.go
```#### Install
```
cp ./validator /usr/local/bin/
chmod +x /usr/local/bin/validator
```### Windows
#### Build
```
CGO_ENABLED=0 \
GOOS=windows \
GOARCH=amd64 \
go build \
-ldflags='-w -s -extldflags "-static"' \
-tags netgo \
-o validator.exe \
cmd/validator/validator.go
```#### Install
```powershell
mkdir -p 'C:\Program Files\validator'
cp .\validator.exe 'C:\Program Files\validator'
[Environment]::SetEnvironmentVariable("C:\Program Files\validator", $env:Path, [System.EnvironmentVariableTarget]::Machine)
```### Docker
You can also use the provided Dockerfile to build the config file validator tool as a container```
docker build . -t config-file-validator:v1.6.0
```## Contributing
We welcome contributions! Please refer to our [contributing guide](/CONTRIBUTING.md)## License
The Config File Validator is released under the [Apache 2.0](/LICENSE) License