putitoutthere 0.3.26 → 0.3.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action.d.ts +2 -6
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +17 -23
- package/dist/action.js.map +1 -1
- package/dist/advance-floating-major.d.ts +3 -15
- package/dist/advance-floating-major.d.ts.map +1 -1
- package/dist/advance-floating-major.js +3 -15
- package/dist/advance-floating-major.js.map +1 -1
- package/dist/advance-v0.d.ts +3 -11
- package/dist/advance-v0.d.ts.map +1 -1
- package/dist/advance-v0.js +3 -11
- package/dist/advance-v0.js.map +1 -1
- package/dist/build-requires-declares.d.ts.map +1 -1
- package/dist/build-requires-declares.js +3 -16
- package/dist/build-requires-declares.js.map +1 -1
- package/dist/cargo-dep-entries.d.ts +4 -12
- package/dist/cargo-dep-entries.d.ts.map +1 -1
- package/dist/cargo-dep-entries.js +4 -12
- package/dist/cargo-dep-entries.js.map +1 -1
- package/dist/cascade.d.ts +4 -22
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +4 -22
- package/dist/cascade.js.map +1 -1
- package/dist/check-crate-size.d.ts +4 -14
- package/dist/check-crate-size.d.ts.map +1 -1
- package/dist/check-crate-size.js +4 -14
- package/dist/check-crate-size.js.map +1 -1
- package/dist/check.d.ts +4 -23
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +4 -23
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +3 -41
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -41
- package/dist/cli.js.map +1 -1
- package/dist/completeness.d.ts +4 -13
- package/dist/completeness.d.ts.map +1 -1
- package/dist/completeness.js +4 -13
- package/dist/completeness.js.map +1 -1
- package/dist/config.d.ts +4 -12
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -12
- package/dist/config.js.map +1 -1
- package/dist/emit-plan-outputs.d.ts +4 -18
- package/dist/emit-plan-outputs.d.ts.map +1 -1
- package/dist/emit-plan-outputs.js +4 -18
- package/dist/emit-plan-outputs.js.map +1 -1
- package/dist/emit-release-outputs.d.ts +4 -17
- package/dist/emit-release-outputs.d.ts.map +1 -1
- package/dist/emit-release-outputs.js +4 -17
- package/dist/emit-release-outputs.js.map +1 -1
- package/dist/ensure-tag.d.ts +13 -9
- package/dist/ensure-tag.d.ts.map +1 -1
- package/dist/ensure-tag.js +25 -13
- package/dist/ensure-tag.js.map +1 -1
- package/dist/env.d.ts +8 -23
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +11 -40
- package/dist/env.js.map +1 -1
- package/dist/error-codes.d.ts +14 -27
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +15 -27
- package/dist/error-codes.js.map +1 -1
- package/dist/fold-action-bundle.d.ts +4 -20
- package/dist/fold-action-bundle.d.ts.map +1 -1
- package/dist/fold-action-bundle.js +4 -20
- package/dist/fold-action-bundle.js.map +1 -1
- package/dist/force-move-tag.d.ts +4 -13
- package/dist/force-move-tag.d.ts.map +1 -1
- package/dist/force-move-tag.js +4 -13
- package/dist/force-move-tag.js.map +1 -1
- package/dist/git.d.ts +15 -16
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +19 -16
- package/dist/git.js.map +1 -1
- package/dist/glob.d.ts +3 -10
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +3 -10
- package/dist/glob.js.map +1 -1
- package/dist/handlers/classify-npm-view-failure.d.ts +4 -30
- package/dist/handlers/classify-npm-view-failure.d.ts.map +1 -1
- package/dist/handlers/classify-npm-view-failure.js +7 -38
- package/dist/handlers/classify-npm-view-failure.js.map +1 -1
- package/dist/handlers/crates.d.ts +4 -35
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +8 -47
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/first-file-under.d.ts +3 -11
- package/dist/handlers/first-file-under.d.ts.map +1 -1
- package/dist/handlers/first-file-under.js +3 -11
- package/dist/handlers/first-file-under.js.map +1 -1
- package/dist/handlers/match-first-publish-tp-rejection.d.ts +4 -16
- package/dist/handlers/match-first-publish-tp-rejection.d.ts.map +1 -1
- package/dist/handlers/match-first-publish-tp-rejection.js +4 -16
- package/dist/handlers/match-first-publish-tp-rejection.js.map +1 -1
- package/dist/handlers/match-npm-name-too-similar.d.ts +4 -25
- package/dist/handlers/match-npm-name-too-similar.d.ts.map +1 -1
- package/dist/handlers/match-npm-name-too-similar.js +4 -25
- package/dist/handlers/match-npm-name-too-similar.js.map +1 -1
- package/dist/handlers/match-tlog-duplicate.d.ts +4 -13
- package/dist/handlers/match-tlog-duplicate.d.ts.map +1 -1
- package/dist/handlers/match-tlog-duplicate.js +4 -13
- package/dist/handlers/match-tlog-duplicate.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts +11 -46
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +11 -46
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts +3 -7
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +11 -45
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.d.ts +5 -37
- package/dist/handlers/pypi.d.ts.map +1 -1
- package/dist/handlers/pypi.js +5 -37
- package/dist/handlers/pypi.js.map +1 -1
- package/dist/handlers/scan-dirty-outside-manifest.d.ts +4 -11
- package/dist/handlers/scan-dirty-outside-manifest.d.ts.map +1 -1
- package/dist/handlers/scan-dirty-outside-manifest.js +4 -11
- package/dist/handlers/scan-dirty-outside-manifest.js.map +1 -1
- package/dist/is-within-dir.d.ts +3 -5
- package/dist/is-within-dir.d.ts.map +1 -1
- package/dist/is-within-dir.js +3 -5
- package/dist/is-within-dir.js.map +1 -1
- package/dist/log.d.ts +6 -33
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +10 -57
- package/dist/log.js.map +1 -1
- package/dist/manylinux-for-triple.d.ts +4 -6
- package/dist/manylinux-for-triple.d.ts.map +1 -1
- package/dist/manylinux-for-triple.js +4 -6
- package/dist/manylinux-for-triple.js.map +1 -1
- package/dist/must-get.d.ts +3 -14
- package/dist/must-get.d.ts.map +1 -1
- package/dist/must-get.js +3 -14
- package/dist/must-get.js.map +1 -1
- package/dist/normalize-artifacts.d.ts +4 -19
- package/dist/normalize-artifacts.d.ts.map +1 -1
- package/dist/normalize-artifacts.js +4 -19
- package/dist/normalize-artifacts.js.map +1 -1
- package/dist/normalize-dist-name.d.ts +4 -13
- package/dist/normalize-dist-name.d.ts.map +1 -1
- package/dist/normalize-dist-name.js +4 -13
- package/dist/normalize-dist-name.js.map +1 -1
- package/dist/packages-by-name.d.ts +4 -12
- package/dist/packages-by-name.d.ts.map +1 -1
- package/dist/packages-by-name.js +4 -12
- package/dist/packages-by-name.js.map +1 -1
- package/dist/parse-reconcile-expect.d.ts +2 -5
- package/dist/parse-reconcile-expect.d.ts.map +1 -1
- package/dist/parse-reconcile-expect.js +2 -5
- package/dist/parse-reconcile-expect.js.map +1 -1
- package/dist/plan-skew.d.ts +4 -8
- package/dist/plan-skew.d.ts.map +1 -1
- package/dist/plan-skew.js +4 -8
- package/dist/plan-skew.js.map +1 -1
- package/dist/plan-status-types.d.ts +3 -6
- package/dist/plan-status-types.d.ts.map +1 -1
- package/dist/plan-status-types.js +3 -6
- package/dist/plan-status-types.js.map +1 -1
- package/dist/plan-status.d.ts +5 -18
- package/dist/plan-status.d.ts.map +1 -1
- package/dist/plan-status.js +5 -18
- package/dist/plan-status.js.map +1 -1
- package/dist/plan.d.ts +4 -8
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +8 -22
- package/dist/plan.js.map +1 -1
- package/dist/preflight.d.ts +16 -62
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +16 -62
- package/dist/preflight.js.map +1 -1
- package/dist/publish-progress.d.ts +4 -17
- package/dist/publish-progress.d.ts.map +1 -1
- package/dist/publish-progress.js +4 -17
- package/dist/publish-progress.js.map +1 -1
- package/dist/publish.d.ts +4 -18
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +4 -18
- package/dist/publish.js.map +1 -1
- package/dist/pypi-version-source.d.ts +3 -31
- package/dist/pypi-version-source.d.ts.map +1 -1
- package/dist/pypi-version-source.js +3 -31
- package/dist/pypi-version-source.js.map +1 -1
- package/dist/python-versions.d.ts +4 -13
- package/dist/python-versions.d.ts.map +1 -1
- package/dist/python-versions.js +4 -13
- package/dist/python-versions.js.map +1 -1
- package/dist/reconcile-expect.d.ts +4 -20
- package/dist/reconcile-expect.d.ts.map +1 -1
- package/dist/reconcile-expect.js +4 -20
- package/dist/reconcile-expect.js.map +1 -1
- package/dist/reconcile-skip-warnings.d.ts +21 -0
- package/dist/reconcile-skip-warnings.d.ts.map +1 -0
- package/dist/reconcile-skip-warnings.js +24 -0
- package/dist/reconcile-skip-warnings.js.map +1 -0
- package/dist/reconcile-types.d.ts +30 -3
- package/dist/reconcile-types.d.ts.map +1 -1
- package/dist/reconcile-types.js +3 -3
- package/dist/reconcile.d.ts +11 -2
- package/dist/reconcile.d.ts.map +1 -1
- package/dist/reconcile.js +31 -8
- package/dist/reconcile.js.map +1 -1
- package/dist/release-github/gh-release-create.d.ts +4 -7
- package/dist/release-github/gh-release-create.d.ts.map +1 -1
- package/dist/release-github/gh-release-create.js +4 -7
- package/dist/release-github/gh-release-create.js.map +1 -1
- package/dist/release-github/gh-release-exists.d.ts +4 -8
- package/dist/release-github/gh-release-exists.d.ts.map +1 -1
- package/dist/release-github/gh-release-exists.js +4 -8
- package/dist/release-github/gh-release-exists.js.map +1 -1
- package/dist/release-github/index.d.ts +4 -29
- package/dist/release-github/index.d.ts.map +1 -1
- package/dist/release-github/index.js +4 -29
- package/dist/release-github/index.js.map +1 -1
- package/dist/release-packages.d.ts +4 -16
- package/dist/release-packages.d.ts.map +1 -1
- package/dist/release-packages.js +4 -16
- package/dist/release-packages.js.map +1 -1
- package/dist/replace-cargo-version.d.ts +3 -30
- package/dist/replace-cargo-version.d.ts.map +1 -1
- package/dist/replace-cargo-version.js +3 -30
- package/dist/replace-cargo-version.js.map +1 -1
- package/dist/replace-dep-version-req.d.ts +8 -32
- package/dist/replace-dep-version-req.d.ts.map +1 -1
- package/dist/replace-dep-version-req.js +8 -32
- package/dist/replace-dep-version-req.js.map +1 -1
- package/dist/repo-relative-paths.d.ts +3 -14
- package/dist/repo-relative-paths.d.ts.map +1 -1
- package/dist/repo-relative-paths.js +3 -14
- package/dist/repo-relative-paths.js.map +1 -1
- package/dist/resolve/run-resolve.d.ts +4 -9
- package/dist/resolve/run-resolve.d.ts.map +1 -1
- package/dist/resolve/run-resolve.js +4 -9
- package/dist/resolve/run-resolve.js.map +1 -1
- package/dist/resolve-dep-dirs.d.ts +4 -14
- package/dist/resolve-dep-dirs.d.ts.map +1 -1
- package/dist/resolve-dep-dirs.js +4 -14
- package/dist/resolve-dep-dirs.js.map +1 -1
- package/dist/resolve-tag-commit.d.ts +4 -12
- package/dist/resolve-tag-commit.d.ts.map +1 -1
- package/dist/resolve-tag-commit.js +4 -12
- package/dist/resolve-tag-commit.js.map +1 -1
- package/dist/retry.d.ts +4 -16
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +4 -16
- package/dist/retry.js.map +1 -1
- package/dist/status-classify.d.ts +3 -6
- package/dist/status-classify.d.ts.map +1 -1
- package/dist/status-classify.js +3 -6
- package/dist/status-classify.js.map +1 -1
- package/dist/status.d.ts +4 -18
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +4 -18
- package/dist/status.js.map +1 -1
- package/dist/tag-template.d.ts +4 -14
- package/dist/tag-template.d.ts.map +1 -1
- package/dist/tag-template.js +4 -14
- package/dist/tag-template.js.map +1 -1
- package/dist/to-error.d.ts +4 -13
- package/dist/to-error.d.ts.map +1 -1
- package/dist/to-error.js +4 -13
- package/dist/to-error.js.map +1 -1
- package/dist/trailer.d.ts +4 -17
- package/dist/trailer.d.ts.map +1 -1
- package/dist/trailer.js +4 -17
- package/dist/trailer.js.map +1 -1
- package/dist/types.d.ts +11 -32
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -6
- package/dist/types.js.map +1 -1
- package/dist/unpublished-kinds.d.ts +4 -15
- package/dist/unpublished-kinds.d.ts.map +1 -1
- package/dist/unpublished-kinds.js +4 -15
- package/dist/unpublished-kinds.js.map +1 -1
- package/dist/utils/bound-capture.d.ts +4 -8
- package/dist/utils/bound-capture.d.ts.map +1 -1
- package/dist/utils/bound-capture.js +4 -8
- package/dist/utils/bound-capture.js.map +1 -1
- package/dist/utils/elide-middle.d.ts +4 -19
- package/dist/utils/elide-middle.d.ts.map +1 -1
- package/dist/utils/elide-middle.js +4 -19
- package/dist/utils/elide-middle.js.map +1 -1
- package/dist/utils/find-exec-error.d.ts.map +1 -1
- package/dist/utils/find-exec-error.js +4 -12
- package/dist/utils/find-exec-error.js.map +1 -1
- package/dist/utils/flush-stdio.d.ts +4 -11
- package/dist/utils/flush-stdio.d.ts.map +1 -1
- package/dist/utils/flush-stdio.js +4 -11
- package/dist/utils/flush-stdio.js.map +1 -1
- package/dist/utils/list-files-recursive.d.ts +3 -7
- package/dist/utils/list-files-recursive.d.ts.map +1 -1
- package/dist/utils/list-files-recursive.js +3 -7
- package/dist/utils/list-files-recursive.js.map +1 -1
- package/dist/utils/to-posix-path.d.ts +4 -7
- package/dist/utils/to-posix-path.d.ts.map +1 -1
- package/dist/utils/to-posix-path.js +4 -7
- package/dist/utils/to-posix-path.js.map +1 -1
- package/dist/verbose.d.ts +4 -10
- package/dist/verbose.d.ts.map +1 -1
- package/dist/verbose.js +4 -10
- package/dist/verbose.js.map +1 -1
- package/dist/verify/bundle-cli/compute-stage-suffix.d.ts +4 -11
- package/dist/verify/bundle-cli/compute-stage-suffix.d.ts.map +1 -1
- package/dist/verify/bundle-cli/compute-stage-suffix.js +4 -11
- package/dist/verify/bundle-cli/compute-stage-suffix.js.map +1 -1
- package/dist/verify/bundle-cli/index.d.ts +4 -20
- package/dist/verify/bundle-cli/index.d.ts.map +1 -1
- package/dist/verify/bundle-cli/index.js +4 -20
- package/dist/verify/bundle-cli/index.js.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts +4 -12
- package/dist/verify/bundle-cli/read-python-source.d.ts.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.js +4 -12
- package/dist/verify/bundle-cli/read-python-source.js.map +1 -1
- package/dist/verify/crate/find-crate-file.d.ts +2 -6
- package/dist/verify/crate/find-crate-file.d.ts.map +1 -1
- package/dist/verify/crate/find-crate-file.js +2 -6
- package/dist/verify/crate/find-crate-file.js.map +1 -1
- package/dist/verify/crate/has-crate-source.d.ts +3 -5
- package/dist/verify/crate/has-crate-source.d.ts.map +1 -1
- package/dist/verify/crate/has-crate-source.js +3 -5
- package/dist/verify/crate/has-crate-source.js.map +1 -1
- package/dist/verify/crate/index.d.ts +4 -16
- package/dist/verify/crate/index.d.ts.map +1 -1
- package/dist/verify/crate/index.js +4 -16
- package/dist/verify/crate/index.js.map +1 -1
- package/dist/verify/npm-tarball/download.d.ts +3 -9
- package/dist/verify/npm-tarball/download.d.ts.map +1 -1
- package/dist/verify/npm-tarball/download.js +3 -9
- package/dist/verify/npm-tarball/download.js.map +1 -1
- package/dist/verify/npm-tarball/index.d.ts +4 -13
- package/dist/verify/npm-tarball/index.d.ts.map +1 -1
- package/dist/verify/npm-tarball/index.js +4 -13
- package/dist/verify/npm-tarball/index.js.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts +4 -8
- package/dist/verify/npm-tarball/local-dir-state.d.ts.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.js +4 -8
- package/dist/verify/npm-tarball/local-dir-state.js.map +1 -1
- package/dist/verify/npm-tarball/main.d.ts +4 -14
- package/dist/verify/npm-tarball/main.d.ts.map +1 -1
- package/dist/verify/npm-tarball/main.js +4 -14
- package/dist/verify/npm-tarball/main.js.map +1 -1
- package/dist/verify/npm-tarball/resolve-url.d.ts +4 -11
- package/dist/verify/npm-tarball/resolve-url.d.ts.map +1 -1
- package/dist/verify/npm-tarball/resolve-url.js +4 -11
- package/dist/verify/npm-tarball/resolve-url.js.map +1 -1
- package/dist/verify/npm-tarball/triple.d.ts +4 -26
- package/dist/verify/npm-tarball/triple.d.ts.map +1 -1
- package/dist/verify/npm-tarball/triple.js +4 -26
- package/dist/verify/npm-tarball/triple.js.map +1 -1
- package/dist/verify/posture.d.ts +4 -13
- package/dist/verify/posture.d.ts.map +1 -1
- package/dist/verify/posture.js +4 -13
- package/dist/verify/posture.js.map +1 -1
- package/dist/verify/wheel/index.d.ts +4 -17
- package/dist/verify/wheel/index.d.ts.map +1 -1
- package/dist/verify/wheel/index.js +4 -17
- package/dist/verify/wheel/index.js.map +1 -1
- package/dist/verify/wheel/manylinux-tag-patterns.d.ts +4 -6
- package/dist/verify/wheel/manylinux-tag-patterns.d.ts.map +1 -1
- package/dist/verify/wheel/manylinux-tag-patterns.js +4 -6
- package/dist/verify/wheel/manylinux-tag-patterns.js.map +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts +4 -8
- package/dist/verify/wheel/read-wheel-version.d.ts.map +1 -1
- package/dist/verify/wheel/read-wheel-version.js +4 -8
- package/dist/verify/wheel/read-wheel-version.js.map +1 -1
- package/dist/verify/wheel/read-zip-entry.d.ts +3 -8
- package/dist/verify/wheel/read-zip-entry.d.ts.map +1 -1
- package/dist/verify/wheel/read-zip-entry.js +3 -8
- package/dist/verify/wheel/read-zip-entry.js.map +1 -1
- package/dist/version.d.ts +4 -12
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +4 -12
- package/dist/version.js.map +1 -1
- package/dist/wheel-abi.d.ts +5 -28
- package/dist/wheel-abi.d.ts.map +1 -1
- package/dist/wheel-abi.js +5 -28
- package/dist/wheel-abi.js.map +1 -1
- package/dist/write-crate-version.d.ts +4 -17
- package/dist/write-crate-version.d.ts.map +1 -1
- package/dist/write-crate-version.js +4 -17
- package/dist/write-crate-version.js.map +1 -1
- package/dist/write-dependent-version-reqs.d.ts +8 -43
- package/dist/write-dependent-version-reqs.d.ts.map +1 -1
- package/dist/write-dependent-version-reqs.js +8 -43
- package/dist/write-dependent-version-reqs.js.map +1 -1
- package/dist/write-embedded-crate-versions.d.ts +9 -40
- package/dist/write-embedded-crate-versions.d.ts.map +1 -1
- package/dist/write-embedded-crate-versions.js +9 -40
- package/dist/write-embedded-crate-versions.js.map +1 -1
- package/dist/write-launcher.d.ts +7 -23
- package/dist/write-launcher.d.ts.map +1 -1
- package/dist/write-launcher.js +11 -37
- package/dist/write-launcher.js.map +1 -1
- package/dist/write-resolved-cargo-version.d.ts +4 -12
- package/dist/write-resolved-cargo-version.d.ts.map +1 -1
- package/dist/write-resolved-cargo-version.js +4 -12
- package/dist/write-resolved-cargo-version.js.map +1 -1
- package/dist/write-version.d.ts +8 -29
- package/dist/write-version.d.ts.map +1 -1
- package/dist/write-version.js +8 -29
- package/dist/write-version.js.map +1 -1
- package/package.json +3 -3
package/dist/ensure-tag.js
CHANGED
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Auto-heal a missing release tag (#407).
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* already there.
|
|
2
|
+
* Auto-heal a missing release tag (#407). A half-failed earlier run can leave
|
|
3
|
+
* a version published but untagged, which strands the package — piot derives
|
|
4
|
+
* "last released" from tags. Writes and pushes the tag at `commit` when
|
|
5
|
+
* `origin` does not have it yet. Runs on both the fresh-publish and
|
|
6
|
+
* already-published branches.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Idempotency is checked against the remote, not local tags (#717): a run
|
|
9
|
+
* that created the tag locally and then failed to push it leaves a local
|
|
10
|
+
* tag with nothing on `origin`. Checking `tagList` (local-only) would read
|
|
11
|
+
* that as "already done" and never retry the push — "tried and failed"
|
|
12
|
+
* would be indistinguishable from "succeeded" for the rest of that working
|
|
13
|
+
* tree's life. A push failure now propagates instead of being downgraded to
|
|
14
|
+
* a warning, for the same reason: `publish` and `reconcile` must not report
|
|
15
|
+
* success for a version the remote has no tag for.
|
|
12
16
|
*/
|
|
13
|
-
import {
|
|
17
|
+
import { ErrorCodes } from './error-codes.js';
|
|
18
|
+
import { createTag, pushTag, remoteTagExists, tagList } from './git.js';
|
|
14
19
|
import { formatTag } from './tag-template.js';
|
|
15
20
|
export async function ensureTag(tagFormat, name, version, commit, opts, log) {
|
|
16
21
|
const tagName = formatTag(tagFormat, { name, version });
|
|
17
|
-
if (
|
|
22
|
+
if (await remoteTagExists(tagName, opts)) {
|
|
18
23
|
return;
|
|
19
24
|
}
|
|
20
|
-
await
|
|
25
|
+
if ((await tagList(tagName, opts)).length === 0) {
|
|
26
|
+
await createTag(tagName, commit, { cwd: opts.cwd, message: `Release ${tagName}` });
|
|
27
|
+
}
|
|
28
|
+
log.info(`publish: pushing tag ${tagName}`);
|
|
21
29
|
try {
|
|
22
30
|
await pushTag(tagName, opts);
|
|
23
31
|
}
|
|
24
32
|
catch (err) {
|
|
25
|
-
|
|
33
|
+
throw new Error(`[${ErrorCodes.TAG_PUSH_FAILED}] ${name}@${version} is on the registry, but pushing tag ` +
|
|
34
|
+
`${tagName} failed: ${err instanceof Error ? err.message : String(err)}. The registry ` +
|
|
35
|
+
`write already happened — do not re-run publish for this version. Fix the push problem ` +
|
|
36
|
+
`(origin, auth, a diverged remote tag) and rerun \`putitoutthere reconcile\`, which ` +
|
|
37
|
+
`backfills the tag without re-publishing.`, { cause: err });
|
|
26
38
|
}
|
|
27
39
|
}
|
|
28
40
|
//# sourceMappingURL=ensure-tag.js.map
|
package/dist/ensure-tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-tag.js","sourceRoot":"","sources":["../src/ensure-tag.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ensure-tag.js","sourceRoot":"","sources":["../src/ensure-tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,IAAY,EACZ,OAAe,EACf,MAAc,EACd,IAAqB,EACrB,GAAW;IAEX,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAAA,OAAO;IAAA,CAAC;IACnD,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,OAAO,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,IAAI,UAAU,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,uCAAuC;YACvF,GAAG,OAAO,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB;YACvF,wFAAwF;YACxF,qFAAqF;YACrF,0CAA0C,EAC5C,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/env.d.ts
CHANGED
|
@@ -1,30 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared env-var helpers.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* when `a === ''`: nullish coalescing only falls through on
|
|
7
|
-
* null/undefined, so `Boolean('' ?? 'real-token')` is `false`. CI
|
|
8
|
-
* harnesses often set `FOO: process.env.FOO ?? ''` to forward optional
|
|
9
|
-
* env, which makes empty strings a common runtime reality.
|
|
10
|
-
*
|
|
11
|
-
* `nonEmpty()` normalizes that by treating empty strings as unset, so
|
|
12
|
-
* the coalesce falls through correctly.
|
|
2
|
+
* Shared env-var helpers. Handlers read auth/OIDC vars out of both `ctx.env`
|
|
3
|
+
* and `process.env`, where `a ?? b` breaks on `a === ''` — nullish coalescing
|
|
4
|
+
* only falls through on null/undefined, and CI harnesses commonly forward
|
|
5
|
+
* optional env as `FOO: process.env.FOO ?? ''`. `nonEmpty()` normalizes that.
|
|
13
6
|
*/
|
|
14
7
|
export declare function nonEmpty(v: string | undefined): string | undefined;
|
|
15
8
|
/**
|
|
16
|
-
* Build a minimal env for a subprocess spawn
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* 2. Everything in `ctxEnv` (workflow-declared passthroughs — this is
|
|
21
|
-
* where tokens and OIDC vars live).
|
|
22
|
-
* 3. Any `extras` the handler needs to set (e.g. `TWINE_PASSWORD`).
|
|
23
|
-
*
|
|
24
|
-
* `ctxEnv` and `extras` override the baseline. Undefined values in
|
|
25
|
-
* either are dropped so a handler can explicitly omit a var.
|
|
26
|
-
*
|
|
27
|
-
* #138.
|
|
9
|
+
* Build a minimal env for a subprocess spawn: the `DEFAULT_ENV_PASSTHROUGH`
|
|
10
|
+
* subset of `process.env`, then `ctxEnv` (workflow-declared passthroughs,
|
|
11
|
+
* where tokens and OIDC vars live), then handler `extras`. Later layers win;
|
|
12
|
+
* undefined values are dropped so a handler can explicitly omit a var. #138.
|
|
28
13
|
*/
|
|
29
14
|
export declare function buildSubprocessEnv(ctxEnv?: Record<string, string | undefined>, extras?: Record<string, string | undefined>): Record<string, string>;
|
|
30
15
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAElE;AAuCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,EAC/C,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB"}
|
package/dist/env.js
CHANGED
|
@@ -1,38 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared env-var helpers.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* when `a === ''`: nullish coalescing only falls through on
|
|
7
|
-
* null/undefined, so `Boolean('' ?? 'real-token')` is `false`. CI
|
|
8
|
-
* harnesses often set `FOO: process.env.FOO ?? ''` to forward optional
|
|
9
|
-
* env, which makes empty strings a common runtime reality.
|
|
10
|
-
*
|
|
11
|
-
* `nonEmpty()` normalizes that by treating empty strings as unset, so
|
|
12
|
-
* the coalesce falls through correctly.
|
|
2
|
+
* Shared env-var helpers. Handlers read auth/OIDC vars out of both `ctx.env`
|
|
3
|
+
* and `process.env`, where `a ?? b` breaks on `a === ''` — nullish coalescing
|
|
4
|
+
* only falls through on null/undefined, and CI harnesses commonly forward
|
|
5
|
+
* optional env as `FOO: process.env.FOO ?? ''`. `nonEmpty()` normalizes that.
|
|
13
6
|
*/
|
|
14
7
|
export function nonEmpty(v) {
|
|
15
8
|
return v && v.length > 0 ? v : undefined;
|
|
16
9
|
}
|
|
17
10
|
/**
|
|
18
11
|
* Env-var names passed through from the parent `process.env` to every
|
|
19
|
-
* subprocess (cargo / twine / npm / git).
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* step, a user's local AWS_* creds, the whole lot — into publish
|
|
23
|
-
* tooling that has no business seeing them.
|
|
24
|
-
*
|
|
25
|
-
* Entries here are the ones those tools actually need to function:
|
|
26
|
-
* - `PATH` executable resolution on every platform
|
|
27
|
-
* - `HOME`/`USERPROFILE` cargo/npm/pip config discovery
|
|
28
|
-
* - `TMPDIR`/`TEMP`/`TMP` scratch-space selection
|
|
29
|
-
* - `LANG`/`LC_*` locale for tools that format output
|
|
30
|
-
* - `SystemRoot`/`windir`/`ComSpec` Windows basics
|
|
31
|
-
* - `CARGO_HOME`/`RUSTUP_HOME` cargo/rustup data dirs
|
|
32
|
-
* - `npm_config_userconfig`/`NPM_CONFIG_USERCONFIG` npm config path
|
|
33
|
-
*
|
|
34
|
-
* Secrets are NOT forwarded via this allowlist; they come in through
|
|
35
|
-
* `ctx.env` explicit-passthrough (which the publish caller controls).
|
|
12
|
+
* subprocess (cargo / twine / npm / git). Deliberately minimal (#138): the
|
|
13
|
+
* default `{ ...process.env, ...ctx.env }` pattern leaks every unrelated
|
|
14
|
+
* secret on the runner. Secrets arrive only via `ctx.env` passthrough.
|
|
36
15
|
*/
|
|
37
16
|
const DEFAULT_ENV_PASSTHROUGH = [
|
|
38
17
|
'PATH',
|
|
@@ -65,18 +44,10 @@ const DEFAULT_ENV_PASSTHROUGH = [
|
|
|
65
44
|
'NPM_CONFIG_USERCONFIG',
|
|
66
45
|
];
|
|
67
46
|
/**
|
|
68
|
-
* Build a minimal env for a subprocess spawn
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* 2. Everything in `ctxEnv` (workflow-declared passthroughs — this is
|
|
73
|
-
* where tokens and OIDC vars live).
|
|
74
|
-
* 3. Any `extras` the handler needs to set (e.g. `TWINE_PASSWORD`).
|
|
75
|
-
*
|
|
76
|
-
* `ctxEnv` and `extras` override the baseline. Undefined values in
|
|
77
|
-
* either are dropped so a handler can explicitly omit a var.
|
|
78
|
-
*
|
|
79
|
-
* #138.
|
|
47
|
+
* Build a minimal env for a subprocess spawn: the `DEFAULT_ENV_PASSTHROUGH`
|
|
48
|
+
* subset of `process.env`, then `ctxEnv` (workflow-declared passthroughs,
|
|
49
|
+
* where tokens and OIDC vars live), then handler `extras`. Later layers win;
|
|
50
|
+
* undefined values are dropped so a handler can explicitly omit a var. #138.
|
|
80
51
|
*/
|
|
81
52
|
export function buildSubprocessEnv(ctxEnv = {}, extras = {}) {
|
|
82
53
|
const out = {};
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,QAAQ,CAAC,CAAqB;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,uBAAuB,GAAsB;IACjD,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,MAAM;IACN,KAAK;IACL,iBAAiB;IACjB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,cAAc;IACd,SAAS;IACT,iEAAiE;IACjE,4BAA4B;IAC5B,YAAY;IACZ,aAAa;IACb,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA6C,EAAE,EAC/C,SAA6C,EAAE;IAE/C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAA,CAAC;IAC7C,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAA,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAAA,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/error-codes.d.ts
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Stable error-code vocabulary.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* log, foreign LLM agents debugging a failed publish, the docs site
|
|
7
|
-
* deep-linking from a code to a recipe — can fingerprint the failure
|
|
8
|
-
* mode without parsing free-form prose.
|
|
9
|
-
*
|
|
10
|
-
* Codes are deliberately verbose. The string is the diagnostic; brevity
|
|
11
|
-
* here just creates ambiguity at a distance.
|
|
12
|
-
*
|
|
13
|
-
* Adding a new code: add it to BOTH `ErrorCodes` and `ALL_ERROR_CODES`;
|
|
14
|
-
* the test in `error-codes.test.ts` enforces parity. Once a code ships
|
|
15
|
-
* in a public-surfaced error message it becomes a stable identifier —
|
|
16
|
-
* rename only with a migration entry.
|
|
2
|
+
* Stable error-code vocabulary. User-facing errors and `::error::`
|
|
3
|
+
* annotations carry a code so observers can fingerprint a failure mode
|
|
4
|
+
* without parsing free-form prose. Add new codes to BOTH `ErrorCodes` and
|
|
5
|
+
* `ALL_ERROR_CODES` (parity is tested); a shipped code is a stable id.
|
|
17
6
|
*/
|
|
18
7
|
export declare const ErrorCodes: {
|
|
19
8
|
/** Generic auth failure when no registry token resolved. Used by
|
|
@@ -95,18 +84,10 @@ export declare const ErrorCodes: {
|
|
|
95
84
|
* vcs`. Either way the build backend has no way to compute a version
|
|
96
85
|
* at pack time. The fix is to wire up the plugin. #301, #696. */
|
|
97
86
|
readonly PYPI_DYNAMIC_VERSION_NO_BACKEND: "PIOT_PYPI_DYNAMIC_VERSION_NO_BACKEND";
|
|
98
|
-
/** A pypi package
|
|
99
|
-
* `[tool.hatch.version]`
|
|
100
|
-
*
|
|
101
|
-
* `source = "
|
|
102
|
-
* consulting `SETUPTOOLS_SCM_PRETEND_VERSION`, and no release step
|
|
103
|
-
* rewrites the file (`write-version` is maturin-only), so the wheel
|
|
104
|
-
* ships the committed literal rather than the planned version — and
|
|
105
|
-
* nothing fails. `agent-transcript-viewer` published `0.0.0` to PyPI
|
|
106
|
-
* this way while the plan said `0.1.0`. The fix is to switch the
|
|
107
|
-
* source to `"vcs"` (with `hatch-vcs` in `[build-system].requires`),
|
|
108
|
-
* which is why this is a separate code from
|
|
109
|
-
* `PYPI_DYNAMIC_VERSION_NO_BACKEND`. #696. */
|
|
87
|
+
/** A pypi package backs `dynamic = ["version"]` with a
|
|
88
|
+
* `[tool.hatch.version]` source reading a file in the tree (bare `path`
|
|
89
|
+
* or `source = "code"`): it ignores `SETUPTOOLS_SCM_PRETEND_VERSION`, so
|
|
90
|
+
* the wheel ships the committed literal. Fix: `source = "vcs"`. #696. */
|
|
110
91
|
readonly PYPI_HATCH_VERSION_PATH: "PIOT_PYPI_HATCH_VERSION_PATH";
|
|
111
92
|
/** A maturin pypi package declares `[package.bundle_cli]` but
|
|
112
93
|
* `[tool.maturin].include` does not cover the configured
|
|
@@ -170,6 +151,12 @@ export declare const ErrorCodes: {
|
|
|
170
151
|
* same source-visibility expectation underpins the trusted-publisher
|
|
171
152
|
* story on the other registries. */
|
|
172
153
|
readonly REPO_PRIVATE: "PIOT_REPO_PRIVATE";
|
|
154
|
+
/** `ensureTag` (#407) found a package live on the registry with no
|
|
155
|
+
* matching tag on `origin`, tried to write and push one, and the push
|
|
156
|
+
* failed. Thrown rather than downgraded to a warning (#717): a release
|
|
157
|
+
* is not done until its tag is visible on the remote, so `publish` and
|
|
158
|
+
* `reconcile` must not exit 0 having silently left one unpushed. */
|
|
159
|
+
readonly TAG_PUSH_FAILED: "PIOT_TAG_PUSH_FAILED";
|
|
173
160
|
};
|
|
174
161
|
export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
|
|
175
162
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,UAAU;IACrB;;;8CAG0C;;IAE1C;;;;;;kDAM8C;;IAE9C;;;;;0DAKsD;;IAEtD;;;;;;;2CAOuC;;IAEvC;;;;;;;;0EAQsE;;IAEtE;;;;;;iCAM6B;;IAE7B;;;;;;;;qDAQiD;;IAEjD;;;;;yBAKqB;;IAErB;;;;gBAIY;;IAEZ;;;;;;;sEAOkE;;IAElE;;;8EAG0E;;IAE1E;;;;kEAI8D;;IAE9D;;;;uEAImE;;IAEnE;;;;uBAImB;;IAEnB;;;;2BAIuB;;IAEvB;;;qEAGiE;;IAEjE;;;;;;kEAM8D;;IAE9D;;;;;;;8BAO0B;;IAE1B;;;;;;;gDAO4C;;IAE5C;;;;;yCAKqC;;IAErC;;;;yEAIqE;;CAE7D,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,SAAS,EAsB/C,CAAC"}
|
package/dist/error-codes.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Stable error-code vocabulary.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* log, foreign LLM agents debugging a failed publish, the docs site
|
|
7
|
-
* deep-linking from a code to a recipe — can fingerprint the failure
|
|
8
|
-
* mode without parsing free-form prose.
|
|
9
|
-
*
|
|
10
|
-
* Codes are deliberately verbose. The string is the diagnostic; brevity
|
|
11
|
-
* here just creates ambiguity at a distance.
|
|
12
|
-
*
|
|
13
|
-
* Adding a new code: add it to BOTH `ErrorCodes` and `ALL_ERROR_CODES`;
|
|
14
|
-
* the test in `error-codes.test.ts` enforces parity. Once a code ships
|
|
15
|
-
* in a public-surfaced error message it becomes a stable identifier —
|
|
16
|
-
* rename only with a migration entry.
|
|
2
|
+
* Stable error-code vocabulary. User-facing errors and `::error::`
|
|
3
|
+
* annotations carry a code so observers can fingerprint a failure mode
|
|
4
|
+
* without parsing free-form prose. Add new codes to BOTH `ErrorCodes` and
|
|
5
|
+
* `ALL_ERROR_CODES` (parity is tested); a shipped code is a stable id.
|
|
17
6
|
*/
|
|
18
7
|
export const ErrorCodes = {
|
|
19
8
|
/** Generic auth failure when no registry token resolved. Used by
|
|
@@ -95,18 +84,10 @@ export const ErrorCodes = {
|
|
|
95
84
|
* vcs`. Either way the build backend has no way to compute a version
|
|
96
85
|
* at pack time. The fix is to wire up the plugin. #301, #696. */
|
|
97
86
|
PYPI_DYNAMIC_VERSION_NO_BACKEND: 'PIOT_PYPI_DYNAMIC_VERSION_NO_BACKEND',
|
|
98
|
-
/** A pypi package
|
|
99
|
-
* `[tool.hatch.version]`
|
|
100
|
-
*
|
|
101
|
-
* `source = "
|
|
102
|
-
* consulting `SETUPTOOLS_SCM_PRETEND_VERSION`, and no release step
|
|
103
|
-
* rewrites the file (`write-version` is maturin-only), so the wheel
|
|
104
|
-
* ships the committed literal rather than the planned version — and
|
|
105
|
-
* nothing fails. `agent-transcript-viewer` published `0.0.0` to PyPI
|
|
106
|
-
* this way while the plan said `0.1.0`. The fix is to switch the
|
|
107
|
-
* source to `"vcs"` (with `hatch-vcs` in `[build-system].requires`),
|
|
108
|
-
* which is why this is a separate code from
|
|
109
|
-
* `PYPI_DYNAMIC_VERSION_NO_BACKEND`. #696. */
|
|
87
|
+
/** A pypi package backs `dynamic = ["version"]` with a
|
|
88
|
+
* `[tool.hatch.version]` source reading a file in the tree (bare `path`
|
|
89
|
+
* or `source = "code"`): it ignores `SETUPTOOLS_SCM_PRETEND_VERSION`, so
|
|
90
|
+
* the wheel ships the committed literal. Fix: `source = "vcs"`. #696. */
|
|
110
91
|
PYPI_HATCH_VERSION_PATH: 'PIOT_PYPI_HATCH_VERSION_PATH',
|
|
111
92
|
/** A maturin pypi package declares `[package.bundle_cli]` but
|
|
112
93
|
* `[tool.maturin].include` does not cover the configured
|
|
@@ -170,6 +151,12 @@ export const ErrorCodes = {
|
|
|
170
151
|
* same source-visibility expectation underpins the trusted-publisher
|
|
171
152
|
* story on the other registries. */
|
|
172
153
|
REPO_PRIVATE: 'PIOT_REPO_PRIVATE',
|
|
154
|
+
/** `ensureTag` (#407) found a package live on the registry with no
|
|
155
|
+
* matching tag on `origin`, tried to write and push one, and the push
|
|
156
|
+
* failed. Thrown rather than downgraded to a warning (#717): a release
|
|
157
|
+
* is not done until its tag is visible on the remote, so `publish` and
|
|
158
|
+
* `reconcile` must not exit 0 having silently left one unpushed. */
|
|
159
|
+
TAG_PUSH_FAILED: 'PIOT_TAG_PUSH_FAILED',
|
|
173
160
|
};
|
|
174
161
|
/**
|
|
175
162
|
* Iterable form of the codes. Walked by tests for uniqueness/format
|
|
@@ -196,5 +183,6 @@ export const ALL_ERROR_CODES = [
|
|
|
196
183
|
ErrorCodes.CRATES_PACKAGE_TOO_LARGE,
|
|
197
184
|
ErrorCodes.REPO_URL_MISMATCH,
|
|
198
185
|
ErrorCodes.REPO_PRIVATE,
|
|
186
|
+
ErrorCodes.TAG_PUSH_FAILED,
|
|
199
187
|
];
|
|
200
188
|
//# sourceMappingURL=error-codes.js.map
|
package/dist/error-codes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;;8CAG0C;IAC1C,aAAa,EAAE,oBAAoB;IACnC;;;;;;kDAM8C;IAC9C,kBAAkB,EAAE,yBAAyB;IAC7C;;;;;0DAKsD;IACtD,sBAAsB,EAAE,6BAA6B;IACrD;;;;;;;2CAOuC;IACvC,iBAAiB,EAAE,wBAAwB;IAC3C;;;;;;;;0EAQsE;IACtE,oBAAoB,EAAE,2BAA2B;IACjD;;;;;;iCAM6B;IAC7B,uBAAuB,EAAE,8BAA8B;IACvD;;;;;;;;qDAQiD;IACjD,mBAAmB,EAAE,0BAA0B;IAC/C;;;;;yBAKqB;IACrB,kBAAkB,EAAE,yBAAyB;IAC7C;;;;gBAIY;IACZ,2BAA2B,EAAE,kCAAkC;IAC/D;;;;;;;sEAOkE;IAClE,+BAA+B,EAAE,sCAAsC;IACvE;;;8EAG0E;IAC1E,uBAAuB,EAAE,8BAA8B;IACvD;;;;kEAI8D;IAC9D,4BAA4B,EAAE,mCAAmC;IACjE;;;;uEAImE;IACnE,oBAAoB,EAAE,2BAA2B;IACjD;;;;uBAImB;IACnB,kBAAkB,EAAE,yBAAyB;IAC7C;;;;2BAIuB;IACvB,2BAA2B,EAAE,kCAAkC;IAC/D;;;qEAGiE;IACjE,iCAAiC,EAAE,wCAAwC;IAC3E;;;;;;kEAM8D;IAC9D,gCAAgC,EAAE,uCAAuC;IACzE;;;;;;;8BAO0B;IAC1B,wBAAwB,EAAE,+BAA+B;IACzD;;;;;;;gDAO4C;IAC5C,iBAAiB,EAAE,wBAAwB;IAC3C;;;;;yCAKqC;IACrC,YAAY,EAAE,mBAAmB;IACjC;;;;yEAIqE;IACrE,eAAe,EAAE,sBAAsB;CAC/B,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAyB;IACnD,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,kBAAkB;IAC7B,UAAU,CAAC,sBAAsB;IACjC,UAAU,CAAC,iBAAiB;IAC5B,UAAU,CAAC,oBAAoB;IAC/B,UAAU,CAAC,uBAAuB;IAClC,UAAU,CAAC,mBAAmB;IAC9B,UAAU,CAAC,kBAAkB;IAC7B,UAAU,CAAC,2BAA2B;IACtC,UAAU,CAAC,+BAA+B;IAC1C,UAAU,CAAC,uBAAuB;IAClC,UAAU,CAAC,4BAA4B;IACvC,UAAU,CAAC,oBAAoB;IAC/B,UAAU,CAAC,kBAAkB;IAC7B,UAAU,CAAC,2BAA2B;IACtC,UAAU,CAAC,iCAAiC;IAC5C,UAAU,CAAC,gCAAgC;IAC3C,UAAU,CAAC,wBAAwB;IACnC,UAAU,CAAC,iBAAiB;IAC5B,UAAU,CAAC,YAAY;IACvB,UAAU,CAAC,eAAe;CAC3B,CAAC"}
|
|
@@ -1,24 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `putitoutthere fold-bundle` — synthesize the action-bundle commit
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `advance-v0.yml` carried inline (they differed only in the commit
|
|
7
|
-
* subject). `dist-action/` is gitignored on main and exists only on tag
|
|
8
|
-
* commits, so before a tag can point at a commit that has
|
|
9
|
-
* `dist-action/index.js`, the freshly-built bundle is staged and committed
|
|
10
|
-
* on top of HEAD.
|
|
11
|
-
*
|
|
12
|
-
* The new commit forwards the parent's full body under `subject` so any
|
|
13
|
-
* `release:` trailer the operator wrote survives into HEAD — otherwise the
|
|
14
|
-
* publish-time plan re-derivation reads a trailer-less bundle commit,
|
|
15
|
-
* defaults the bump to `patch`, and silently downgrades the release (the
|
|
16
|
-
* 0.2.0-landed-as-0.1.52 incident; notes/handoff/2026-04-24-dist-action.md).
|
|
17
|
-
*
|
|
18
|
-
* Throws when nothing is staged — `build:action` should always have
|
|
19
|
-
* produced output, so an empty index is an unexpected state the release
|
|
20
|
-
* must abort on rather than commit nothing (matches the bash
|
|
21
|
-
* `git diff --cached --quiet` guard).
|
|
2
|
+
* `putitoutthere fold-bundle` — synthesize the action-bundle commit (#446).
|
|
3
|
+
* `dist-action/` is gitignored on main, so the built bundle is staged and
|
|
4
|
+
* committed onto HEAD, forwarding the parent's body so a `release:` trailer
|
|
5
|
+
* survives — otherwise plan re-derivation silently downgrades to `patch`.
|
|
22
6
|
*/
|
|
23
7
|
export declare function foldActionBundle(opts: {
|
|
24
8
|
cwd: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold-action-bundle.d.ts","sourceRoot":"","sources":["../src/fold-action-bundle.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fold-action-bundle.d.ts","sourceRoot":"","sources":["../src/fold-action-bundle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9F"}
|
|
@@ -1,24 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `putitoutthere fold-bundle` — synthesize the action-bundle commit
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `advance-v0.yml` carried inline (they differed only in the commit
|
|
7
|
-
* subject). `dist-action/` is gitignored on main and exists only on tag
|
|
8
|
-
* commits, so before a tag can point at a commit that has
|
|
9
|
-
* `dist-action/index.js`, the freshly-built bundle is staged and committed
|
|
10
|
-
* on top of HEAD.
|
|
11
|
-
*
|
|
12
|
-
* The new commit forwards the parent's full body under `subject` so any
|
|
13
|
-
* `release:` trailer the operator wrote survives into HEAD — otherwise the
|
|
14
|
-
* publish-time plan re-derivation reads a trailer-less bundle commit,
|
|
15
|
-
* defaults the bump to `patch`, and silently downgrades the release (the
|
|
16
|
-
* 0.2.0-landed-as-0.1.52 incident; notes/handoff/2026-04-24-dist-action.md).
|
|
17
|
-
*
|
|
18
|
-
* Throws when nothing is staged — `build:action` should always have
|
|
19
|
-
* produced output, so an empty index is an unexpected state the release
|
|
20
|
-
* must abort on rather than commit nothing (matches the bash
|
|
21
|
-
* `git diff --cached --quiet` guard).
|
|
2
|
+
* `putitoutthere fold-bundle` — synthesize the action-bundle commit (#446).
|
|
3
|
+
* `dist-action/` is gitignored on main, so the built bundle is staged and
|
|
4
|
+
* committed onto HEAD, forwarding the parent's body so a `release:` trailer
|
|
5
|
+
* survives — otherwise plan re-derivation silently downgrades to `patch`.
|
|
22
6
|
*/
|
|
23
7
|
import { addForce, commitBody, commitWithBody, hasStagedChanges } from './git.js';
|
|
24
8
|
export async function foldActionBundle(opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold-action-bundle.js","sourceRoot":"","sources":["../src/fold-action-bundle.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fold-action-bundle.js","sourceRoot":"","sources":["../src/fold-action-bundle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAsC;IAC3E,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/force-move-tag.d.ts
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Force-move a tag to a commit,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `release-npm.yml`'s "Move floating major tag" (advancing `v<major>` to
|
|
7
|
-
* the latest release) and `advance-v0.yml`'s "Force-move v0" (advancing
|
|
8
|
-
* `v0` to HEAD). Consolidating them here means the local-tag write and the
|
|
9
|
-
* ref-scoped force-push can never disagree between the two sites.
|
|
10
|
-
*
|
|
11
|
-
* `git tag -f` overwrites the local tag; `git push --force origin
|
|
12
|
-
* refs/tags/<name>` publishes that move, ref-scoped so it touches no other
|
|
13
|
-
* tag. Force is intrinsic — a floating tag by definition moves, so the
|
|
14
|
-
* remote update is a non-fast-forward the push must be allowed to make.
|
|
2
|
+
* Force-move a tag to a commit, locally and on the remote — the shared
|
|
3
|
+
* tag-move both floating-tag advancers use (#446, epic #442). The push is
|
|
4
|
+
* ref-scoped (`refs/tags/<name>`) so it touches no other tag; force is
|
|
5
|
+
* intrinsic, since a floating tag's remote update is a non-fast-forward.
|
|
15
6
|
*/
|
|
16
7
|
import { type GitOptions } from './git.js';
|
|
17
8
|
export declare function forceMoveTag(name: string, target: string, opts?: GitOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"force-move-tag.d.ts","sourceRoot":"","sources":["../src/force-move-tag.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"force-move-tag.d.ts","sourceRoot":"","sources":["../src/force-move-tag.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAY,KAAK,UAAU,EAAmB,MAAM,UAAU,CAAC;AAEtE,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrG"}
|
package/dist/force-move-tag.js
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Force-move a tag to a commit,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `release-npm.yml`'s "Move floating major tag" (advancing `v<major>` to
|
|
7
|
-
* the latest release) and `advance-v0.yml`'s "Force-move v0" (advancing
|
|
8
|
-
* `v0` to HEAD). Consolidating them here means the local-tag write and the
|
|
9
|
-
* ref-scoped force-push can never disagree between the two sites.
|
|
10
|
-
*
|
|
11
|
-
* `git tag -f` overwrites the local tag; `git push --force origin
|
|
12
|
-
* refs/tags/<name>` publishes that move, ref-scoped so it touches no other
|
|
13
|
-
* tag. Force is intrinsic — a floating tag by definition moves, so the
|
|
14
|
-
* remote update is a non-fast-forward the push must be allowed to make.
|
|
2
|
+
* Force-move a tag to a commit, locally and on the remote — the shared
|
|
3
|
+
* tag-move both floating-tag advancers use (#446, epic #442). The push is
|
|
4
|
+
* ref-scoped (`refs/tags/<name>`) so it touches no other tag; force is
|
|
5
|
+
* intrinsic, since a floating tag's remote update is a non-fast-forward.
|
|
15
6
|
*/
|
|
16
7
|
import { forceTag, pushTagRefForce } from './git.js';
|
|
17
8
|
export async function forceMoveTag(name, target, opts = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"force-move-tag.js","sourceRoot":"","sources":["../src/force-move-tag.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"force-move-tag.js","sourceRoot":"","sources":["../src/force-move-tag.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAmB,eAAe,EAAE,MAAM,UAAU,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,OAAmB,EAAE;IACpF,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/git.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Thin wrapper around the `git` CLI for the ops putitoutthere needs.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* diagnosable without re-running with --verbose.
|
|
6
|
-
*
|
|
7
|
-
* Issue #9. Plan: §13.6 (no-push tag model), §14.2 (last-tag resolver).
|
|
2
|
+
* Thin wrapper around the `git` CLI for the ops putitoutthere needs. Stderr is
|
|
3
|
+
* captured and surfaced in thrown errors so failures are diagnosable without a
|
|
4
|
+
* --verbose re-run. Issue #9. Plan: §13.6 (no-push tag model), §14.2.
|
|
8
5
|
*/
|
|
9
6
|
import { type Semver } from './version.js';
|
|
10
7
|
export interface GitOptions {
|
|
@@ -20,6 +17,14 @@ export declare function diffNames(from: string, to: string, opts?: GitOptions):
|
|
|
20
17
|
export declare function tagList(glob: string, opts?: GitOptions): Promise<string[]>;
|
|
21
18
|
export declare function createTag(name: string, sha: string, opts?: TagOptions): Promise<void>;
|
|
22
19
|
export declare function pushTag(name: string, opts?: GitOptions): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Whether `origin` already carries this tag — `git ls-remote --tags origin
|
|
22
|
+
* refs/tags/<name>`. The only source of truth `ensureTag` (#407) can use for
|
|
23
|
+
* "already done": `tagList` is local-only, so a tag created but never
|
|
24
|
+
* successfully pushed reads as present there even though `origin` has
|
|
25
|
+
* nothing, which is exactly the state a failed push leaves behind (#717).
|
|
26
|
+
*/
|
|
27
|
+
export declare function remoteTagExists(name: string, opts?: GitOptions): Promise<boolean>;
|
|
23
28
|
/**
|
|
24
29
|
* `git fetch --tags --force origin` — refresh every remote tag, forcing
|
|
25
30
|
* updates for tags that moved on the remote. The `--force` is load-bearing
|
|
@@ -85,16 +90,10 @@ export declare function commitWithBody(subject: string, body: string, opts?: Git
|
|
|
85
90
|
*/
|
|
86
91
|
export declare function tagCommit(name: string, opts?: GitOptions): Promise<string>;
|
|
87
92
|
/**
|
|
88
|
-
* Find the highest-semver tag for a given package
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* the template, and return the highest. Malformed candidates that
|
|
93
|
-
* match the glob but not strict semver are skipped silently — they're
|
|
94
|
-
* operator noise, not tool output.
|
|
95
|
-
*
|
|
96
|
-
* Returns the winning tag paired with its already-parsed `version` (so
|
|
97
|
-
* callers never re-parse), or null when no tag for this package exists.
|
|
93
|
+
* Find the highest-semver tag for a given package, matching its `tag_format`
|
|
94
|
+
* template (default `{name}-v{version}`). Candidates that match the glob but
|
|
95
|
+
* not strict semver are skipped silently — operator noise, not tool output.
|
|
96
|
+
* Returns the winning tag with its already-parsed `version`, or null.
|
|
98
97
|
*/
|
|
99
98
|
export declare function lastTag(packageName: string, tagFormat: string, opts?: GitOptions): Promise<{
|
|
100
99
|
tag: string;
|
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
package/dist/git.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Thin wrapper around the `git` CLI for the ops putitoutthere needs.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* diagnosable without re-running with --verbose.
|
|
6
|
-
*
|
|
7
|
-
* Issue #9. Plan: §13.6 (no-push tag model), §14.2 (last-tag resolver).
|
|
2
|
+
* Thin wrapper around the `git` CLI for the ops putitoutthere needs. Stderr is
|
|
3
|
+
* captured and surfaced in thrown errors so failures are diagnosable without a
|
|
4
|
+
* --verbose re-run. Issue #9. Plan: §13.6 (no-push tag model), §14.2.
|
|
8
5
|
*/
|
|
9
6
|
import { execCapture } from './utils/exec-capture.js';
|
|
10
7
|
import { ExecError } from './utils/exec-error.js';
|
|
@@ -84,6 +81,18 @@ export async function createTag(name, sha, opts = {}) {
|
|
|
84
81
|
export async function pushTag(name, opts = {}) {
|
|
85
82
|
await run(['push', 'origin', name], opts);
|
|
86
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Whether `origin` already carries this tag — `git ls-remote --tags origin
|
|
86
|
+
* refs/tags/<name>`. The only source of truth `ensureTag` (#407) can use for
|
|
87
|
+
* "already done": `tagList` is local-only, so a tag created but never
|
|
88
|
+
* successfully pushed reads as present there even though `origin` has
|
|
89
|
+
* nothing, which is exactly the state a failed push leaves behind (#717).
|
|
90
|
+
*/
|
|
91
|
+
export async function remoteTagExists(name, opts = {}) {
|
|
92
|
+
// `run` already trimEnds; no further trimming needed to tell empty from non-empty.
|
|
93
|
+
const out = await run(['ls-remote', '--tags', 'origin', `refs/tags/${name}`], opts);
|
|
94
|
+
return out.length > 0;
|
|
95
|
+
}
|
|
87
96
|
/**
|
|
88
97
|
* `git fetch --tags --force origin` — refresh every remote tag, forcing
|
|
89
98
|
* updates for tags that moved on the remote. The `--force` is load-bearing
|
|
@@ -180,16 +189,10 @@ export async function tagCommit(name, opts = {}) {
|
|
|
180
189
|
}
|
|
181
190
|
/* -------------------------- last-tag resolver -------------------------- */
|
|
182
191
|
/**
|
|
183
|
-
* Find the highest-semver tag for a given package
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* the template, and return the highest. Malformed candidates that
|
|
188
|
-
* match the glob but not strict semver are skipped silently — they're
|
|
189
|
-
* operator noise, not tool output.
|
|
190
|
-
*
|
|
191
|
-
* Returns the winning tag paired with its already-parsed `version` (so
|
|
192
|
-
* callers never re-parse), or null when no tag for this package exists.
|
|
192
|
+
* Find the highest-semver tag for a given package, matching its `tag_format`
|
|
193
|
+
* template (default `{name}-v{version}`). Candidates that match the glob but
|
|
194
|
+
* not strict semver are skipped silently — operator noise, not tool output.
|
|
195
|
+
* Returns the winning tag with its already-parsed `version`, or null.
|
|
193
196
|
*/
|
|
194
197
|
export async function lastTag(packageName, tagFormat, opts = {}) {
|
|
195
198
|
const candidates = await tagList(tagGlob(tagFormat, packageName), opts);
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|