{"id":21534483,"url":"https://github.com/b1nary-gr0up/nwa","last_synced_at":"2025-09-12T02:43:19.844Z","repository":{"id":190631712,"uuid":"663784509","full_name":"B1NARY-GR0UP/nwa","owner":"B1NARY-GR0UP","description":"A Simple Yet Powerful Tool for License Header Management: Effortlessly Add, Check, Update, and Remove License Headers","archived":false,"fork":false,"pushed_at":"2025-08-21T02:55:49.000Z","size":350,"stargazers_count":15,"open_issues_count":2,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-21T04:42:36.551Z","etag":null,"topics":["ci","command-line-tool","go","license","license-checker","license-header","pre-commit","utility"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/B1NARY-GR0UP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-08T05:07:29.000Z","updated_at":"2025-08-20T08:20:58.000Z","dependencies_parsed_at":"2023-08-25T17:29:04.502Z","dependency_job_id":"799b538c-1a3c-4c82-a5a8-eb7a3a426ad7","html_url":"https://github.com/B1NARY-GR0UP/nwa","commit_stats":null,"previous_names":["b1nary-gr0up/nwa"],"tags_count":20,"template":false,"template_full_name":"B1NARY-GR0UP/.github","purl":"pkg:github/B1NARY-GR0UP/nwa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fnwa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fnwa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fnwa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fnwa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/B1NARY-GR0UP","download_url":"https://codeload.github.com/B1NARY-GR0UP/nwa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B1NARY-GR0UP%2Fnwa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274744062,"owners_count":25341136,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci","command-line-tool","go","license","license-checker","license-header","pre-commit","utility"],"created_at":"2024-11-24T03:10:55.784Z","updated_at":"2025-09-12T02:43:19.826Z","avatar_url":"https://github.com/B1NARY-GR0UP.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![NWA](images/NWA.png)\n\nA Simple Yet Powerful Tool for License Header Management: Effortlessly Add, Check, Update, and Remove License Headers\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/B1NARY-GR0UP/nwa)](https://goreportcard.com/report/github.com/B1NARY-GR0UP/nwa)\n\n## Install\n\n### Homebrew\n\n```shell\nbrew tap B1NARY-GR0UP/nwa\nbrew install nwa\n```\n\n### Go\n\n```shell\ngo install github.com/B1NARY-GR0UP/nwa@latest\n```\n\n### GitHub Actions\n\nCheck the [Used in GitHub Actions](#used-in-github-actions) section.\n\n### pre-commit\n\nCheck the [Used in pre-commit](#used-in-pre-commit) section.\n\n### Docker\n\nCheck the [Docker](#docker---run-nwa-through-docker-for-those-do-not-have-a-go-environment) section.\n\n## Usage\n\n- **[Flags](#flags)**: Use flags to customize the behavior of NWA\n- **[DoubleStar(**) Patterns](#doublestar-patterns)**: Use patterns supported by [doublestar](https://github.com/bmatcuk/doublestar#patterns)\n- **[Add](#add---add-license-headers-to-files)**: Add license headers to files\n- **[Check](#check---check-license-headers-of-files)**: Check license headers of files\n- **[Remove](#remove---remove-licenses-headers-of-files)**: Remove licenses headers of files\n- **[Update](#update---update-license-headers-of-files)**: Update license headers of files\n- **[Config](#config-mode)**: Edit files according to the configuration file\n- **[Built-in License Header Templates and Custom Templates](#built-in-license-header-templates-and-custom-templates)**: Use custom templates \n- **[Used in GitHub Actions](#used-in-github-actions)**: Use NWA in GitHub Actions\n- **[Used in pre-commit](#used-in-pre-commit)**: Use NWA in pre-commit\n- **[Docker](#docker---run-nwa-through-docker-for-those-do-not-have-a-go-environment)**: Run NWA through docker, for those who do not have a Go environment\n\n```shell\nUsage:         \n  nwa [command]\n\nCommon Mode Commands:\n  add         add license headers to files\n  check       check license headers of files\n  remove      remove license headers of files\n  update      update license headers of files\n\nConfig Mode Commands:\n  config      edit the files according to the configuration file\n\nAdditional Commands:\n  help        Help about any command\n\nFlags:\n  -h, --help      help for nwa\n  -v, --version   version for nwa\n\nUse \"nwa [command] --help\" for more information about a command.\n```\n\n### Flags\n\n- **Basic**\n\n| Short | Long        | Default              | Description                                                                                                    |\n|-------|-------------|----------------------|----------------------------------------------------------------------------------------------------------------|\n| -h    | --help      | null                 | help for command                                                                                               |\n| -c    | --copyright | `\u003cCOPYRIGHT HOLDER\u003e` | copyright holder                                                                                               |\n| -y    | --year      | Current Year         | copyright year                                                                                                 |\n| -l    | --license   | `apache`             | license type                                                                                                   |\n| -i    | --spdxids   | `\"\"`                 | SPDX IDs                                                                                                       |\n| -s    | --skip      | `[]`                 | skip file paths, can use any pattern [supported by doublestar](https://github.com/bmatcuk/doublestar#patterns) |\n\n- **Advanced**\n\n| Short | Long       | Default               | Description                                                                                                                                            |\n|-------|------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|\n| -V    | --verbose  | `false` (unspecified) | verbose mode (Allow log output below the **WARN** level)                                                                                               |\n| -m    | --mute     | `false` (unspecified) | mute mode (Disable all log output)                                                                                                                     |\n| -t    | --tmpl     | `\"\"`                  | template file path                                                                                                                                     |\n| -T    | --tmpltype | `\"\"`                  | template type (`live`, `static`, `raw`)                                                                                                                |\n| -f    | --fuzzy    | `false` (unspecified) | commands `check` and `remove` will ignore differences in the **year** within the license header                                                        |\n| -k    | --keyword  | `[]`                  | keyword used to confirm the existence of license headers (only used in commands `add` and `update`)                                                    |\n| -S    | --style    | `[]`                  | customize the comment style (`line`, `block`, `hash`, `doc`, `starred-block`) for different extensions in the format `extension:style`, e.g.`go:block` |\n\n### DoubleStar(**) Patterns\n\nBoth **`--skip` (`-s`)** and the **working path** support patterns recognized by [doublestar](https://github.com/bmatcuk/doublestar#patterns). \n\nHowever, some shells may interpret these patterns (e.g. `**`), which could cause NWA to behave unexpectedly. \n\nThe best way to resolve this issue is to **wrap your paths in double quotes (`\"\"`)**.\n\nAdditionally, since Windows uses a different path separator (`\\`) compared to Linux and macOS, NWA internally converts `\\` to `/` when traversing files to match doublestar patterns. Therefore, make sure to **use `/` as the path separator** in both `--skip` (`-s`) and the working path.\n\n\u003e **NOTE: Since NWA always operates from the current directory (`.`), parent directories are not visible to NWA. Make sure not to use paths like `../path/to/file`.**\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eAdd - Add license headers to files\u003c/h3\u003e\u003c/summary\u003e\n\n- **Usage**\n\n```shell\nnwa add [flags] path...\n```\n- **Example**\n\n```shell\nnwa add -l apache -c \"RHINE LAB.LLC.\" -y 2077 \"src/**/*.go\" \"pkg/pool/**\"\n```\n\nThe command in the example above **adds** a license header to all Go files under the folder with the relative path `src` and to all files under the folder with the relative path `pkg/pool`:\n\n- License type: `Apache 2.0`\n- Copyright holder: `RHINE LAB.LLC.`\n- Copyright year: `2077`\n\nNWA will generate a corresponding license header based on the file type in the specified paths. For example, `.py` files will use `#` for comments, and `.go` files will use `//`.\n\nIf your file type is not supported by NWA, you can:\n\n- Using custom templates. Refer to [Built-in License Header Templates and Custom Templates](#built-in-license-header-templates-and-custom-templates)\n- Submit an issue or PR to NWA\n\nNWA will also output logs to inform you if any files already have a license header or if any files are not allowed to be edited (such as code files generated by tools).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eCheck - Check license headers of files\u003c/h3\u003e\u003c/summary\u003e\n\n- **Usage**\n\n```shell\nnwa check [flags] path...\n```\n\n\u003e **NOTE: The `check` command uses exact matching to verify whether a file's license header meets the requirements. If you have customized license header needs, you can use the custom template feature. See [Built-in License Header Templates and Custom Templates](#built-in-license-header-templates-and-custom-templates) for more details.**\n\n- **Example**\n\n```shell\nnwa check --copyright \"BINARY Members\" --license apache --fuzzy \"**/*.py\"\n```\n\nThe command in the example above **checks** whether the license headers of all Python files comply with the following requirements:\n\n- License type: `Apache 2.0`\n- Copyright holder: `BINARY Members`\n\nAfter the check is complete, NWA will output the results as logs. A sample output is as follows:\n\n```txt\n2024/11/24 19:24:29 WARN file does not have a matched header path=dirB\\dirC\\fileC.go\n2024/11/24 19:24:29 WARN file does not have a matched header path=main.go\n[NWA SUMMARY] scanned=4 matched=2 mismatched=2 skipped=1 failed=0\n```\n\nVerbose mode:\n\n```txt\n2024/11/24 19:24:35 INFO skip file path=README.md\n2024/11/24 19:24:35 INFO file has a matched header path=dirA\\fileA.go\n2024/11/24 19:24:35 WARN file does not have a matched header path=dirB\\dirC\\fileC.go\n2024/11/24 19:24:35 WARN file does not have a matched header path=main.go\n2024/11/24 19:24:35 INFO file has a matched header path=dirB\\fileB.go\n[NWA SUMMARY] scanned=4 matched=2 mismatched=2 skipped=1 failed=0\n```\n\nMute mode:\n\n```txt\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eRemove - Remove licenses headers of files\u003c/h3\u003e\u003c/summary\u003e\n\n- **Usage**\n\n```shell\nnwa remove [flags] path...\n```\n\n- **Example**\n\n```shell\nnwa remove -l mit -c \"RHINE LAB.LLC.\" -s \"src/vender/**\" \"src/**\"\n```\nThe command in the example above skips all files under the `src/vendor` folder and **removes** the license header for files under the folder with the relative path `src`:\n\n- License type: `MIT`\n- Copyright holder: `RHINE LAB.LLC.`\n- Copyright year: current year\n\nIf a file in the specified path does not have a license header or is not allowed to be edited, NWA will inform you through log output.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eUpdate - Update license headers of files\u003c/h3\u003e\u003c/summary\u003e\n\n- **Usage**\n\n```shell\nnwa update [flags] path...\n```\n\n\u003e **NOTE: Update identifies the content before the first blank line as a license header; If your file does not meet the requirements, please use `remove` + `add` command.**\n\u003e\n\u003e If your files use the following types of comment styles, the `update` command may not work properly (refer to [#18](https://github.com/B1NARY-GR0UP/nwa/issues/18)):\n\u003e \n\u003e - `\u003c!-- --\u003e`: .html, .md, .vue, etc.\n\u003e - `{# #}`: .j2, .twig, etc.\n\u003e - `(** *)`: .ml, .mli, etc.\n\u003e  \n\u003e Please use the `remove` + `add` commands instead of the `update` command.\n\n- **Example**\n\n```shell\nnwa update -l apache -c \"BINARY Members\" -s \"dirA/**\" -s \"dirB/**/*.py\" \"**\"\n```\n\nThe command in the example above **updates** the license header of all files in the current directory, **except** for all files under `dirA` and Python files under `dirB`, to:\n\n- License type: `Apache 2.0`\n- Copyright holder: `BINARY Members`\n- Copyright year: current year\n\nregardless of the previous license header.\n\n\u003c/details\u003e\n\n### Config Mode\n\n- **Flags**\n\n| Short | Long        | Default                            | Description        |\n|-------|-------------|------------------------------------|--------------------|\n| -c    | --command   | add                                | command to execute |\n| -h    | --help      | null                               | help for config    |\n\n\u003e **NOTE: If some configuration is not configured, the default configuration will be used.**\n\n- **Usage**\n\n```shell\nnwa config [flags] [path]\n```\n\n\u003e **NOTE: Path is the configuration file path. If not specified, `.nwa-config.yaml` will be used as the default configuration file path.**\n\n- **Example**\n\n```shell\nnwa config -c check\n```\n\nThe command in the example above reads the `.nwa-config.yaml` configuration file in the current directory \nand checks whether the license headers of the specified files meet the requirements based on its content. \n\nThe structure of the configuration file will be provided below.\n\n- **Sample Configuration file**\n\n```yaml\nnwa:\n  # basic\n  cmd: \"add\"                        # Default: \"add\"; Can be overwritten by --command (-c) flag; Optional: \"add\", \"check\", \"remove\", \"update\"\n  holder: \"RHINE LAB.LLC.\"          # Default: \"\u003cCOPYRIGHT HOLDER\u003e\"\n  year: \"2077\"                      # Default: Current Year\n  license: \"apache\"                 # Default: \"apache\"\n  spdxids: \"\"                       # Default: \"\"\n  skip:                             # Default: []\n    - \"**.py\"\n  path:                             # Default: []\n    - \"src/**/*.go\"\n    - \"example/**/*.go\"\n  # advanced\n  mute: false                       # Default: false (unspecified)\n  verbose: false                    # Default: false (unspecified)\n  fuzzy: false                      # Default: false (unspecified); Used for \"check\" and \"remove\" commands\n  tmpltype: \"\"                      # Default: \"\"; Optional: \"live\", \"static\", \"raw\"\n  tmpl: \"\"                          # Default: \"\"                                                       \n  keyword: []                       # Default: []; Used for \"add\" and \"update\" commands\n  style: []                         # Default: []\n```\n\n### Built-in License Header Templates and Custom Templates\n\n- **Built-in License Header Templates**\n\n| License           | Option (ignore case)                                          |\n|-------------------|---------------------------------------------------------------|\n| Apache-2.0        | `apache`, `apache-2.0`, `apache-2`, `apache 2.0`, `apache2.0` |\n| MIT               | `mit`                                                         |\n| GPL-3.0 or Later  | `gpl-3.0-or-later`                                            |\n| GPL-3.0 Only      | `gpl-3.0-only`                                                |\n| AGPL-3.0 or Later | `agpl-3.0-or-later`                                           |\n| AGPL-3.0 Only     | `agpl-3.0-only`                                               |\n\n- **Custom Templates**\n\n\u003e **NOTE: When using a custom template, you must specify both the template type and the template itself (use a file path in common mode, and template content in config mode).**\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003eLive Template\u003c/h4\u003e\u003c/summary\u003e\n\n- **Example**\n\n```shell\nnwa config -c check\n```\n\n`.nwa-config.yaml` is as follows:\n\n```yaml\nnwa:\n  holder: BINARY Members\n  tmpltype: live\n  tmpl: |\n    Copyright {{ .Year }} {{ .Holder }}\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n  skip:\n    - \"testdata/**\"\n  path:\n    - \"**/*.go\"\n```\n\nThe above command uses the `holder` and `year` specified in the `.nwa-config.yaml` configuration file (defaulting to the current year if not set) to render the complete template, and runs the `check` command with the `-c` option to verify whether the license headers in the files meet the requirements.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003eStatic Template\u003c/h4\u003e\u003c/summary\u003e\n\n- **Example**\n\n```shell\nnwa add -T static -t mytmpl.txt \"**/*.py\"\n```\n\n`mytmpl.txt` is as follows:\n\n```text\nCopyright 2077 RHINE LAB.LLC.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\nThis command example uses the content in `mytmpl.txt` as the license header, and NWA will generate license headers with different comment types based on the file type.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch4\u003eRaw Template\u003c/h4\u003e\u003c/summary\u003e\n\n- **Example**\n\n```shell\nnwa add -T raw -t myrawtmpl.txt \"**/*.java\"\n```\n\n`myrawtmpl.txt` is as follows:\n\n```txt\n// Copyright 2077 RHINE LAB.LLC.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n```\n\nThis command example uses the content in `myrawtmpl.txt` as the license header. NWA will **not** generate license headers with different comment types based on the file type **but** will instead add the content of `myrawtmpl.txt` directly to each file (include blank line).\n\n\u003c/details\u003e\n\n### Used in GitHub Actions\n\n#### Automatic Configuration\n\nFor the configuration file example, please refer to the [Config](#config-mode) section.\n\n```yaml\n- name: License Header Check\n  uses: B1NARY-GR0UP/nwa@main\n  with:\n    version: latest        # (optional) version of nwa to use; default: latest\n    cmd: check             # (optional) command to execute; options: `check`, `add`, `update`, `remove`; default: check\n    path: .nwa-config.yaml # (optional) configuration file path; default: .nwa-config.yaml\n```\n\n#### Manual Configuration\n\nWhen there are **mismatched** or **failed** entries in the result of nwa execution, `nwa` will return a non-zero exit code, causing the CI to fail.\n\nYou may refer to the other commands or flags introduced in the [Usage](#usage) section for optimization. \n\n- **Example**\n\n```yaml\nname: License Header Check\n\non:\n  push:\n    branches: [ \"main\" ]\n  pull_request:\n    branches: [ \"main\" ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Set up Go\n        uses: actions/setup-go@v5\n        with:\n          go-version: 1.23\n\n      - name: Install NWA\n        run: go install github.com/B1NARY-GR0UP/nwa@latest\n\n      - name: Run License Header Check\n        run: nwa check -c \"BINARY Members\" -f -l apache \"**/*.go\"\n```\n\n### Used in pre-commit\n\nThanks to the support of the [pre-commit](https://pre-commit.com/) tool, NWA can be used as a pre-commit hook.\n\nCurrently, NWA offers two hooks, `nwa-check` and `nwa`, as specified in [.pre-commit-hooks.yaml](./.pre-commit-hooks.yaml). \nYou can use them by configuring the [.pre-commit-config.yaml](https://pre-commit.com/#adding-pre-commit-plugins-to-your-project) file in your Git repository.\n\nBelow are examples of `.pre-commit-config.yaml` file using the `nwa-check` and `nwa` hooks, which you can modify according to your needs:\n\n**NOTE: A Golang runtime environment is required.**\n\n- **License Header Check Example**\n\n```yaml\nrepos:\n  -   repo: https://github.com/B1NARY-GR0UP/nwa\n      rev: [version tag]\n      hooks:\n        -   id: nwa-check\n            args: [\"-c\", \"BINARY Members\", \"-f\", \"-l\", \"apache\"]\n```\n\n- **License Header Add Example**\n\n**NOTE: `pre-commit` considers a hook to have failed if it modifies any files. Therefore, after using `add`, `update`, or `remove`, you may need to run `git add` again and commit the updated files.**\n\n```yaml\nrepos:\n  -   repo: https://github.com/B1NARY-GR0UP/nwa\n      rev: [version tag]\n      hooks:\n        -   id: nwa\n            args: [\"add\", \"-c\", \"BINARY Members\", \"-l\", \"apache\"]\n```\n\n### Docker - Run NWA through docker, for those do not have a Go environment\n\n- **Install**\n\nInstall the nwa docker image directly:\n\n```shell\ndocker pull ghcr.io/b1nary-gr0up/nwa:main\n```\n\n**OR**\n\nBuild it from source:\n\n```shell\ndocker build -t ghcr.io/b1nary-gr0up/nwa:main .\n```\n\n- **Verify if it can work correctly**\n\n```shell\ndocker run -it ghcr.io/b1nary-gr0up/nwa:main --version\n```\n\n- **Mount the directory you want NWA to work with to `/src` and use the commands mentions in usage**\n\n```shell\ndocker run -it -v ${PWD}:/src ghcr.io/b1nary-gr0up/nwa:main add -c \"RHINE LAB.LLC.\" -y 2077 \"**\"\n```\n\n## Blogs\n\n- [Add License Headers to Your Code Files](https://dev.to/justlorain/add-license-headers-to-your-code-files-nwa-a-more-powerful-license-statement-management-tool-86o) \n\n## Credits\n\nSincere appreciation to the following repositories that made the development of NWA possible.\n\n- [addlicense](https://github.com/google/addlicense)\n- [cobra](https://github.com/spf13/cobra)\n- [doublestar](https://github.com/bmatcuk/doublestar)\n- [viper](https://github.com/spf13/viper)\n\n## License\n\nNWA is distributed under the [Apache License 2.0](./LICENSE). The licenses of third party dependencies of NWA are explained [here](./licenses).\n\n## ECOLOGY\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/justlorain/justlorain/blob/main/images/BMS.png\" alt=\"BMS\"/\u003e\n\u003cbr/\u003e\u003cbr/\u003e\nNWA is a Subproject of the \u003ca href=\"https://github.com/B1NARY-GR0UP\"\u003eBasic Middleware Service\u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb1nary-gr0up%2Fnwa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fb1nary-gr0up%2Fnwa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb1nary-gr0up%2Fnwa/lists"}