From 874028e6f2054b33c62146b5c92324d915574bde Mon Sep 17 00:00:00 2001
From: Clayton Kehoe <118750525+kehoecj@users.noreply.github.com>
Date: Mon, 6 Feb 2023 08:43:48 -0600
Subject: [PATCH] Updates to the README (#3)
---
.github/workflows/go.yml | 6 +-
README.md | 113 ++++++++++++++++++++++++-------------
cmd/validator/validator.go | 17 ++++++
img/logo.png | Bin 0 -> 10061 bytes
4 files changed, 93 insertions(+), 43 deletions(-)
create mode 100755 img/logo.png
diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 4d2254c..38f3686 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -1,7 +1,7 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
-name: Go
+name: Go Pipeline
on: push
@@ -45,8 +45,6 @@ jobs:
uses: actions/setup-go@v3
with:
go-version: 1.19
-
+
- name: Test
run: go test -v ./...
-
-
diff --git a/README.md b/README.md
index 26c2424..06e1be5 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,28 @@
-# Config File Validator
+
+
+
Config File Validator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
## About
-How many deployments have you done that needed to be rolled back due to a missing character in a configuration file in your repo? If you're like most teams that number is greater than zero. The config file validator was created to solve this problem by searching through your project and validating the syntax of all configuation files.
+How many deployments have you done that needed to be rolled back due to a missing character in a configuration file in your repo? If you're like most teams that number is greater than zero. The config file validator was created to solve this problem by searching through your project and validating the syntax of all configuration files.
### Where can you use this tool?
* In a CI/CD pipeline as a quality gate
@@ -14,8 +35,55 @@ How many deployments have you done that needed to be rolled back due to a missin
* YAML
* TOML
-## Getting Started
-Binaries and a container on Dockerhub will eventually be available but for now the project must be built on an environment that has golang 1.17+ installed.
+## Installing
+There are several ways to install the config file validator tool
+
+### Using `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/validator
+```
+
+
+### Executables
+Executables are available for Linux and Windows (macOS coming soon!). Navigate to the [releases](https://github.com/Boeing/config-file-validator/releases) page to download the latest version. Once the executable has been downloaded it needs to be installed by moving the downloaded file to a location on your OS PATH.
+
+## Using
+```
+Usage of /validator:
+ -exclude-dirs string
+ Subdirectories to exclude when searching for configuration files
+ -search-path string
+ The search path for configuration files
+```
+
+### Examples
+#### Standard Run
+```
+validator -search-path /path/to/search
+```
+
+![Standard Run](./img/standard_run.png)
+
+#### Exclude dirs
+Exclude subdirectories in the search path
+
+```
+validator -search-path /path/to/search -exclude-dirs=/path/to/search/tests
+```
+
+![Exclude Dirs Run](./img/exclude_dirs.png)
+
+#### Container Run
+```
+docker run -it --rm -v /path/to/config/file/location:/test -search-path=/test
+```
+
+![Standard Run](./img/docker_run.png)
+
+## Building from source
+The project can be downloaded and built from source using an environment with golang 1.17+ installed. After successful build, the statically-linked binary can be moved to a location on your operating system PATH.
### Linux
#### Build
@@ -57,47 +125,14 @@ cp .\validator.exe 'C:\Program Files\validator'
```
### Docker
-The config file validator can be built as a docker container
-```
-docker build . -t config-file-validator
-```
-
-## Using
-```
-Usage of /validator:
- -exclude-dirs string
- Subdirectories to exclude when searching for configuration files
- -search-path string
- The search path for configuration files
-```
+You can also use the provided Dockerfile to build the config file validator tool in a container
-### Examples
-#### Standard Run
-```
-validator -search-path /path/to/search
```
-
-![Standard Run](./img/standard_run.png)
-
-#### Exclude dirs
-Exclude subdirectories in the search path
-
-```
-validator -search-path /path/to/search -exclude-dirs=/path/to/search/tests
-```
-
-![Exclude Dirs Run](./img/exclude_dirs.png)
-
-#### Container Run
-```
-docker run -it --rm -v /path/to/config/file/location:/test -search-path=/test
+docker build . -t config-file-validator
```
-![Standard Run](./img/docker_run.png)
-
## 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
diff --git a/cmd/validator/validator.go b/cmd/validator/validator.go
index afb622d..920dab7 100644
--- a/cmd/validator/validator.go
+++ b/cmd/validator/validator.go
@@ -1,3 +1,20 @@
+/*
+Validator recusively scans a directory to search for configuration files and
+validates them using the go package for each configuration type.
+
+Currently json, yaml, toml, and xml configuration file types are supported.
+
+Usage:
+
+ validator [flags]
+
+The flags are:
+ -search-path string
+ The search path for configuration files
+ -exclude-dirs string
+ Subdirectories to exclude when searching for configuration files
+*/
+
package main
import (
diff --git a/img/logo.png b/img/logo.png
new file mode 100755
index 0000000000000000000000000000000000000000..8e7d070d65fb7a8088bf9dae99cab561d0bfedce
GIT binary patch
literal 10061
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
BfkXfR
literal 0
HcmV?d00001