diff --git a/.dockerignore b/.dockerignore index 66bcbd1..ccc2930 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,12 +1,2 @@ /coverage - -# Dependency directories -node_modules/ -jspm_packages/ - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* +/node_modules diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 98c3dbc..0000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -/dist/** -/coverage/** -/node_modules/** diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 97c0c7a..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "env": { - "node": true, - "es6": true, - "jest": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:jest/recommended", - "plugin:prettier/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "jest", - "prettier" - ] -} diff --git a/.gitattributes b/.gitattributes index 65de486..93763d5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -/dist/** linguist-generated=true -diff -/lib/** linguist-generated=true -diff +/dist/** linguist-generated=true +/lib/** linguist-generated=true diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index ecb83a9..04c13b5 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,2 @@ -github: [crazy-max, caarlos0] -open_collective: goreleaser -custom: ["https://goreleaser.com/pro"] +github: crazy-max +custom: https://www.paypal.me/crazyws diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2e82715..42a0e53 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,28 +3,18 @@ updates: - package-ecosystem: "github-actions" directory: "/" schedule: - interval: monthly + interval: "daily" + time: "06:00" + timezone: "Europe/Paris" labels: - "dependencies" - commit-message: - prefix: "ci" - include: "scope" - groups: - actions: - patterns: - - "*" - package-ecosystem: "npm" directory: "/" schedule: - interval: monthly + interval: "daily" + time: "06:00" + timezone: "Europe/Paris" allow: - dependency-type: "production" labels: - "dependencies" - commit-message: - prefix: "chore" - include: "scope" - groups: - npm: - patterns: - - "*" diff --git a/.github/goreleaser-action.png b/.github/goreleaser-action.png index 574121e..2eced09 100644 Binary files a/.github/goreleaser-action.png and b/.github/goreleaser-action.png differ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8316602..618d1ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,17 +1,8 @@ name: ci -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions -permissions: - contents: read - on: schedule: - - cron: '0 10 * * *' - workflow_dispatch: + - cron: '0 10 * * *' # everyday at 10am push: branches: - 'master' @@ -19,6 +10,9 @@ on: tags: - 'v*' pull_request: + branches: + - 'master' + - 'releases/v*' jobs: ci: @@ -28,38 +22,35 @@ jobs: matrix: os: - ubuntu-latest - - macos-latest + - macOS-latest - windows-latest version: - latest - - '~> 2.13' - distribution: - - goreleaser - - goreleaser-pro + - v0.145.0 steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - + name: Checkout + uses: actions/checkout@v2 with: fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 + - + name: Set up Go + uses: actions/setup-go@v2 with: - go-version: stable - - name: Check + go-version: 1.15 + - + name: Check uses: ./ with: version: ${{ matrix.version }} - args: check --verbose + args: check --debug workdir: ./test - - name: GoReleaser - if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }} + - + name: GoReleaser uses: ./ - env: - GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} with: - distribution: ${{ matrix.distribution }} version: ${{ matrix.version }} - args: release --skip=publish --clean --snapshot + args: release --skip-publish --rm-dist workdir: ./test install-only: @@ -69,36 +60,28 @@ jobs: matrix: version: - latest - - '~> 2.13' - distribution: - - goreleaser - - goreleaser-pro - cosign: - - true - - false + - v0.145.0 steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - + name: Checkout + uses: actions/checkout@v2 with: fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 + - + name: Set up Go + uses: actions/setup-go@v2 with: - go-version: 1.18 - - name: Install cosign - if: matrix.cosign - uses: sigstore/cosign-installer@cad07c2e89fa2edd6e2d7bab4c1aa38e53f76003 # v4.1.1 - - name: GoReleaser - if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }} + go-version: 1.15 + - + name: GoReleaser uses: ./ with: - distribution: ${{ matrix.distribution }} version: ${{ matrix.version }} install-only: true - - name: Check - if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }} + - + name: Check run: | - goreleaser check --verbose + goreleaser check --debug signing: runs-on: ${{ matrix.os }} @@ -108,36 +91,41 @@ jobs: matrix: os: - ubuntu-latest - - macos-latest + - macOS-latest - windows-latest steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - + name: Checkout + uses: actions/checkout@v2 with: fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 + - + name: Set up Go + uses: actions/setup-go@v2 with: - go-version: 1.18 - - name: Import GPG key + go-version: 1.15 + - + name: Import GPG key id: import_gpg - uses: crazy-max/ghaction-import-gpg@2dc316deee8e90f13e1a351ab510b4d5bc0c82cd # v7.0.0 + uses: crazy-max/ghaction-import-gpg@v3 with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY_TEST }} + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY_TEST }} passphrase: ${{ secrets.PASSPHRASE_TEST }} - - name: Check + - + name: Check uses: ./ with: version: latest - args: -f .goreleaser-signing.yml check --verbose + args: -f .goreleaser-signing.yml check --debug workdir: ./test env: GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} - - name: GoReleaser + - + name: GoReleaser uses: ./ with: version: latest - args: -f .goreleaser-signing.yml release --skip=publish --clean --snapshot + args: -f .goreleaser-signing.yml release --skip-publish --rm-dist workdir: ./test env: GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} @@ -145,81 +133,31 @@ jobs: upload-artifact: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - + name: Checkout + uses: actions/checkout@v2 with: fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 + - + name: Set up Go + uses: actions/setup-go@v2 with: - go-version: 1.18 - - name: Check + go-version: 1.15 + - + name: Check uses: ./ with: - args: check --verbose + args: check --debug workdir: ./test - - name: GoReleaser + - + name: GoReleaser uses: ./ with: - args: release --skip=publish --clean --snapshot + args: release --skip-publish --rm-dist workdir: ./test - - name: Upload assets - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + - + name: Upload assets + uses: actions/upload-artifact@v2 with: name: myapp path: ./test/dist/* - - dist: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 - with: - go-version: 1.18 - - name: GoReleaser - uses: ./ - with: - args: release --config .goreleaser-dist.yml --skip=publish --clean --snapshot - workdir: ./test - - name: Check dist - run: | - tree -nh ./test/_output - - nightly: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - macos-latest - - windows-latest - distribution: - - goreleaser-pro - - goreleaser - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 - with: - go-version: 1.18 - - name: GoReleaser - uses: ./ - with: - install-only: true - distribution: ${{ matrix.distribution }} - version: nightly - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Check - run: | - goreleaser check -f ./test/.goreleaser.yml - goreleaser --version - goreleaser --version | grep nightly diff --git a/.github/workflows/release-major-tag.yml b/.github/workflows/release-major-tag.yml deleted file mode 100644 index 457f18b..0000000 --- a/.github/workflows/release-major-tag.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: release major tag - -run-name: Move ${{ github.event.inputs.major_version }} to ${{ github.event.inputs.target }} - -on: - workflow_dispatch: - inputs: - target: - description: The tag, branch, or SHA the major version should point to (e.g. v7.1.0) - required: true - major_version: - type: choice - description: The major version tag to move - options: - - v7 - - v6 - - v5 - - v4 - - v3 - - v2 - - v1 - -# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions -permissions: - contents: write - -jobs: - tag: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - fetch-depth: 0 - - name: Git config - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - name: Move ${{ github.event.inputs.major_version }} to ${{ github.event.inputs.target }} - run: git tag -f ${{ github.event.inputs.major_version }} ${{ github.event.inputs.target }} - - name: Push - run: git push origin ${{ github.event.inputs.major_version }} --force diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 08f1c68..9c43e76 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,42 +1,36 @@ name: test -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions -permissions: - contents: read - on: push: branches: - 'master' - 'releases/v*' pull_request: + branches: + - 'master' + - 'releases/v*' jobs: test: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - + name: Checkout + uses: actions/checkout@v2 with: fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + - + name: Validate + uses: docker/bake-action@v1 with: - node-version-file: '.node-version' - cache: npm - - name: Install cosign - uses: sigstore/cosign-installer@cad07c2e89fa2edd6e2d7bab4c1aa38e53f76003 # v4.1.1 - - name: Install dependencies - run: npm ci - - name: Test - run: npm test - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Upload coverage - uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 + targets: validate + - + name: Test + uses: docker/bake-action@v1 with: - files: ./coverage/clover.xml + targets: test + - + name: Upload coverage + uses: codecov/codecov-action@v1 + with: + file: ./coverage/clover.xml diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml deleted file mode 100644 index 3ef7ea5..0000000 --- a/.github/workflows/validate.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: validate - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions -permissions: - contents: read - -on: - push: - branches: - - 'master' - - 'releases/v*' - pull_request: - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Setup Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: - node-version-file: '.node-version' - cache: npm - - name: Install dependencies - run: npm ci - - name: Format check - run: npm run format-check - - name: Lint - run: npm run lint - - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Setup Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.0.0 - with: - node-version-file: '.node-version' - cache: npm - - name: Install dependencies - run: npm ci --ignore-scripts - - name: Rebuild dist - run: npm run build - - name: Compare dist - id: diff - run: | - if [ "$(git diff --ignore-space-at-eol dist | wc -l)" -gt "0" ]; then - echo "Detected uncommitted changes after build. Run 'npm run build' and commit dist/." >&2 - git diff dist - exit 1 - fi - - name: Upload built dist on failure - if: ${{ failure() && steps.diff.conclusion == 'failure' }} - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: dist - path: dist - - vendor: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Setup Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.0.0 - with: - node-version-file: '.node-version' - cache: npm - - name: Refresh package-lock.json - run: npm install --package-lock-only - - name: Compare package-lock.json - run: | - if [ -n "$(git status --porcelain -- package-lock.json)" ]; then - echo "package-lock.json is out of sync with package.json. Run 'npm install' and commit." >&2 - git diff package-lock.json - exit 1 - fi diff --git a/.gitignore b/.gitignore index 7a623c4..69b201b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,19 @@ -# https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore +/.dev +node_modules/ +lib +# Jetbrains +/.idea +/*.iml + +# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore # Logs logs *.log npm-debug.log* +yarn-debug.log* +yarn-error.log* lerna-debug.log* -.pnpm-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json @@ -16,14 +24,34 @@ pids *.seed *.pid.lock +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + # Coverage directory used by tools like istanbul coverage *.lcov +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + # Dependency directories -node_modules/ jspm_packages/ +# TypeScript v1 declaration files +typings/ + # TypeScript cache *.tsbuildinfo @@ -33,11 +61,36 @@ jspm_packages/ # Optional eslint cache .eslintcache +# Optional REPL history +.node_repl_history -# dotenv environment variable files +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file .env -.env.development.local -.env.test.local -.env.production.local -.env.local -provenance.json +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ diff --git a/.kodiak.toml b/.kodiak.toml new file mode 100644 index 0000000..e538846 --- /dev/null +++ b/.kodiak.toml @@ -0,0 +1,15 @@ +version = 1 + +[merge] +automerge_label = "automerge" +blacklist_title_regex = "^WIP.*" +method = "squash" +delete_branch_on_merge = true +block_on_reviews_requested = false +notify_on_conflict = true +optimistic_updates = true + +[merge.message] +title = "pull_request_title" +include_pr_number = true +body_type = "markdown" diff --git a/.node-version b/.node-version deleted file mode 100644 index a45fd52..0000000 --- a/.node-version +++ /dev/null @@ -1 +0,0 @@ -24 diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 5b3b81b..0000000 --- a/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -# Dependency directories -node_modules/ -jspm_packages/ - -# yarn v2 -.yarn/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5ecaf5f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,132 @@ +# Changelog + +## 2.5.0 (2021/03/31) + +* Bump y18n from 4.0.0 to 4.0.1 (#272) +* Bump @actions/http-client from 1.0.9 to 1.0.11 (#270) +* Enhance workflow (#271) +* Bump node-notifier from 8.0.0 to 8.0.1 (#263) + +## 2.4.1 (2020/12/02) + +* Do not overwrite GORELEASER_CURRENT_TAG if already declared (#260) + +## 2.4.0 (2020/11/30) + +* Set GORELEASER_CURRENT_TAG (#259) +* Container based developer flow (#258) +* Upload artifact example (#257) +* Bump @actions/tool-cache from 1.6.0 to 1.6.1 (#256) + +## 2.3.0 (2020/11/06) + +* Add install-only option for using goreleaser in user scripts (#252) +* Update deps + +## 2.2.1 (2020/10/01) + +* Fix CVE-2020-15228 + +## 2.2.0 (2020/08/27) + +* Use GITHUB_REF to retrieve tag before checking the most recent tag (#238) +* Update deps + +## 2.1.1 (2020/06/24) + +* Fix workdir (#224) + +## 2.1.0 (2020/06/15) + +* Implement (optional) semver parsing of version (#213) +* Remove unshallow step (goreleaser/goreleaser#1608) + +## 2.0.2 (2020/05/10) + +* Use template in `sign.args` + +## 2.0.1 (2020/05/10) + +* Dummy release to mark v2 as latest on the marketplace + +## 2.0.0 (2020/05/10) + +* Remove `key` input and use [Import GPG](https://github.com/crazy-max/ghaction-import-gpg) GitHub Action instead. +* Make `args` input as required +* Go 1.14 +* Update deps + +## 1.5.1 (2020/05/10) + +* Mark `key` input as deprecated + +## 1.5.0 (2020/05/07) + +* Use native GitHub Action tools to download assets and use GitHub API +* Fix unexpected output when tag not found +* Use GitHub Action exec +* Cleanup local paths from extra fields +* Add notes about limitation with GITHUB_TOKEN (#58) +* Add Codecov + +## 1.4.0 (2020/04/09) + +* Use ncc and clean workflows +* Update deps + +## 1.3.1 (2020/02/14) + +* Don't fail on `getTag` (#98) + +## 1.3.0 (2020/02/11) + +* Improve git tag detection (#77) +* Only handle snapshot flag for release cmd (#94) +* Use `core.info` instead of `console.log` +* Update deps +* Update gitattributes + +## 1.2.1 (2020/01/20) + +* Update deps + +## 1.2.0 (2019/12/24) + +* Update deps + +## 1.1.0 (2019/12/02) + +* Add input to run GoReleaser from a subdirectory (#45) + +## 1.0.2 (2019/11/14) + +* Fix tsc gen + +## 1.0.1 (2019/11/14) + +* Update deps + +## 1.0.0 (2019/10/04) + +* Stable release +* Update deps + +## 0.4.0 (2019/09/28) + +* Move repository to GoReleaser org (#3) + +## 0.3.0 (2019/09/26) + +* Artifact signing (#2) + +## 0.2.1 (2019/09/22) + +* Typo + +## 0.2.0 (2019/09/20) + +* Snapshot forced if no tag found + +## 0.1.0 (2019/09/20) + +* Initial version diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index bb87824..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,89 +0,0 @@ -# Contributing - -Thanks for your interest in contributing! - -## Prerequisites - -- [Node.js](https://nodejs.org/) — version pinned in [`.node-version`](./.node-version). - Tools like [`nvm`](https://github.com/nvm-sh/nvm), [`fnm`](https://github.com/Schniz/fnm), - [`asdf`](https://asdf-vm.com/), or [`mise`](https://mise.jdx.dev/) read this file - automatically. -- [`cosign`](https://docs.sigstore.dev/cosign/installation/) — only required if you - want to run the signature-verification integration tests locally. - -## Setup - -```sh -npm ci -``` - -## Pre-commit checklist - -Before committing changes to `src/`, `__tests__/`, `package.json`, -`package-lock.json`, or `action.yml`: - -```sh -npm run pre-checkin -``` - -That runs `format` + `build` + `test` — the same checks CI runs. - -Then commit `dist/` along with your source changes; the action runtime loads -`dist/index.js` directly, so it must stay in sync. - -If CI's `validate / build` job fails because `dist/` differs from a fresh -build, just download the `dist` artifact from the failed run and commit it — -or rerun `npm run build` locally with the Node version in `.node-version`. - -## npm scripts - -| Script | Purpose | -| ------------------- | ------------------------------------------------ | -| `npm run build` | Bundle `src/` to `dist/index.js` via `ncc` | -| `npm run format` | Run Prettier (write) | -| `npm run format-check` | Run Prettier (check only, used in CI) | -| `npm run lint` | Run ESLint (check only, used in CI) | -| `npm run lint:fix` | Run ESLint with `--fix` | -| `npm test` | Run Jest with coverage | -| `npm run pre-checkin` | `format` + `lint:fix` + `build` + `test` | - -## Tests - -`npm test` runs the full Jest suite, including integration tests that: - -- Download real GoReleaser releases from GitHub -- Verify `checksums.txt` against the downloaded archive -- Verify the cosign sigstore bundle (skipped if `cosign` isn't on `PATH`, - but the CI image always has it installed) - -These need outbound network access. Offline / restrictive-proxy runs will -have those tests fail — that's expected. - -## Commit messages - -Use [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, -`fix:`, `test:`, `docs:`, `chore:`, `ci:`, …). Keep the subject ≤72 chars. - -## Pull requests - -- Target `master`. -- Make sure `npm run pre-checkin` passes. -- One logical change per PR is easier to review. -- The `signing` CI job and `goreleaser-pro` matrix entries are skipped on PRs - from forks because they need repository secrets — that's expected and not - something you need to fix. - -## Releasing (maintainers) - -1. Create a new GitHub Release with a semver tag (e.g. `v7.1.0`) — either - through the UI or `gh release create v7.1.0 --generate-notes`. -2. Once the release exists, run the [**release major tag**](./.github/workflows/release-major-tag.yml) - workflow from the Actions tab: - - `target`: the new tag (e.g. `v7.1.0`) - - `major_version`: the major version to repoint (e.g. `v7`) - - This force-pushes the major tag to the new release so consumers using - `goreleaser/goreleaser-action@v7` pick up the change. - - The same workflow doubles as a rollback tool — pass an older tag as - `target` to revert the major. diff --git a/LICENSE b/LICENSE index 8248238..f4627d2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019-2022 CrazyMax +Copyright (c) 2019-2021 CrazyMax Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index e4a3dce..af3bb09 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@
@@ -16,14 +17,12 @@ ___ * [Usage](#usage) * [Workflow](#workflow) - * [Verification](#verification) * [Run on new tag](#run-on-new-tag) * [Signing](#signing) * [Upload artifacts](#upload-artifacts) * [Install Only](#install-only) * [Customizing](#customizing) * [inputs](#inputs) - * [outputs](#outputs) * [environment variables](#environment-variables) * [Limitation](#limitation) * [Development](#development) @@ -31,12 +30,6 @@ ___ ## Usage -GoReleaser Action runs [goreleaser][], please follow its [docs][gdocs] for -more information about how to customize what GoReleaser does. - -[goreleaser]: https://goreleaser.com/ -[gdocs]: https://goreleaser.com/customization - ### Workflow ```yaml @@ -46,81 +39,32 @@ on: pull_request: push: -permissions: - contents: write - jobs: goreleaser: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v6 + uses: actions/setup-go@v2 + with: + go-version: 1.15 - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v7 + uses: goreleaser/goreleaser-action@v2 with: - # either 'goreleaser' (default) or 'goreleaser-pro' - distribution: goreleaser - # 'latest', 'nightly', or a semver - version: '~> v2' - args: release --clean + version: latest + args: release --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution - # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} ``` > **IMPORTANT**: note the `fetch-depth: 0` input in `Checkout` step. It is required for the changelog to work correctly. -### Verification - -The action verifies the integrity of the downloaded GoReleaser archive -against the published `checksums.txt` automatically — no configuration -required. - -If [`cosign`](https://docs.sigstore.dev/cosign/) is available on `PATH`, the -action will additionally verify the cosign sigstore signature of the -checksums file against the GoReleaser release workflow's OIDC identity. If -`cosign` isn't installed, this step is silently skipped. - -> **Note**: cosign signature verification requires GoReleaser **v2.13.0 or -> newer** (and the matching `nightly`). Earlier releases ship a `.sig` -> detached signature signed with cosign v2, which is not compatible with -> the cosign v3 sigstore-bundle format the action verifies. For older -> versions the cosign step is silently skipped — only the `checksums.txt` -> SHA-256 verification runs. - -> **Note**: when `version: nightly` is used, the action resolves the -> latest immutable `vX.Y.Z-\\d+)m|\\${U}(?.*)${R})`).exec(a.slice(l))||{groups:{}};if(e.code!==undefined){const t=Number.parseFloat(e.code);n=t===k?undefined:t}else if(e.uri!==undefined){s=e.uri.length===0?undefined:e.uri}}const A=F.codes.get(Number(n));if(c[e+1]==="\n"){if(s){r+=wrapAnsiHyperlink("")}if(n&&A){r+=wrapAnsiCode(A)}}else if(t==="\n"){if(n&&A){r+=wrapAnsiCode(n)}if(s){r+=wrapAnsiHyperlink(s)}}l+=t.length}return r};function wrapAnsi(e,t,A){return String(e).normalize().replaceAll("\r\n","\n").split("\n").map((e=>wrap_ansi_exec(e,t,A))).join("\n")}function ui(e){return cliui(e,{stringWidth:stringWidth,stripAnsi:strip_ansi_stripAnsi,wrap:wrapAnsi})}function sync(e,t){let A=(0,s.resolve)(".",e);let r,i=(0,n.statSync)(A);if(!i.isDirectory()){A=(0,s.dirname)(A)}while(true){r=t(A,(0,n.readdirSync)(A));if(r)return(0,s.resolve)(A,r);A=(0,s.dirname)(r=A);if(r===A)break}}var L=__nccwpck_require__(9023);const v=e(import.meta.url)("url");
+module.exports =
+/******/ (() => { // webpackBootstrap
+/******/ var __webpack_modules__ = ({
+
+/***/ 757:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.exec = void 0;
+const actionsExec = __importStar(__webpack_require__(514));
+exports.exec = (command, args = [], silent) => __awaiter(void 0, void 0, void 0, function* () {
+ let stdout = '';
+ let stderr = '';
+ const options = {
+ silent: silent,
+ ignoreReturnCode: true
+ };
+ options.listeners = {
+ stdout: (data) => {
+ stdout += data.toString();
+ },
+ stderr: (data) => {
+ stderr += data.toString();
+ }
+ };
+ const returnCode = yield actionsExec.exec(command, args, options);
+ return {
+ success: returnCode === 0,
+ stdout: stdout.trim(),
+ stderr: stderr.trim()
+ };
+});
+//# sourceMappingURL=exec.js.map
+
+/***/ }),
+
+/***/ 374:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.getShortCommit = exports.isTagDirty = exports.getTag = void 0;
+const exec = __importStar(__webpack_require__(757));
+const git = (args = []) => __awaiter(void 0, void 0, void 0, function* () {
+ return yield exec.exec(`git`, args, true).then(res => {
+ if (res.stderr != '' && !res.success) {
+ throw new Error(res.stderr);
+ }
+ return res.stdout.trim();
+ });
+});
+function getTag() {
+ return __awaiter(this, void 0, void 0, function* () {
+ try {
+ if ((process.env.GITHUB_REF || '').startsWith('refs/tags')) {
+ const tag = (process.env.GITHUB_REF || '').split('/').pop();
+ if (tag !== '' && tag !== undefined) {
+ return tag;
+ }
+ }
+ return yield git(['tag', '--points-at', `${process.env.GITHUB_SHA}`, '--sort', '-version:creatordate']).then(tags => {
+ if (tags.length == 0) {
+ return git(['describe', '--tags', '--abbrev=0']);
+ }
+ return tags.split('\n')[0];
+ });
+ }
+ catch (err) {
+ return '';
+ }
+ });
+}
+exports.getTag = getTag;
+function isTagDirty(currentTag) {
+ return __awaiter(this, void 0, void 0, function* () {
+ try {
+ yield git(['describe', '--exact-match', '--tags', '--match', currentTag]);
+ }
+ catch (err) {
+ return true;
+ }
+ return false;
+ });
+}
+exports.isTagDirty = isTagDirty;
+function getShortCommit() {
+ return __awaiter(this, void 0, void 0, function* () {
+ return yield git(['show', "--format='%h'", 'HEAD', '--quiet']);
+ });
+}
+exports.getShortCommit = getShortCommit;
+//# sourceMappingURL=git.js.map
+
+/***/ }),
+
+/***/ 928:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.getRelease = void 0;
+const httpm = __importStar(__webpack_require__(925));
+const core = __importStar(__webpack_require__(186));
+const semver = __importStar(__webpack_require__(911));
+exports.getRelease = (version) => __awaiter(void 0, void 0, void 0, function* () {
+ const resolvedVersion = (yield resolveVersion(version)) || version;
+ const url = `https://github.com/goreleaser/goreleaser/releases/${resolvedVersion}`;
+ const http = new httpm.HttpClient('goreleaser-action');
+ return (yield http.getJson(url)).result;
+});
+const resolveVersion = (version) => __awaiter(void 0, void 0, void 0, function* () {
+ const allTags = yield getAllTags();
+ if (!allTags) {
+ throw new Error(`Cannot find GoReleaser tags`);
+ }
+ core.debug(`Found ${allTags.length} tags in total`);
+ return semver.maxSatisfying(allTags, version);
+});
+const getAllTags = () => __awaiter(void 0, void 0, void 0, function* () {
+ const http = new httpm.HttpClient('goreleaser-action');
+ const url = `https://goreleaser.com/static/releases.json`;
+ const getTags = http.getJson(url);
+ return getTags.then(response => {
+ if (response.result == null) {
+ return [];
+ }
+ return response.result.map(obj => obj.tag_name);
+ });
+});
+//# sourceMappingURL=github.js.map
+
+/***/ }),
+
+/***/ 480:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+exports.getGoReleaser = void 0;
+const os = __importStar(__webpack_require__(87));
+const path = __importStar(__webpack_require__(622));
+const util = __importStar(__webpack_require__(669));
+const github = __importStar(__webpack_require__(928));
+const core = __importStar(__webpack_require__(186));
+const tc = __importStar(__webpack_require__(784));
+const osPlat = os.platform();
+const osArch = os.arch();
+function getGoReleaser(version) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const release = yield github.getRelease(version);
+ if (!release) {
+ throw new Error(`Cannot find GoReleaser ${version} release`);
+ }
+ core.info(`✅ GoReleaser version found: ${release.tag_name}`);
+ const filename = getFilename();
+ const downloadUrl = util.format('https://github.com/goreleaser/goreleaser/releases/download/%s/%s', release.tag_name, filename);
+ core.info(`⬇️ Downloading ${downloadUrl}...`);
+ const downloadPath = yield tc.downloadTool(downloadUrl);
+ core.debug(`Downloaded to ${downloadPath}`);
+ core.info('📦 Extracting GoReleaser...');
+ let extPath;
+ if (osPlat == 'win32') {
+ extPath = yield tc.extractZip(downloadPath);
+ }
+ else {
+ extPath = yield tc.extractTar(downloadPath);
+ }
+ core.debug(`Extracted to ${extPath}`);
+ const cachePath = yield tc.cacheDir(extPath, 'goreleaser-action', release.tag_name.replace(/^v/, ''));
+ core.debug(`Cached to ${cachePath}`);
+ const exePath = path.join(cachePath, osPlat == 'win32' ? 'goreleaser.exe' : 'goreleaser');
+ core.debug(`Exe path is ${exePath}`);
+ return exePath;
+ });
+}
+exports.getGoReleaser = getGoReleaser;
+const getFilename = () => {
+ const platform = osPlat == 'win32' ? 'Windows' : osPlat == 'darwin' ? 'Darwin' : 'Linux';
+ const arch = osArch == 'x64' ? 'x86_64' : 'i386';
+ const ext = osPlat == 'win32' ? 'zip' : 'tar.gz';
+ return util.format('goreleaser_%s_%s.%s', platform, arch, ext);
+};
+//# sourceMappingURL=installer.js.map
+
+/***/ }),
+
+/***/ 109:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+const git = __importStar(__webpack_require__(374));
+const installer = __importStar(__webpack_require__(480));
+const core = __importStar(__webpack_require__(186));
+const exec = __importStar(__webpack_require__(514));
+const path_1 = __webpack_require__(622);
+function run() {
+ return __awaiter(this, void 0, void 0, function* () {
+ try {
+ const version = core.getInput('version') || 'latest';
+ const args = core.getInput('args');
+ const workdir = core.getInput('workdir') || '.';
+ const isInstallOnly = /^true$/i.test(core.getInput('install-only'));
+ const goreleaser = yield installer.getGoReleaser(version);
+ core.info(`✅ GoReleaser installed successfully`);
+ if (isInstallOnly) {
+ const goreleaserDir = path_1.dirname(goreleaser);
+ core.addPath(goreleaserDir);
+ core.debug(`Added ${goreleaserDir} to PATH`);
+ return;
+ }
+ else if (!args) {
+ throw new Error('args input required');
+ }
+ if (workdir && workdir !== '.') {
+ core.info(`📂 Using ${workdir} as working directory...`);
+ process.chdir(workdir);
+ }
+ const commit = yield git.getShortCommit();
+ const tag = yield git.getTag();
+ const isTagDirty = yield git.isTagDirty(tag);
+ let snapshot = '';
+ if (args.split(' ').indexOf('release') > -1) {
+ if (isTagDirty) {
+ core.info(`⚠️ No tag found for commit ${commit}. Snapshot forced`);
+ if (!args.includes('--snapshot')) {
+ snapshot = ' --snapshot';
+ }
+ }
+ else {
+ core.info(`✅ ${tag} tag found for commit ${commit}`);
+ }
+ }
+ core.info('🏃 Running GoReleaser...');
+ if (!('GORELEASER_CURRENT_TAG' in process.env)) {
+ process.env.GORELEASER_CURRENT_TAG = tag;
+ }
+ yield exec.exec(`${goreleaser} ${args}${snapshot}`);
+ }
+ catch (error) {
+ core.setFailed(error.message);
+ }
+ });
+}
+run();
+//# sourceMappingURL=main.js.map
+
+/***/ }),
+
+/***/ 241:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ result["default"] = mod;
+ return result;
+};
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+const os = __importStar(__webpack_require__(87));
+const utils_1 = __webpack_require__(278);
/**
- * @license
- * Copyright (c) 2016, Contributors
- * SPDX-License-Identifier: ISC
- */
-function camelCase(e){const t=e!==e.toLowerCase()&&e!==e.toUpperCase();if(!t){e=e.toLowerCase()}if(e.indexOf("-")===-1&&e.indexOf("_")===-1){return e}else{let t="";let A=false;const r=e.match(/^-+/);for(let n=r?r[0].length:0;n0){r+=`${t}${A.charAt(n)}`}else{r+=i}}return r}function looksLikeNumber(e){if(e===null||e===undefined)return false;if(typeof e==="number")return true;if(/^0x[0-9a-f]+$/i.test(e))return true;if(/^0[^.]/.test(e))return false;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}
-/**
- * @license
- * Copyright (c) 2016, Contributors
- * SPDX-License-Identifier: ISC
- */
-function tokenizeArgString(e){if(Array.isArray(e)){return e.map((e=>typeof e!=="string"?e+"":e))}e=e.trim();let t=0;let A=null;let r=null;let n=null;const s=[];for(let i=0;i{if(typeof t==="number"){f.nargs[e]=t;f.keys.push(e)}}))}if(typeof A.coerce==="object"){Object.entries(A.coerce).forEach((([e,t])=>{if(typeof t==="function"){f.coercions[e]=t;f.keys.push(e)}}))}if(typeof A.config!=="undefined"){if(Array.isArray(A.config)||typeof A.config==="string"){[].concat(A.config).filter(Boolean).forEach((function(e){f.configs[e]=true}))}else if(typeof A.config==="object"){Object.entries(A.config).forEach((([e,t])=>{if(typeof t==="boolean"||typeof t==="function"){f.configs[e]=t}}))}}extendAliases(A.key,s,A.default,f.arrays);Object.keys(o).forEach((function(e){(f.aliases[e]||[]).forEach((function(t){o[t]=o[e]}))}));let Q=null;checkConfiguration();let B=[];const I=Object.assign(Object.create(null),{_:[]});const p={};for(let e=0;e=3){if(checkAllAliases(a[1],f.arrays)){e=eatArray(e,a[1],r,a[2])}else if(checkAllAliases(a[1],f.nargs)!==false){e=eatNargs(e,a[1],r,a[2])}else{setArg(a[1],a[2],true)}}}else if(t.match(C)&&i["boolean-negation"]){a=t.match(C);if(a!==null&&Array.isArray(a)&&a.length>=2){s=a[1];setArg(s,checkAllAliases(s,f.arrays)?[false]:false)}}else if(t.match(/^--.+/)||!i["short-option-groups"]&&t.match(/^-[^-]+/)){a=t.match(/^--?(.+)/);if(a!==null&&Array.isArray(a)&&a.length>=2){s=a[1];if(checkAllAliases(s,f.arrays)){e=eatArray(e,s,r)}else if(checkAllAliases(s,f.nargs)!==false){e=eatNargs(e,s,r)}else{c=r[e+1];if(c!==undefined&&(!c.match(/^-/)||c.match(d))&&!checkAllAliases(s,f.bools)&&!checkAllAliases(s,f.counts)){setArg(s,c);e++}else if(/^(true|false)$/.test(c)){setArg(s,c);e++}else{setArg(s,defaultValue(s))}}}}else if(t.match(/^-.\..+=/)){a=t.match(/^-([^=]+)=([\s\S]*)$/);if(a!==null&&Array.isArray(a)&&a.length>=3){setArg(a[1],a[2])}}else if(t.match(/^-.\..+/)&&!t.match(d)){c=r[e+1];a=t.match(/^-(.\..+)/);if(a!==null&&Array.isArray(a)&&a.length>=2){s=a[1];if(c!==undefined&&!c.match(/^-/)&&!checkAllAliases(s,f.bools)&&!checkAllAliases(s,f.counts)){setArg(s,c);e++}else{setArg(s,defaultValue(s))}}}else if(t.match(/^-[^-]+/)&&!t.match(d)){o=t.slice(1,-1).split("");n=false;for(let A=0;Ae!=="--"&&e.includes("-"))).forEach((e=>{delete I[e]}))}if(i["strip-aliased"]){[].concat(...Object.keys(s).map((e=>s[e]))).forEach((e=>{if(i["camel-case-expansion"]&&e.includes("-")){delete I[e.split(".").map((e=>camelCase(e))).join(".")]}delete I[e]}))}function pushPositional(e){const t=maybeCoerceNumber("_",e);if(typeof t==="string"||typeof t==="number"){I._.push(t)}}function eatNargs(e,t,A,r){let n;let s=checkAllAliases(t,f.nargs);s=typeof s!=="number"||isNaN(s)?1:s;if(s===0){if(!isUndefined(r)){Q=Error(E("Argument unexpected for: %s",t))}setArg(t,defaultValue(t));return e}let o=isUndefined(r)?0:1;if(i["nargs-eats-options"]){if(A.length-(e+1)+o0){setArg(t,r);a--}for(n=e+1;n0||c&&typeof c==="number"&&s.length>=c)break;a=A[r];if(/^-/.test(a)&&!d.test(a)&&!isUnknownOptionAsArg(a))break;e=r;s.push(processValue(t,a,n))}}if(typeof c==="number"&&(c&&s.length1&&i["dot-notation"]){(f.aliases[s[0]]||[]).forEach((function(t){let A=t.split(".");const n=[].concat(s);n.shift();A=A.concat(n);if(!(f.aliases[e]||[]).includes(A.join("."))){setKey(I,A,r)}}))}if(checkAllAliases(e,f.normalize)&&!checkAllAliases(e,f.arrays)){const A=[e].concat(f.aliases[e]||[]);A.forEach((function(e){Object.defineProperty(p,e,{enumerable:true,get(){return t},set(e){t=typeof e==="string"?x.normalize(e):e}})}))}}function addNewAlias(e,t){if(!(f.aliases[e]&&f.aliases[e].length)){f.aliases[e]=[t];g[t]=true}if(!(f.aliases[t]&&f.aliases[t].length)){addNewAlias(t,e)}}function processValue(e,t,A){if(A){t=stripQuotes(t)}if(checkAllAliases(e,f.bools)||checkAllAliases(e,f.counts)){if(typeof t==="string")t=t==="true"}let r=Array.isArray(t)?t.map((function(t){return maybeCoerceNumber(e,t)})):maybeCoerceNumber(e,t);if(checkAllAliases(e,f.counts)&&(isUndefined(r)||typeof r==="boolean")){r=increment()}if(checkAllAliases(e,f.normalize)&&checkAllAliases(e,f.arrays)){if(Array.isArray(t))r=t.map((e=>x.normalize(e)));else r=x.normalize(t)}return r}function maybeCoerceNumber(e,t){if(!i["parse-positional-numbers"]&&e==="_")return t;if(!checkAllAliases(e,f.strings)&&!checkAllAliases(e,f.bools)&&!Array.isArray(t)){const A=looksLikeNumber(t)&&i["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${t}`)));if(A||!isUndefined(t)&&checkAllAliases(e,f.numbers)){t=Number(t)}}return t}function setConfig(e){const t=Object.create(null);applyDefaultsAndAliases(t,f.aliases,o);Object.keys(f.configs).forEach((function(A){const r=e[A]||t[A];if(r){try{let e=null;const t=x.resolve(x.cwd(),r);const n=f.configs[A];if(typeof n==="function"){try{e=n(t)}catch(t){e=t}if(e instanceof Error){Q=e;return}}else{e=x.require(t)}setConfigObject(e)}catch(t){if(t.name==="PermissionDenied")Q=t;else if(e[A])Q=Error(E("Invalid JSON config file: %s",r))}}}))}function setConfigObject(e,t){Object.keys(e).forEach((function(A){const r=e[A];const n=t?t+"."+A:A;if(typeof r==="object"&&r!==null&&!Array.isArray(r)&&i["dot-notation"]){setConfigObject(r,n)}else{if(!hasKey(I,n.split("."))||checkAllAliases(n,f.arrays)&&i["combine-arrays"]){setArg(n,r)}}}))}function setConfigObjects(){if(typeof a!=="undefined"){a.forEach((function(e){setConfigObject(e)}))}}function applyEnvVars(e,t){if(typeof c==="undefined")return;const A=typeof c==="string"?c:"";const r=x.env();Object.keys(r).forEach((function(n){if(A===""||n.lastIndexOf(A,0)===0){const s=n.split("__").map((function(e,t){if(t===0){e=e.substring(A.length)}return camelCase(e)}));if((t&&f.configs[s.join(".")]||!t)&&!hasKey(e,s)){setArg(s.join("."),r[n])}}}))}function applyCoercions(e){let t;const A=new Set;Object.keys(e).forEach((function(r){if(!A.has(r)){t=checkAllAliases(r,f.coercions);if(typeof t==="function"){try{const n=maybeCoerceNumber(r,t(e[r]));[].concat(f.aliases[r]||[],r).forEach((t=>{A.add(t);e[t]=n}))}catch(e){Q=e}}}}))}function setPlaceholderKeys(e){f.keys.forEach((t=>{if(~t.indexOf("."))return;if(typeof e[t]==="undefined")e[t]=undefined}));return e}function applyDefaultsAndAliases(e,t,A,r=false){Object.keys(A).forEach((function(n){if(!hasKey(e,n.split("."))){setKey(e,n.split("."),A[n]);if(r)h[n]=true;(t[n]||[]).forEach((function(t){if(hasKey(e,t.split(".")))return;setKey(e,t.split("."),A[n])}))}}))}function hasKey(e,t){let A=e;if(!i["dot-notation"])t=[t.join(".")];t.slice(0,-1).forEach((function(e){A=A[e]||{}}));const r=t[t.length-1];if(typeof A!=="object")return false;else return r in A}function setKey(e,t,A){let r=e;if(!i["dot-notation"])t=[t.join(".")];t.slice(0,-1).forEach((function(e){e=sanitizeKey(e);if(typeof r==="object"&&r[e]===undefined){r[e]={}}if(typeof r[e]!=="object"||Array.isArray(r[e])){if(Array.isArray(r[e])){r[e].push({})}else{r[e]=[r[e],{}]}r=r[e][r[e].length-1]}else{r=r[e]}}));const n=sanitizeKey(t[t.length-1]);const s=checkAllAliases(t.join("."),f.arrays);const o=Array.isArray(A);let a=i["duplicate-arguments-array"];if(!a&&checkAllAliases(n,f.nargs)){a=true;if(!isUndefined(r[n])&&f.nargs[n]===1||Array.isArray(r[n])&&r[n].length===f.nargs[n]){r[n]=undefined}}if(A===increment()){r[n]=increment(r[n])}else if(Array.isArray(r[n])){if(a&&s&&o){r[n]=i["flatten-duplicate-arrays"]?r[n].concat(A):(Array.isArray(r[n][0])?r[n]:[r[n]]).concat([A])}else if(!a&&Boolean(s)===Boolean(o)){r[n]=A}else{r[n]=r[n].concat([A])}}else if(r[n]===undefined&&s){r[n]=o?A:[A]}else if(a&&!(r[n]===undefined||checkAllAliases(n,f.counts)||checkAllAliases(n,f.bools))){r[n]=[r[n],A]}else{r[n]=A}}function extendAliases(...e){e.forEach((function(e){Object.keys(e||{}).forEach((function(e){if(f.aliases[e])return;f.aliases[e]=[].concat(s[e]||[]);f.aliases[e].concat(e).forEach((function(t){if(/-/.test(t)&&i["camel-case-expansion"]){const A=camelCase(t);if(A!==e&&f.aliases[e].indexOf(A)===-1){f.aliases[e].push(A);g[A]=true}}}));f.aliases[e].concat(e).forEach((function(t){if(t.length>1&&/[A-Z]/.test(t)&&i["camel-case-expansion"]){const A=decamelize(t,"-");if(A!==e&&f.aliases[e].indexOf(A)===-1){f.aliases[e].push(A);g[A]=true}}}));f.aliases[e].forEach((function(t){f.aliases[t]=[e].concat(f.aliases[e].filter((function(e){return t!==e})))}))}))}))}function checkAllAliases(e,t){const A=[].concat(f.aliases[e]||[],e);const r=Object.keys(t);const n=A.find((e=>r.includes(e)));return n?t[n]:false}function hasAnyFlag(e){const t=Object.keys(f);const A=[].concat(t.map((e=>f[e])));return A.some((function(t){return Array.isArray(t)?t.includes(e):t[e]}))}function hasFlagsMatching(e,...t){const A=[].concat(...t);return A.some((function(t){const A=e.match(t);return A&&hasAnyFlag(A[1])}))}function hasAllShortFlags(e){if(e.match(d)||!e.match(/^-[^-]+/)){return false}let t=true;let A;const r=e.slice(1).split("");for(let n=0;n{if(checkAllAliases(e,f.arrays)){Q=Error(E("Invalid configuration: %s, opts.count excludes opts.array.",e));return true}else if(checkAllAliases(e,f.nargs)){Q=Error(E("Invalid configuration: %s, opts.count excludes opts.narg.",e));return true}return false}))}return{aliases:Object.assign({},f.aliases),argv:Object.assign(p,I),configuration:i,defaulted:Object.assign({},h),error:Q,newAliases:Object.assign({},g)}}}function combineAliases(e){const t=[];const A=Object.create(null);let r=true;Object.keys(e).forEach((function(A){t.push([].concat(e[A],A))}));while(r){r=false;for(let e=0;eP,format:L.format,normalize:s.normalize,resolve:s.resolve,require:e=>{if(typeof W!=="undefined"){return W(e)}else if(e.match(/\.json$/)){return JSON.parse((0,n.readFileSync)(e,"utf8"))}else{throw Error("only .json config files are supported in ESM")}}});const q=function Parser(e,t){const A=_.parse(e.slice(),t);return A.argv};q.detailed=function(e,t){return _.parse(e.slice(),t)};q.camelCase=camelCase;q.decamelize=decamelize;q.looksLikeNumber=looksLikeNumber;const j=q;function getProcessArgvBinIndex(){if(isBundledElectronApp())return 0;return 1}function isBundledElectronApp(){return isElectronApp()&&!process.defaultApp}function isElectronApp(){return!!process.versions.electron}function hideBin(e){return e.slice(getProcessArgvBinIndex()+1)}function getProcessArgvBin(){return process.argv[getProcessArgvBinIndex()]}const $={fs:{readFileSync:n.readFileSync,writeFile:n.writeFile},format:L.format,resolve:s.resolve,exists:e=>{try{return(0,n.statSync)(e).isFile()}catch(e){return false}}};let z;class Y18N{constructor(e){e=e||{};this.directory=e.directory||"./locales";this.updateFiles=typeof e.updateFiles==="boolean"?e.updateFiles:true;this.locale=e.locale||"en";this.fallbackToLanguage=typeof e.fallbackToLanguage==="boolean"?e.fallbackToLanguage:true;this.cache=Object.create(null);this.writeQueue=[]}__(...e){if(typeof arguments[0]!=="string"){return this._taggedLiteral(arguments[0],...arguments)}const t=e.shift();let cb=function(){};if(typeof e[e.length-1]==="function")cb=e.pop();cb=cb||function(){};if(!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][t]&&this.updateFiles){this.cache[this.locale][t]=t;this._enqueueWrite({directory:this.directory,locale:this.locale,cb:cb})}else{cb()}return z.format.apply(z.format,[this.cache[this.locale][t]||t].concat(e))}__n(){const e=Array.prototype.slice.call(arguments);const t=e.shift();const A=e.shift();const r=e.shift();let cb=function(){};if(typeof e[e.length-1]==="function")cb=e.pop();if(!this.cache[this.locale])this._readLocaleFile();let n=r===1?t:A;if(this.cache[this.locale][t]){const e=this.cache[this.locale][t];n=e[r===1?"one":"other"]}if(!this.cache[this.locale][t]&&this.updateFiles){this.cache[this.locale][t]={one:t,other:A};this._enqueueWrite({directory:this.directory,locale:this.locale,cb:cb})}else{cb()}const s=[n];if(~n.indexOf("%d"))s.push(r);return z.format.apply(z.format,s.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){if(!this.cache[this.locale])this._readLocaleFile();for(const t in e){if(Object.prototype.hasOwnProperty.call(e,t)){this.cache[this.locale][t]=e[t]}}}_taggedLiteral(e,...t){let A="";e.forEach((function(e,r){const n=t[r+1];A+=e;if(typeof n!=="undefined"){A+="%s"}}));return this.__.apply(this,[A].concat([].slice.call(t,1)))}_enqueueWrite(e){this.writeQueue.push(e);if(this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){const e=this;const t=this.writeQueue[0];const A=t.directory;const r=t.locale;const n=t.cb;const s=this._resolveLocaleFile(A,r);const i=JSON.stringify(this.cache[r],null,2);z.fs.writeFile(s,i,"utf-8",(function(t){e.writeQueue.shift();if(e.writeQueue.length>0)e._processWriteQueue();n(t)}))}_readLocaleFile(){let e={};const t=this._resolveLocaleFile(this.directory,this.locale);try{if(z.fs.readFileSync){e=JSON.parse(z.fs.readFileSync(t,"utf-8"))}}catch(A){if(A instanceof SyntaxError){A.message="syntax error in "+t}if(A.code==="ENOENT")e={};else throw A}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let A=z.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(A)&&~t.lastIndexOf("_")){const r=z.resolve(e,"./",t.split("_")[0]+".json");if(this._fileExistsSync(r))A=r}return A}_fileExistsSync(e){return z.exists(e)}}function y18n(e,t){z=t;const A=new Y18N(e);return{__:A.__.bind(A),__n:A.__n.bind(A),setLocale:A.setLocale.bind(A),getLocale:A.getLocale.bind(A),updateLocale:A.updateLocale.bind(A),locale:A.locale}}const y18n_y18n=e=>y18n(e,$);const Z=y18n_y18n;var K=__nccwpck_require__(3869);const X=e(import.meta.url)("node:fs");const ee=(0,v.fileURLToPath)(import.meta.url);const te=ee.substring(0,ee.lastIndexOf("node_modules"));const Ae=(0,Y.createRequire)(import.meta.url);const re={assert:{notStrictEqual:i.notStrictEqual,strictEqual:i.strictEqual},cliui:ui,findUp:sync,getEnv:e=>process.env[e],inspect:L.inspect,getProcessArgvBin:getProcessArgvBin,mainFilename:te||process.cwd(),Parser:j,path:{basename:s.basename,dirname:s.dirname,extname:s.extname,relative:s.relative,resolve:s.resolve,join:s.join},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(e,t)=>process.emitWarning(e,t),execPath:()=>process.execPath,exit:e=>{process.exit(e)},nextTick:process.nextTick,stdColumns:typeof process.stdout.columns!=="undefined"?process.stdout.columns:null},readFileSync:X.readFileSync,readdirSync:X.readdirSync,require:Ae,getCallerFile:()=>{const e=K(3);return e.match(/^file:\/\//)?(0,v.fileURLToPath)(e):e},stringWidth:stringWidth,y18n:Z({directory:(0,s.resolve)(ee,"../../../locales"),updateFiles:false})};function assertNotStrictEqual(e,t,A,r){A.assert.notStrictEqual(e,t,r)}function assertSingleKey(e,t){t.assert.strictEqual(typeof e,"string")}function objectKeys(e){return Object.keys(e)}function isPromise(e){return!!e&&!!e.then&&typeof e.then==="function"}class YError extends Error{constructor(e){super(e||"yargs error");this.name="YError";if(Error.captureStackTrace){Error.captureStackTrace(this,YError)}}}function parseCommand(e){const t=e.replace(/\s{2,}/g," ");const A=t.split(/\s+(?![^[]*]|[^<]*>)/);const r=/\.*[\][<>]/g;const n=A.shift();if(!n)throw new Error(`No command found in: ${e}`);const s={cmd:n.replace(r,""),demanded:[],optional:[]};A.forEach(((e,t)=>{let n=false;e=e.replace(/\s/g,"");if(/\.+[\]>]/.test(e)&&t===A.length-1)n=true;if(/^\[/.test(e)){s.optional.push({cmd:e.replace(r,"").split("|"),variadic:n})}else{s.demanded.push({cmd:e.replace(r,"").split("|"),variadic:n})}}));return s}const ne=["first","second","third","fourth","fifth","sixth"];function argsert(e,t,A){function parseArgs(){return typeof e==="object"?[{demanded:[],optional:[]},e,t]:[parseCommand(`cmd ${e}`),t,A]}try{let e=0;const[t,A,r]=parseArgs();const n=[].slice.call(A);while(n.length&&n[n.length-1]===undefined)n.pop();const s=r||n.length;if(si){throw new YError(`Too many arguments provided. Expected max ${i} but received ${s}.`)}t.demanded.forEach((t=>{const A=n.shift();const r=guessType(A);const s=t.cmd.filter((e=>e===r||e==="*"));if(s.length===0)argumentTypeError(r,t.cmd,e);e+=1}));t.optional.forEach((t=>{if(n.length===0)return;const A=n.shift();const r=guessType(A);const s=t.cmd.filter((e=>e===r||e==="*"));if(s.length===0)argumentTypeError(r,t.cmd,e);e+=1}))}catch(e){console.warn(e.stack)}}function guessType(e){if(Array.isArray(e)){return"array"}else if(e===null){return"null"}return typeof e}function argumentTypeError(e,t,A){throw new YError(`Invalid ${ne[A]||"manyith"} argument. Expected ${t.join(" or ")} but received ${e}.`)}class GlobalMiddleware{constructor(e){this.globalMiddleware=[];this.frozens=[];this.yargs=e}addMiddleware(e,t,A=true,r=false){argsert(" [boolean] [boolean] [boolean]",[e,t,A],arguments.length);if(Array.isArray(e)){for(let r=0;r{const r=[...A[t]||[],t];if(!e.option)return true;else return!r.includes(e.option)}));e.option=t;return this.addMiddleware(e,true,true,true)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){const e=this.frozens.pop();if(e!==undefined)this.globalMiddleware=e}reset(){this.globalMiddleware=this.globalMiddleware.filter((e=>e.global))}}function commandMiddlewareFactory(e){if(!e)return[];return e.map((e=>{e.applyBeforeValidation=false;return e}))}function applyMiddleware(e,t,A,r){return A.reduce(((e,A)=>{if(A.applyBeforeValidation!==r){return e}if(A.mutates){if(A.applied)return e;A.applied=true}if(isPromise(e)){return e.then((e=>Promise.all([e,A(e,t)]))).then((([e,t])=>Object.assign(e,t)))}else{const r=A(e,t);return isPromise(r)?r.then((t=>Object.assign(e,t))):Object.assign(e,r)}}),e)}function maybeAsyncResult(e,t,A=e=>{throw e}){try{const A=isFunction(e)?e():e;return isPromise(A)?A.then((e=>t(e))):t(A)}catch(e){return A(e)}}function isFunction(e){return typeof e==="function"}const se=/(^\*)|(^\$0)/;class CommandInstance{constructor(e,t,A,r){this.requireCache=new Set;this.handlers={};this.aliasMap={};this.frozens=[];this.shim=r;this.usage=e;this.globalMiddleware=A;this.validation=t}addDirectory(e,t,A,r){r=r||{};this.requireCache.add(A);const n=this.shim.path.resolve(this.shim.path.dirname(A),e);const s=this.shim.readdirSync(n,{recursive:r.recurse?true:false});if(!Array.isArray(r.extensions))r.extensions=["js"];const i=typeof r.visit==="function"?r.visit:e=>e;for(const e of s){const A=e.toString();if(r.exclude){let e=false;if(typeof r.exclude==="function"){e=r.exclude(A)}else{e=r.exclude.test(A)}if(e)continue}if(r.include){let e=false;if(typeof r.include==="function"){e=r.include(A)}else{e=r.include.test(A)}if(!e)continue}let s=false;for(const e of r.extensions){if(A.endsWith(e))s=true}if(s){const e=this.shim.path.join(n,A);const r=t(e);const s=Object.create(null,Object.getOwnPropertyDescriptors({...r}));const o=i(s,e,A);if(o){if(this.requireCache.has(e))continue;else this.requireCache.add(e);if(!s.command){s.command=this.shim.path.basename(e,this.shim.path.extname(e))}this.addHandler(s)}}}}addHandler(e,t,A,r,n,s){let i=[];const o=commandMiddlewareFactory(n);r=r||(()=>{});if(Array.isArray(e)){if(isCommandAndAliases(e)){[e,...i]=e}else{for(const t of e){this.addHandler(t)}}}else if(isCommandHandlerDefinition(e)){let t=Array.isArray(e.command)||typeof e.command==="string"?e.command:null;if(t===null){throw new Error(`No command name given for module: ${this.shim.inspect(e)}`)}if(e.aliases)t=[].concat(t).concat(e.aliases);this.addHandler(t,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(isCommandBuilderDefinition(A)){this.addHandler([e].concat(i),t,A.builder,A.handler,A.middlewares,A.deprecated);return}if(typeof e==="string"){const n=parseCommand(e);i=i.map((e=>parseCommand(e).cmd));let a=false;const c=[n.cmd].concat(i).filter((e=>{if(se.test(e)){a=true;return false}return true}));if(c.length===0&&a)c.push("$0");if(a){n.cmd=c[0];i=c.slice(1);e=e.replace(se,n.cmd)}i.forEach((e=>{this.aliasMap[e]=n.cmd}));if(t!==false){this.usage.command(e,t,a,i,s)}this.handlers[n.cmd]={original:e,description:t,handler:r,builder:A||{},middlewares:o,deprecated:s,demanded:n.demanded,optional:n.optional};if(a)this.defaultCommand=this.handlers[n.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,A,r,n,s){const i=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand;const o=t.getInternalMethods().getContext();const a=o.commands.slice();const c=!e;if(e){o.commands.push(e);o.fullCommands.push(i.original)}const l=this.applyBuilderUpdateUsageAndParse(c,i,t,A.aliases,a,r,n,s);return isPromise(l)?l.then((e=>this.applyMiddlewareAndGetResult(c,i,e.innerArgv,o,n,e.aliases,t))):this.applyMiddlewareAndGetResult(c,i,l.innerArgv,o,n,l.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,A,r,n,s,i,o){const a=t.builder;let c=A;if(isCommandBuilderCallback(a)){A.getInternalMethods().getUsageInstance().freeze();const l=a(A.getInternalMethods().reset(r),o);if(isPromise(l)){return l.then((r=>{c=isYargsInstance(r)?r:A;return this.parseAndUpdateUsage(e,t,c,n,s,i)}))}}else if(isCommandBuilderOptionDefinitions(a)){A.getInternalMethods().getUsageInstance().freeze();c=A.getInternalMethods().reset(r);Object.keys(t.builder).forEach((e=>{c.option(e,a[e])}))}return this.parseAndUpdateUsage(e,t,c,n,s,i)}parseAndUpdateUsage(e,t,A,r,n,s){if(e)A.getInternalMethods().getUsageInstance().unfreeze(true);if(this.shouldUpdateUsage(A)){A.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(r,t),t.description)}const i=A.getInternalMethods().runYargsParserAndExecuteCommands(null,undefined,true,n,s);return isPromise(i)?i.then((e=>({aliases:A.parsed.aliases,innerArgv:e}))):{aliases:A.parsed.aliases,innerArgv:i}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){const A=se.test(t.original)?t.original.replace(se,"").trim():t.original;const r=e.filter((e=>!se.test(e)));r.push(A);return`$0 ${r.join(" ")}`}handleValidationAndGetResult(e,t,A,r,n,s,i,o){if(!s.getInternalMethods().getHasOutput()){const t=s.getInternalMethods().runValidation(n,o,s.parsed.error,e);A=maybeAsyncResult(A,(e=>{t(e);return e}))}if(t.handler&&!s.getInternalMethods().getHasOutput()){s.getInternalMethods().setHasOutput();const r=!!s.getOptions().configuration["populate--"];s.getInternalMethods().postProcess(A,r,false,false);A=applyMiddleware(A,s,i,false);A=maybeAsyncResult(A,(e=>{const A=t.handler(e);return isPromise(A)?A.then((()=>e)):e}));if(!e){s.getInternalMethods().getUsageInstance().cacheHelpMessage()}if(isPromise(A)&&!s.getInternalMethods().hasParseCallback()){A.catch((e=>{try{s.getInternalMethods().getUsageInstance().fail(null,e)}catch(e){}}))}}if(!e){r.commands.pop();r.fullCommands.pop()}return A}applyMiddlewareAndGetResult(e,t,A,r,n,s,i){let o={};if(n)return A;if(!i.getInternalMethods().getHasOutput()){o=this.populatePositionals(t,A,r,i)}const a=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares);const c=applyMiddleware(A,i,a,true);return isPromise(c)?c.then((A=>this.handleValidationAndGetResult(e,t,A,r,s,i,a,o))):this.handleValidationAndGetResult(e,t,c,r,s,i,a,o)}populatePositionals(e,t,A,r){t._=t._.slice(A.commands.length);const n=e.demanded.slice(0);const s=e.optional.slice(0);const i={};this.validation.positionalCount(n.length,t._.length);while(n.length){const e=n.shift();this.populatePositional(e,t,i)}while(s.length){const e=s.shift();this.populatePositional(e,t,i)}t._=A.commands.concat(t._.map((e=>""+e)));this.postProcessPositionals(t,i,this.cmdToParseOptions(e.original),r);return i}populatePositional(e,t,A){const r=e.cmd[0];if(e.variadic){A[r]=t._.splice(0).map(String)}else{if(t._.length)A[r]=[String(t._.shift())]}}cmdToParseOptions(e){const t={array:[],default:{},alias:{},demand:{}};const A=parseCommand(e);A.demanded.forEach((e=>{const[A,...r]=e.cmd;if(e.variadic){t.array.push(A);t.default[A]=[]}t.alias[A]=r;t.demand[A]=true}));A.optional.forEach((e=>{const[A,...r]=e.cmd;if(e.variadic){t.array.push(A);t.default[A]=[]}t.alias[A]=r}));return t}postProcessPositionals(e,t,A,r){const n=Object.assign({},r.getOptions());n.default=Object.assign(A.default,n.default);for(const e of Object.keys(A.alias)){n.alias[e]=(n.alias[e]||[]).concat(A.alias[e])}n.array=n.array.concat(A.array);n.config={};const s=[];Object.keys(t).forEach((e=>{t[e].map((t=>{if(n.configuration["unknown-options-as-args"])n.key[e]=true;s.push(`--${e}`);s.push(t)}))}));if(!s.length)return;const i=Object.assign({},n.configuration,{"populate--":false});const o=this.shim.Parser.detailed(s,Object.assign({},n,{configuration:i}));if(o.error){r.getInternalMethods().getUsageInstance().fail(o.error.message,o.error)}else{const A=Object.keys(t);Object.keys(t).forEach((e=>{A.push(...o.aliases[e])}));Object.keys(o.argv).forEach((n=>{if(A.includes(n)){if(!t[n])t[n]=o.argv[n];if(!this.isInConfigs(r,n)&&!this.isDefaulted(r,n)&&Object.prototype.hasOwnProperty.call(e,n)&&Object.prototype.hasOwnProperty.call(o.argv,n)&&(Array.isArray(e[n])||Array.isArray(o.argv[n]))){e[n]=[].concat(e[n],o.argv[n])}else{e[n]=o.argv[n]}}}))}}isDefaulted(e,t){const{default:A}=e.getOptions();return Object.prototype.hasOwnProperty.call(A,t)||Object.prototype.hasOwnProperty.call(A,this.shim.Parser.camelCase(t))}isInConfigs(e,t){const{configObjects:A}=e.getOptions();return A.some((e=>Object.prototype.hasOwnProperty.call(e,t)))||A.some((e=>Object.prototype.hasOwnProperty.call(e,this.shim.Parser.camelCase(t))))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){const t=se.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(t,this.defaultCommand.description)}const t=this.defaultCommand.builder;if(isCommandBuilderCallback(t)){return t(e,true)}else if(!isCommandBuilderDefinition(t)){Object.keys(t).forEach((A=>{e.option(A,t[A])}))}return undefined}extractDesc({describe:e,description:t,desc:A}){for(const r of[e,t,A]){if(typeof r==="string"||r===false)return r;assertNotStrictEqual(r,true,this.shim)}return false}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){const e=this.frozens.pop();assertNotStrictEqual(e,undefined,this.shim);({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e)}reset(){this.handlers={};this.aliasMap={};this.defaultCommand=undefined;this.requireCache=new Set;return this}}function command(e,t,A,r){return new CommandInstance(e,t,A,r)}function isCommandBuilderDefinition(e){return typeof e==="object"&&!!e.builder&&typeof e.handler==="function"}function isCommandAndAliases(e){return e.every((e=>typeof e==="string"))}function isCommandBuilderCallback(e){return typeof e==="function"}function isCommandBuilderOptionDefinitions(e){return typeof e==="object"}function isCommandHandlerDefinition(e){return typeof e==="object"&&!Array.isArray(e)}function objFilter(e={},t=()=>true){const A={};objectKeys(e).forEach((r=>{if(t(r,e[r])){A[r]=e[r]}}));return A}function setBlocking(e){if(typeof process==="undefined")return;[process.stdout,process.stderr].forEach((t=>{const A=t;if(A._handle&&A.isTTY&&typeof A._handle.setBlocking==="function"){A._handle.setBlocking(e)}}))}function isBoolean(e){return typeof e==="boolean"}function usage(e,t){const A=t.y18n.__;const r={};const n=[];r.failFn=function failFn(e){n.push(e)};let s=null;let i=null;let o=true;r.showHelpOnFail=function showHelpOnFailFn(t=true,A){const[n,a]=typeof t==="string"?[true,t]:[t,A];if(e.getInternalMethods().isGlobalContext()){i=a}s=a;o=n;return r};let a=false;r.fail=function fail(t,A){const c=e.getInternalMethods().getLoggerInstance();if(n.length){for(let e=n.length-1;e>=0;--e){const s=n[e];if(isBoolean(s)){if(A)throw A;else if(t)throw Error(t)}else{s(t,A,r)}}}else{if(e.getExitProcess())setBlocking(true);if(!a){a=true;if(o){e.showHelp("error");c.error()}if(t||A)c.error(t||A);const r=s||i;if(r){if(t||A)c.error("");c.error(r)}}A=A||new YError(t);if(e.getExitProcess()){return e.exit(1)}else if(e.getInternalMethods().hasParseCallback()){return e.exit(1,A)}else{throw A}}};let c=[];let l=false;r.usage=(e,t)=>{if(e===null){l=true;c=[];return r}l=false;c.push([e,t||""]);return r};r.getUsage=()=>c;r.getUsageDisabled=()=>l;r.getPositionalGroupName=()=>A("Positionals:");let u=[];r.example=(e,t)=>{u.push([e,t||""])};let g=[];r.command=function command(e,t,A,r,n=false){if(A){g=g.map((e=>{e[2]=false;return e}))}g.push([e,t||"",A,r,n])};r.getCommands=()=>g;let h={};r.describe=function describe(e,t){if(Array.isArray(e)){e.forEach((e=>{r.describe(e,t)}))}else if(typeof e==="object"){Object.keys(e).forEach((t=>{r.describe(t,e[t])}))}else{h[e]=t}};r.getDescriptions=()=>h;let E=[];r.epilog=e=>{E.push(e)};let f=false;let d;r.wrap=e=>{f=true;d=e};r.getWrap=()=>{if(t.getEnv("YARGS_DISABLE_WRAP")){return null}if(!f){d=windowWidth();f=true}return d};const C="__yargsString__:";r.deferY18nLookup=e=>C+e;r.help=function help(){if(Q)return Q;normalizeAliases();const n=e.customScriptName?e.$0:t.path.basename(e.$0);const s=e.getDemandedOptions();const i=e.getDemandedCommands();const o=e.getDeprecatedOptions();const a=e.getGroups();const f=e.getOptions();let d=[];d=d.concat(Object.keys(h));d=d.concat(Object.keys(s));d=d.concat(Object.keys(i));d=d.concat(Object.keys(f.default));d=d.filter(filterHiddenOptions);d=Object.keys(d.reduce(((e,t)=>{if(t!=="_")e[t]=true;return e}),{}));const B=r.getWrap();const I=t.cliui({width:B,wrap:!!B});if(!l){if(c.length){c.forEach((e=>{I.div({text:`${e[0].replace(/\$0/g,n)}`});if(e[1]){I.div({text:`${e[1]}`,padding:[1,0,0,0]})}}));I.div()}else if(g.length){let e=null;if(i._){e=`${n} <${A("command")}>\n`}else{e=`${n} [${A("command")}]\n`}I.div(`${e}`)}}if(g.length>1||g.length===1&&!g[0][2]){I.div(A("Commands:"));const t=e.getInternalMethods().getContext();const r=t.commands.length?`${t.commands.join(" ")} `:"";if(e.getInternalMethods().getParserConfiguration()["sort-commands"]===true){g=g.sort(((e,t)=>e[0].localeCompare(t[0])))}const s=n?`${n} `:"";g.forEach((e=>{const t=`${s}${r}${e[0].replace(/^\$0 ?/,"")}`;I.span({text:t,padding:[0,2,0,2],width:maxWidth(g,B,`${n}${r}`)+4},{text:e[1]});const i=[];if(e[2])i.push(`[${A("default")}]`);if(e[3]&&e[3].length){i.push(`[${A("aliases:")} ${e[3].join(", ")}]`)}if(e[4]){if(typeof e[4]==="string"){i.push(`[${A("deprecated: %s",e[4])}]`)}else{i.push(`[${A("deprecated")}]`)}}if(i.length){I.div({text:i.join(" "),padding:[0,0,0,2],align:"right"})}else{I.div()}}));I.div()}const p=(Object.keys(f.alias)||[]).concat(Object.keys(e.parsed.newAliases)||[]);d=d.filter((t=>!e.parsed.newAliases[t]&&p.every((e=>(f.alias[e]||[]).indexOf(t)===-1))));const D=A("Options:");if(!a[D])a[D]=[];addUngroupedKeys(d,f.alias,a,D);const isLongSwitch=e=>/^--/.test(getText(e));const m=Object.keys(a).filter((e=>a[e].length>0)).map((e=>{const t=a[e].filter(filterHiddenOptions).map((e=>{if(p.includes(e))return e;for(let t=0,A;(A=p[t])!==undefined;t++){if((f.alias[A]||[]).includes(e))return A}return e}));return{groupName:e,normalizedKeys:t}})).filter((({normalizedKeys:e})=>e.length>0)).map((({groupName:e,normalizedKeys:t})=>{const A=t.reduce(((t,A)=>{t[A]=[A].concat(f.alias[A]||[]).map((t=>{if(e===r.getPositionalGroupName())return t;else{return(/^[0-9]$/.test(t)?f.boolean.includes(A)?"-":"--":t.length>1?"--":"-")+t}})).sort(((e,t)=>isLongSwitch(e)===isLongSwitch(t)?0:isLongSwitch(e)?1:-1)).join(", ");return t}),{});return{groupName:e,normalizedKeys:t,switches:A}}));const y=m.filter((({groupName:e})=>e!==r.getPositionalGroupName())).some((({normalizedKeys:e,switches:t})=>!e.every((e=>isLongSwitch(t[e])))));if(y){m.filter((({groupName:e})=>e!==r.getPositionalGroupName())).forEach((({normalizedKeys:e,switches:t})=>{e.forEach((e=>{if(isLongSwitch(t[e])){t[e]=addIndentation(t[e],"-x, ".length)}}))}))}m.forEach((({groupName:t,normalizedKeys:n,switches:i})=>{I.div(t);n.forEach((t=>{const n=i[t];let a=h[t]||"";let c=null;if(a.includes(C))a=A(a.substring(C.length));if(f.boolean.includes(t))c=`[${A("boolean")}]`;if(f.count.includes(t))c=`[${A("count")}]`;if(f.string.includes(t))c=`[${A("string")}]`;if(f.normalize.includes(t))c=`[${A("string")}]`;if(f.array.includes(t))c=`[${A("array")}]`;if(f.number.includes(t))c=`[${A("number")}]`;const deprecatedExtra=e=>typeof e==="string"?`[${A("deprecated: %s",e)}]`:`[${A("deprecated")}]`;const l=[t in o?deprecatedExtra(o[t]):null,c,t in s?`[${A("required")}]`:null,f.choices&&f.choices[t]?`[${A("choices:")} ${r.stringifiedValues(f.choices[t])}]`:null,defaultString(f.default[t],f.defaultDescription[t])].filter(Boolean).join(" ");I.span({text:getText(n),padding:[0,2,0,2+getIndentation(n)],width:maxWidth(i,B)+4},a);const u=e.getInternalMethods().getUsageConfiguration()["hide-types"]===true;if(l&&!u)I.div({text:l,padding:[0,0,0,2],align:"right"});else I.div()}));I.div()}));if(u.length){I.div(A("Examples:"));u.forEach((e=>{e[0]=e[0].replace(/\$0/g,n)}));u.forEach((e=>{if(e[1]===""){I.div({text:e[0],padding:[0,2,0,2]})}else{I.div({text:e[0],padding:[0,2,0,2],width:maxWidth(u,B)+4},{text:e[1]})}}));I.div()}if(E.length>0){const e=E.map((e=>e.replace(/\$0/g,n))).join("\n");I.div(`${e}\n`)}return I.toString().replace(/\s*$/,"")};function maxWidth(e,A,r){let n=0;if(!Array.isArray(e)){e=Object.values(e).map((e=>[e]))}e.forEach((e=>{n=Math.max(t.stringWidth(r?`${r} ${getText(e[0])}`:getText(e[0]))+getIndentation(e[0]),n)}));if(A)n=Math.min(n,parseInt((A*.5).toString(),10));return n}function normalizeAliases(){const t=e.getDemandedOptions();const A=e.getOptions();(Object.keys(A.alias)||[]).forEach((n=>{A.alias[n].forEach((s=>{if(h[s])r.describe(n,h[s]);if(s in t)e.demandOption(n,t[s]);if(A.boolean.includes(s))e.boolean(n);if(A.count.includes(s))e.count(n);if(A.string.includes(s))e.string(n);if(A.normalize.includes(s))e.normalize(n);if(A.array.includes(s))e.array(n);if(A.number.includes(s))e.number(n)}))}))}let Q;r.cacheHelpMessage=function(){Q=this.help()};r.clearCachedHelpMessage=function(){Q=undefined};r.hasCachedHelpMessage=function(){return!!Q};function addUngroupedKeys(e,t,A,r){let n=[];let s=null;Object.keys(A).forEach((e=>{n=n.concat(A[e])}));e.forEach((e=>{s=[e].concat(t[e]);if(!s.some((e=>n.indexOf(e)!==-1))){A[r].push(e)}}));return n}function filterHiddenOptions(t){return e.getOptions().hiddenOptions.indexOf(t)<0||e.parsed.argv[e.getOptions().showHiddenOpt]}r.showHelp=t=>{const A=e.getInternalMethods().getLoggerInstance();if(!t)t="error";const n=typeof t==="function"?t:A[t];n(r.help())};r.functionDescription=e=>{const r=e.name?t.Parser.decamelize(e.name,"-"):A("generated-value");return["(",r,")"].join("")};r.stringifiedValues=function stringifiedValues(e,t){let A="";const r=t||", ";const n=[].concat(e);if(!e||!n.length)return A;n.forEach((e=>{if(A.length)A+=r;A+=JSON.stringify(e)}));return A};function defaultString(e,t){let r=`[${A("default:")} `;if(e===undefined&&!t)return null;if(t){r+=t}else{switch(typeof e){case"string":r+=`"${e}"`;break;case"object":r+=JSON.stringify(e);break;default:r+=e}}return`${r}]`}function windowWidth(){const e=80;if(t.process.stdColumns){return Math.min(e,t.process.stdColumns)}else{return e}}let B=null;r.version=e=>{B=e};r.showVersion=t=>{const A=e.getInternalMethods().getLoggerInstance();if(!t)t="error";const r=typeof t==="function"?t:A[t];r(B)};r.reset=function reset(e){s=null;a=false;c=[];l=false;E=[];u=[];g=[];h=objFilter(h,(t=>!e[t]));return r};const I=[];r.freeze=function freeze(){I.push({failMessage:s,failureOutput:a,usages:c,usageDisabled:l,epilogs:E,examples:u,commands:g,descriptions:h})};r.unfreeze=function unfreeze(e=false){const t=I.pop();if(!t)return;if(e){h={...t.descriptions,...h};g=[...t.commands,...g];c=[...t.usages,...c];u=[...t.examples,...u];E=[...t.epilogs,...E]}else{({failMessage:s,failureOutput:a,usages:c,usageDisabled:l,epilogs:E,examples:u,commands:g,descriptions:h}=t)}};return r}function isIndentedText(e){return typeof e==="object"}function addIndentation(e,t){return isIndentedText(e)?{text:e.text,indentation:e.indentation+t}:{text:e,indentation:t}}function getIndentation(e){return isIndentedText(e)?e.indentation:0}function getText(e){return isIndentedText(e)?e.text:e}const ie=`###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local cur_word args type_list\n\n cur_word="\${COMP_WORDS[COMP_CWORD]}"\n args=("\${COMP_WORDS[@]}")\n\n # ask yargs to generate completions.\n # see https://stackoverflow.com/a/40944195/7080036 for the spaces-handling awk\n mapfile -t type_list < <({{app_path}} --get-yargs-completions "\${args[@]}")\n mapfile -t COMPREPLY < <(compgen -W "$( printf '%q ' "\${type_list[@]}" )" -- "\${cur_word}" |\n awk '/ / { print "\\""$0"\\"" } /^[^ ]+$/ { print $0 }')\n\n # if no match was found, fall back to filename completion\n if [ \${#COMPREPLY[@]} -eq 0 ]; then\n COMPREPLY=()\n fi\n\n return 0\n}\ncomplete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;const oe=`#compdef {{app_name}}\n###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc\n# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local reply\n local si=$IFS\n IFS=$'\n' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}"))\n IFS=$si\n if [[ \${#reply} -gt 0 ]]; then\n _describe 'values' reply\n else\n _default\n fi\n}\nif [[ "'\${zsh_eval_context[-1]}" == "loadautofunc" ]]; then\n _{{app_name}}_yargs_completions "$@"\nelse\n compdef _{{app_name}}_yargs_completions {{app_name}}\nfi\n###-end-{{app_name}}-completions-###\n`;class Completion{constructor(e,t,A,r){var n,s,i;this.yargs=e;this.usage=t;this.command=A;this.shim=r;this.completionKey="get-yargs-completions";this.aliases=null;this.customCompletionFunction=null;this.indexAfterLastReset=0;this.zshShell=(i=((n=this.shim.getEnv("SHELL"))===null||n===void 0?void 0:n.includes("zsh"))||((s=this.shim.getEnv("ZSH_NAME"))===null||s===void 0?void 0:s.includes("zsh")))!==null&&i!==void 0?i:false}defaultCompletion(e,t,A,r){const n=this.command.getCommandHandlers();for(let t=0,A=e.length;t{const r=parseCommand(A[0]).cmd;if(t.indexOf(r)===-1){if(!this.zshShell){e.push(r)}else{const t=A[1]||"";e.push(r.replace(/:/g,"\\:")+":"+t)}}}))}}optionCompletions(e,t,A,r){if((r.match(/^-/)||r===""&&e.length===0)&&!this.previousArgHasChoices(t)){const A=this.yargs.getOptions();const n=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(A.key).forEach((s=>{const i=!!A.configuration["boolean-negation"]&&A.boolean.includes(s);const o=n.includes(s);if(!o&&!A.hiddenOptions.includes(s)&&!this.argsContainKey(t,s,i)){this.completeOptionKey(s,e,r,i&&!!A.default[s])}}))}}choicesFromOptionsCompletions(e,t,A,r){if(this.previousArgHasChoices(t)){const A=this.getPreviousArgChoices(t);if(A&&A.length>0){e.push(...A.map((e=>e.replace(/:/g,"\\:"))))}}}choicesFromPositionalsCompletions(e,t,A,r){if(r===""&&e.length>0&&this.previousArgHasChoices(t)){return}const n=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];const s=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1);const i=n[A._.length-s-1];if(!i){return}const o=this.yargs.getOptions().choices[i]||[];for(const t of o){if(t.startsWith(r)){e.push(t.replace(/:/g,"\\:"))}}}getPreviousArgChoices(e){if(e.length<1)return;let t=e[e.length-1];let A="";if(!t.startsWith("-")&&e.length>1){A=t;t=e[e.length-2]}if(!t.startsWith("-"))return;const r=t.replace(/^-+/,"");const n=this.yargs.getOptions();const s=[r,...this.yargs.getAliases()[r]||[]];let i;for(const e of s){if(Object.prototype.hasOwnProperty.call(n.key,e)&&Array.isArray(n.choices[e])){i=n.choices[e];break}}if(i){return i.filter((e=>!A||e.startsWith(A)))}}previousArgHasChoices(e){const t=this.getPreviousArgChoices(e);return t!==undefined&&t.length>0}argsContainKey(e,t,A){const argsContains=t=>e.indexOf((/^[^0-9]$/.test(t)?"-":"--")+t)!==-1;if(argsContains(t))return true;if(A&&argsContains(`no-${t}`))return true;if(this.aliases){for(const e of this.aliases[t]){if(argsContains(e))return true}}return false}completeOptionKey(e,t,A,r){var n,s,i,o;let a=e;if(this.zshShell){const t=this.usage.getDescriptions();const A=(s=(n=this===null||this===void 0?void 0:this.aliases)===null||n===void 0?void 0:n[e])===null||s===void 0?void 0:s.find((e=>{const A=t[e];return typeof A==="string"&&A.length>0}));const r=A?t[A]:undefined;const c=(o=(i=t[e])!==null&&i!==void 0?i:r)!==null&&o!==void 0?o:"";a=`${e.replace(/:/g,"\\:")}:${c.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}const startsByTwoDashes=e=>/^--/.test(e);const isShortOption=e=>/^[^0-9]$/.test(e);const c=!startsByTwoDashes(A)&&isShortOption(e)?"-":"--";t.push(c+a);if(r){t.push(c+"no-"+a)}}customCompletion(e,t,A,r){assertNotStrictEqual(this.customCompletionFunction,null,this.shim);if(isSyncCompletionFunction(this.customCompletionFunction)){const e=this.customCompletionFunction(A,t);if(isPromise(e)){return e.then((e=>{this.shim.process.nextTick((()=>{r(null,e)}))})).catch((e=>{this.shim.process.nextTick((()=>{r(e,undefined)}))}))}return r(null,e)}else if(isFallbackCompletionFunction(this.customCompletionFunction)){return this.customCompletionFunction(A,t,((n=r)=>this.defaultCompletion(e,t,A,n)),(e=>{r(null,e)}))}else{return this.customCompletionFunction(A,t,(e=>{r(null,e)}))}}getCompletion(e,t){const A=e.length?e[e.length-1]:"";const r=this.yargs.parse(e,true);const n=this.customCompletionFunction?r=>this.customCompletion(e,r,A,t):r=>this.defaultCompletion(e,r,A,t);return isPromise(r)?r.then(n):n(r)}generateCompletionScript(e,t){let A=this.zshShell?oe:ie;const r=this.shim.path.basename(e);if(e.match(/\.js$/))e=`./${e}`;A=A.replace(/{{app_name}}/g,r);A=A.replace(/{{completion_command}}/g,t);return A.replace(/{{app_path}}/g,e)}registerFunction(e){this.customCompletionFunction=e}setParsed(e){this.aliases=e.aliases}}function completion(e,t,A,r){return new Completion(e,t,A,r)}function isSyncCompletionFunction(e){return e.length<3}function isFallbackCompletionFunction(e){return e.length>3}function levenshtein(e,t){if(e.length===0)return t.length;if(t.length===0)return e.length;const A=[];let r;for(r=0;r<=t.length;r++){A[r]=[r]}let n;for(n=0;n<=e.length;n++){A[0][n]=n}for(r=1;r<=t.length;r++){for(n=1;n<=e.length;n++){if(t.charAt(r-1)===e.charAt(n-1)){A[r][n]=A[r-1][n-1]}else{if(r>1&&n>1&&t.charAt(r-2)===e.charAt(n-1)&&t.charAt(r-1)===e.charAt(n-2)){A[r][n]=A[r-2][n-2]+1}else{A[r][n]=Math.min(A[r-1][n-1]+1,Math.min(A[r][n-1]+1,A[r-1][n]+1))}}}}return A[t.length][e.length]}const ae=["$0","--","_"];function validation(e,t,A){const r=A.y18n.__;const n=A.y18n.__n;const s={};s.nonOptionCount=function nonOptionCount(A){const r=e.getDemandedCommands();const s=A._.length+(A["--"]?A["--"].length:0);const i=s-e.getInternalMethods().getContext().commands.length;if(r._&&(ir._.max)){if(ir._.max){if(r._.maxMsg!==undefined){t.fail(r._.maxMsg?r._.maxMsg.replace(/\$0/g,i.toString()).replace(/\$1/,r._.max.toString()):null)}else{t.fail(n("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",i,i.toString(),r._.max.toString()))}}}};s.positionalCount=function positionalCount(e,A){if(A{if(!ae.includes(t)&&!Object.prototype.hasOwnProperty.call(i,t)&&!Object.prototype.hasOwnProperty.call(e.getInternalMethods().getParseContext(),t)&&!s.isValidAndSomeAliasIsNotNew(t,r)){u.push(t)}}));if(a&&(g.commands.length>0||l.length>0||o)){A._.slice(g.commands.length).forEach((e=>{if(!l.includes(""+e)){u.push(""+e)}}))}if(a){const t=e.getDemandedCommands();const r=((c=t._)===null||c===void 0?void 0:c.max)||0;const n=g.commands.length+r;if(n{e=String(e);if(!g.commands.includes(e)&&!u.includes(e)){u.push(e)}}))}}if(u.length){t.fail(n("Unknown argument: %s","Unknown arguments: %s",u.length,u.map((e=>e.trim()?e:`"${e}"`)).join(", ")))}};s.unknownCommands=function unknownCommands(A){const r=e.getInternalMethods().getCommandInstance().getCommands();const s=[];const i=e.getInternalMethods().getContext();if(i.commands.length>0||r.length>0){A._.slice(i.commands.length).forEach((e=>{if(!r.includes(""+e)){s.push(""+e)}}))}if(s.length>0){t.fail(n("Unknown command: %s","Unknown commands: %s",s.length,s.join(", ")));return true}else{return false}};s.isValidAndSomeAliasIsNotNew=function isValidAndSomeAliasIsNotNew(t,A){if(!Object.prototype.hasOwnProperty.call(A,t)){return false}const r=e.parsed.newAliases;return[t,...A[t]].some((e=>!Object.prototype.hasOwnProperty.call(r,e)||!r[t]))};s.limitedChoices=function limitedChoices(A){const n=e.getOptions();const s={};if(!Object.keys(n.choices).length)return;Object.keys(A).forEach((e=>{if(ae.indexOf(e)===-1&&Object.prototype.hasOwnProperty.call(n.choices,e)){[].concat(A[e]).forEach((t=>{if(n.choices[e].indexOf(t)===-1&&t!==undefined){s[e]=(s[e]||[]).concat(t)}}))}}));const i=Object.keys(s);if(!i.length)return;let o=r("Invalid values:");i.forEach((e=>{o+=`\n ${r("Argument: %s, Given: %s, Choices: %s",e,t.stringifiedValues(s[e]),t.stringifiedValues(n.choices[e]))}`}));t.fail(o)};let i={};s.implies=function implies(t,r){argsert(" [array|number|string]",[t,r],arguments.length);if(typeof t==="object"){Object.keys(t).forEach((e=>{s.implies(e,t[e])}))}else{e.global(t);if(!i[t]){i[t]=[]}if(Array.isArray(r)){r.forEach((e=>s.implies(t,e)))}else{assertNotStrictEqual(r,undefined,A);i[t].push(r)}}};s.getImplied=function getImplied(){return i};function keyExists(e,t){const A=Number(t);t=isNaN(A)?t:A;if(typeof t==="number"){t=e._.length>=t}else if(t.match(/^--no-.+/)){t=t.match(/^--no-(.+)/)[1];t=!Object.prototype.hasOwnProperty.call(e,t)}else{t=Object.prototype.hasOwnProperty.call(e,t)}return t}s.implications=function implications(e){const A=[];Object.keys(i).forEach((t=>{const r=t;(i[t]||[]).forEach((t=>{let n=r;const s=t;n=keyExists(e,n);t=keyExists(e,t);if(n&&!t){A.push(` ${r} -> ${s}`)}}))}));if(A.length){let e=`${r("Implications failed:")}\n`;A.forEach((t=>{e+=t}));t.fail(e)}};let o={};s.conflicts=function conflicts(t,A){argsert(" [array|string]",[t,A],arguments.length);if(typeof t==="object"){Object.keys(t).forEach((e=>{s.conflicts(e,t[e])}))}else{e.global(t);if(!o[t]){o[t]=[]}if(Array.isArray(A)){A.forEach((e=>s.conflicts(t,e)))}else{o[t].push(A)}}};s.getConflicting=()=>o;s.conflicting=function conflictingFn(n){Object.keys(n).forEach((e=>{if(o[e]){o[e].forEach((A=>{if(A&&n[e]!==undefined&&n[A]!==undefined){t.fail(r("Arguments %s and %s are mutually exclusive",e,A))}}))}}));if(e.getInternalMethods().getParserConfiguration()["strip-dashed"]){Object.keys(o).forEach((e=>{o[e].forEach((s=>{if(s&&n[A.Parser.camelCase(e)]!==undefined&&n[A.Parser.camelCase(s)]!==undefined){t.fail(r("Arguments %s and %s are mutually exclusive",e,s))}}))}))}};s.recommendCommands=function recommendCommands(e,A){const n=3;A=A.sort(((e,t)=>t.length-e.length));let s=null;let i=Infinity;for(let t=0,r;(r=A[t])!==undefined;t++){const t=levenshtein(e,r);if(t<=n&&t!e[t]));o=objFilter(o,(t=>!e[t]));return s};const a=[];s.freeze=function freeze(){a.push({implied:i,conflicting:o})};s.unfreeze=function unfreeze(){const e=a.pop();assertNotStrictEqual(e,undefined,A);({implied:i,conflicting:o}=e)};return s}let ce=[];let le;function applyExtends(e,t,A,r){le=r;let n={};if(Object.prototype.hasOwnProperty.call(e,"extends")){if(typeof e.extends!=="string")return n;const s=/\.json|\..*rc$/.test(e.extends);let i=null;if(!s){try{i=import.meta.resolve(e.extends)}catch(t){return e}}else{i=getPathToDefaultConfig(t,e.extends)}checkForCircularExtends(i);ce.push(i);n=s?JSON.parse(le.readFileSync(i,"utf8")):r.require(e.extends);delete e.extends;n=applyExtends(n,le.path.dirname(i),A,le)}ce=[];return A?mergeDeep(n,e):Object.assign({},n,e)}function checkForCircularExtends(e){if(ce.indexOf(e)>-1){throw new YError(`Circular extended configurations: '${e}'.`)}}function getPathToDefaultConfig(e,t){return le.path.resolve(e,t)}function mergeDeep(e,t){const A={};function isObject(e){return e&&typeof e==="object"&&!Array.isArray(e)}Object.assign(A,e);for(const r of Object.keys(t)){if(isObject(t[r])&&isObject(A[r])){A[r]=mergeDeep(e[r],t[r])}else{A[r]=t[r]}}return A}var ue=undefined&&undefined.__classPrivateFieldSet||function(e,t,A,r,n){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof t==="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?n.call(e,A):n?n.value=A:t.set(e,A),A};var ge=undefined&&undefined.__classPrivateFieldGet||function(e,t,A,r){if(A==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof t==="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return A==="m"?r:A==="a"?r.call(e):r?r.value:t.get(e)};var he,Ee,fe,de,Ce,Qe,Be,Ie,pe,De,me,ye,we,Fe,be,ke,Re,Se,Ne,Me,Ue,Le,ve,Te,xe,Ye,He,Ge,Oe,Je,Ve,Pe,We,_e,qe;function YargsFactory(e){return(t=[],A=e.process.cwd(),r)=>{const n=new YargsInstance(t,A,r,e);Object.defineProperty(n,"argv",{get:()=>n.parse(),enumerable:true});n.help();n.version();return n}}const je=Symbol("copyDoubleDash");const $e=Symbol("copyDoubleDash");const ze=Symbol("deleteFromParserHintObject");const Ze=Symbol("emitWarning");const Ke=Symbol("freeze");const Xe=Symbol("getDollarZero");const et=Symbol("getParserConfiguration");const tt=Symbol("getUsageConfiguration");const At=Symbol("guessLocale");const rt=Symbol("guessVersion");const nt=Symbol("parsePositionalNumbers");const st=Symbol("pkgUp");const it=Symbol("populateParserHintArray");const ot=Symbol("populateParserHintSingleValueDictionary");const at=Symbol("populateParserHintArrayDictionary");const ct=Symbol("populateParserHintDictionary");const ut=Symbol("sanitizeKey");const ht=Symbol("setKey");const Et=Symbol("unfreeze");const ft=Symbol("validateAsync");const dt=Symbol("getCommandInstance");const Ct=Symbol("getContext");const Qt=Symbol("getHasOutput");const Bt=Symbol("getLoggerInstance");const It=Symbol("getParseContext");const pt=Symbol("getUsageInstance");const Dt=Symbol("getValidationInstance");const mt=Symbol("hasParseCallback");const yt=Symbol("isGlobalContext");const wt=Symbol("postProcess");const Ft=Symbol("rebase");const bt=Symbol("reset");const kt=Symbol("runYargsParserAndExecuteCommands");const Rt=Symbol("runValidation");const St=Symbol("setHasOutput");const Nt=Symbol("kTrackManuallySetKeys");const Mt="en_US";class YargsInstance{constructor(e=[],t,A,r){this.customScriptName=false;this.parsed=false;he.set(this,void 0);Ee.set(this,void 0);fe.set(this,{commands:[],fullCommands:[]});de.set(this,null);Ce.set(this,null);Qe.set(this,"show-hidden");Be.set(this,null);Ie.set(this,true);pe.set(this,{});De.set(this,true);me.set(this,[]);ye.set(this,void 0);we.set(this,{});Fe.set(this,false);be.set(this,null);ke.set(this,true);Re.set(this,void 0);Se.set(this,"");Ne.set(this,void 0);Me.set(this,void 0);Ue.set(this,{});Le.set(this,null);ve.set(this,null);Te.set(this,{});xe.set(this,{});Ye.set(this,void 0);He.set(this,false);Ge.set(this,void 0);Oe.set(this,false);Je.set(this,false);Ve.set(this,false);Pe.set(this,void 0);We.set(this,{});_e.set(this,null);qe.set(this,void 0);ue(this,Ge,r,"f");ue(this,Ye,e,"f");ue(this,Ee,t,"f");ue(this,Me,A,"f");ue(this,ye,new GlobalMiddleware(this),"f");this.$0=this[Xe]();this[bt]();ue(this,he,ge(this,he,"f"),"f");ue(this,Pe,ge(this,Pe,"f"),"f");ue(this,qe,ge(this,qe,"f"),"f");ue(this,Ne,ge(this,Ne,"f"),"f");ge(this,Ne,"f").showHiddenOpt=ge(this,Qe,"f");ue(this,Re,this[$e](),"f");ge(this,Ge,"f").y18n.setLocale(Mt)}addHelpOpt(e,t){const A="help";argsert("[string|boolean] [string]",[e,t],arguments.length);if(ge(this,be,"f")){this[ze](ge(this,be,"f"));ue(this,be,null,"f")}if(e===false&&t===undefined)return this;ue(this,be,typeof e==="string"?e:A,"f");this.boolean(ge(this,be,"f"));this.describe(ge(this,be,"f"),t||ge(this,Pe,"f").deferY18nLookup("Show help"));return this}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){argsert("[string|boolean] [string]",[e,t],arguments.length);if(e===false&&t===undefined)return this;const A=typeof e==="string"?e:ge(this,Qe,"f");this.boolean(A);this.describe(A,t||ge(this,Pe,"f").deferY18nLookup("Show hidden options"));ge(this,Ne,"f").showHiddenOpt=A;return this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){argsert("