@wtf/release-docs 9.1.0 → 10.0.0
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/README.md +3 -3
- package/api/.generated +244 -145
- package/api/@wtf/release/README.md +55 -0
- package/api/@wtf/release/contract/README.md +60 -0
- package/api/@wtf/release/contract/interfaces/Plan.md +46 -0
- package/api/@wtf/release/contract/interfaces/Release.md +96 -0
- package/api/@wtf/release/contract/interfaces/ReleaseSteps.md +203 -0
- package/api/@wtf/release/contract/type-aliases/OptionalStep.md +13 -0
- package/api/@wtf/release/contract/type-aliases/ReleasingEcosystem.md +44 -0
- package/api/@wtf/release/driver/README.md +43 -0
- package/api/@wtf/release/driver/functions/runStep.md +50 -0
- package/api/@wtf/release/driver/interfaces/StepOutcome.md +31 -0
- package/api/@wtf/release/driver/type-aliases/EcosystemsOf.md +14 -0
- package/api/@wtf/release/driver/type-aliases/Step.md +13 -0
- package/api/@wtf/release/driver/variables/STEPS.md +13 -0
- package/api/@wtf/{release-trains → release}/ecosystem/README.md +11 -11
- package/api/@wtf/release/ecosystem/functions/isEcosystem.md +27 -0
- package/api/@wtf/{release-trains → release}/ecosystem/functions/loadEcosystems.md +5 -5
- package/api/@wtf/release/ecosystem/functions/readPackages.md +33 -0
- package/api/@wtf/release/ecosystem/interfaces/Dependency.md +43 -0
- package/api/@wtf/{release-trains → release}/ecosystem/interfaces/Ecosystem.md +23 -14
- package/api/@wtf/release/ecosystem/interfaces/EcosystemContext.md +56 -0
- package/api/@wtf/release/ecosystem/interfaces/EcosystemPackages.md +35 -0
- package/api/@wtf/release/ecosystem/interfaces/Package.md +71 -0
- package/api/@wtf/release/ecosystem/type-aliases/DependencyKind.md +16 -0
- package/api/@wtf/{release-trains → release}/ecosystem/type-aliases/ModuleLoader.md +2 -2
- package/api/@wtf/release/ecosystem/variables/DEPENDENCY_KINDS.md +13 -0
- package/api/@wtf/release/errors/README.md +41 -0
- package/api/@wtf/{release-system → release}/errors/classes/ReleaseError.md +10 -19
- package/api/@wtf/release/errors/functions/isReleaseError.md +28 -0
- package/api/@wtf/release/errors/functions/throwAll.md +26 -0
- package/api/@wtf/{release-system → release}/errors/type-aliases/ErrorClass.md +2 -2
- package/api/@wtf/release/errors/type-aliases/ReleaseErrorCode.md +13 -0
- package/api/@wtf/release/errors/variables/RELEASE_ERRORS.md +35 -0
- package/api/@wtf/release/files/README.md +38 -0
- package/api/@wtf/release/files/functions/copy.md +45 -0
- package/api/@wtf/release/files/functions/exists.md +33 -0
- package/api/@wtf/release/files/functions/makeDir.md +33 -0
- package/api/@wtf/release/files/functions/readBytes.md +33 -0
- package/api/@wtf/release/files/functions/readDir.md +33 -0
- package/api/@wtf/release/files/functions/readFile.md +33 -0
- package/api/@wtf/release/files/functions/remove.md +34 -0
- package/api/@wtf/release/files/functions/writeFile.md +38 -0
- package/api/@wtf/release/files/interfaces/DirEntry.md +27 -0
- package/api/@wtf/release/forge/README.md +49 -0
- package/api/@wtf/release/forge/functions/linksOf.md +49 -0
- package/api/@wtf/release/forge/interfaces/Forge.md +113 -0
- package/api/@wtf/release/forge/interfaces/ForgeRun.md +41 -0
- package/api/@wtf/release/forge/interfaces/LinksOptions.md +43 -0
- package/api/@wtf/release/forge/interfaces/PackageRegistry.md +41 -0
- package/api/@wtf/release/forge/interfaces/ReleaseLink.md +41 -0
- package/api/@wtf/release/forge/interfaces/Released.md +91 -0
- package/api/@wtf/{release-trains → release}/generated/README.md +8 -8
- package/api/@wtf/{release-trains → release}/generated/functions/filesIn.md +4 -4
- package/api/@wtf/{release-trains → release}/generated/functions/formatGenerated.md +2 -2
- package/api/@wtf/release/generated/functions/listGenerated.md +35 -0
- package/api/@wtf/{release-trains → release}/generated/functions/parseGenerated.md +2 -2
- package/api/@wtf/release/generated/functions/readGenerated.md +33 -0
- package/api/@wtf/{release-trains → release}/generated/functions/stageGenerated.md +2 -2
- package/api/@wtf/release/generated/functions/stageGeneratedFolders.md +29 -0
- package/api/@wtf/release/generated/functions/unlistedIn.md +36 -0
- package/api/@wtf/release/generated/interfaces/GeneratedOptions.md +21 -0
- package/api/@wtf/release/generated/interfaces/StageOptions.md +76 -0
- package/api/@wtf/release/generated/variables/GENERATED.md +13 -0
- package/api/@wtf/{release-system → release}/git/README.md +11 -10
- package/api/@wtf/{release-system → release}/git/functions/commitsSince.md +3 -3
- package/api/@wtf/{release-system → release}/git/functions/filesOfCommits.md +3 -3
- package/api/@wtf/{release-system → release}/git/functions/git.md +3 -3
- package/api/@wtf/release/git/functions/revisionOf.md +33 -0
- package/api/@wtf/release/git/functions/tagsOfRepo.md +33 -0
- package/api/@wtf/{release-system → release}/git/functions/trackedFiles.md +3 -3
- package/api/@wtf/release/git/interfaces/GitContext.md +26 -0
- package/api/@wtf/release/git/interfaces/LogCommit.md +43 -0
- package/api/@wtf/release/interfaces/RepoContext.md +57 -0
- package/api/@wtf/release/order/README.md +37 -0
- package/api/@wtf/{release-trains/packages → release/order}/functions/normalizeDir.md +2 -2
- package/api/@wtf/{release-trains/packages → release/order}/functions/publishOrder.md +7 -6
- package/api/@wtf/release/order/interfaces/OrderFault.md +39 -0
- package/api/@wtf/release/order/interfaces/OrderPins.md +27 -0
- package/api/@wtf/release/order/interfaces/PublishOrder.md +35 -0
- package/api/@wtf/{release-system → release}/paths/README.md +4 -4
- package/api/@wtf/{release-system → release}/paths/functions/normalizePath.md +2 -2
- package/api/@wtf/{release-system → release}/paths/functions/pathMatcher.md +2 -2
- package/api/@wtf/{release-system → release}/paths/type-aliases/PathMatcher.md +2 -2
- package/api/@wtf/{release-system → release}/posix/README.md +5 -5
- package/api/@wtf/{release-system → release}/posix/functions/basenameOf.md +2 -2
- package/api/@wtf/{release-system → release}/posix/functions/dirnameOf.md +2 -2
- package/api/@wtf/{release-system → release}/posix/functions/joinPath.md +2 -2
- package/api/@wtf/{release-system → release}/posix/functions/relativePath.md +2 -2
- package/api/@wtf/{release-system → release}/posix/functions/resolvePath.md +3 -3
- package/api/@wtf/release/process/README.md +30 -0
- package/api/@wtf/release/process/functions/envOf.md +34 -0
- package/api/@wtf/release/process/functions/run.md +48 -0
- package/api/@wtf/release/process/interfaces/RunOptions.md +52 -0
- package/api/@wtf/release/process/interfaces/RunResult.md +35 -0
- package/api/@wtf/release/type-aliases/ReleasePlatform.md +22 -0
- package/api/@wtf/release/type-aliases/RepoPlatform.md +21 -0
- package/api/@wtf/{release-system → release}/validator/README.md +6 -5
- package/api/@wtf/{release-system → release}/validator/functions/allOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/anyObject.md +3 -3
- package/api/@wtf/{release-system → release}/validator/functions/anyOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/arrayOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/booleanOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/errorOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/errorsOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/exclusive.md +2 -2
- package/api/@wtf/release/validator/functions/issueOf.md +45 -0
- package/api/@wtf/{release-system → release}/validator/functions/issuesOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/objectOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/oneOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/orFunction.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/pathText.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/recordOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/refined.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/stringOf.md +2 -2
- package/api/@wtf/{release-system → release}/validator/functions/tupleOf.md +2 -2
- package/api/@wtf/release/validator/functions/validatorOf.md +42 -0
- package/api/@wtf/{release-system → release}/validator/interfaces/ArrayOptions.md +6 -6
- package/api/@wtf/{release-system → release}/validator/interfaces/IssueOptions.md +5 -5
- package/api/@wtf/{release-system → release}/validator/interfaces/ObjectOptions.md +6 -6
- package/api/@wtf/release/validator/interfaces/OptionIssue.md +63 -0
- package/api/@wtf/release/validator/interfaces/Property.md +49 -0
- package/api/@wtf/{release-system → release}/validator/interfaces/RecordOptions.md +7 -7
- package/api/@wtf/{release-system → release}/validator/interfaces/StringOptions.md +7 -7
- package/api/@wtf/{release-system → release}/validator/interfaces/Validator.md +5 -5
- package/api/@wtf/release/validator/type-aliases/JsonSchema.md +17 -0
- package/api/@wtf/release/validator/type-aliases/Path.md +13 -0
- package/api/@wtf/release-cargo/README.md +11 -8
- package/api/@wtf/release-cargo/auth/README.md +1 -1
- package/api/@wtf/release-cargo/auth/functions/mask.md +1 -1
- package/api/@wtf/release-cargo/auth/functions/tokenVariableOf.md +1 -1
- package/api/@wtf/release-cargo/auth/functions/trustedPublishing.md +1 -1
- package/api/@wtf/release-cargo/auth/interfaces/HttpResponse.md +5 -5
- package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishing.md +5 -5
- package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishingOptions.md +6 -6
- package/api/@wtf/release-cargo/auth/type-aliases/HttpFetch.md +1 -1
- package/api/@wtf/release-cargo/auth/variables/CRATES_IO_API.md +1 -1
- package/api/@wtf/release-cargo/auth/variables/ID_TOKEN_VARIABLE.md +1 -1
- package/api/@wtf/release-cargo/auth/variables/USER_AGENT.md +3 -3
- package/api/@wtf/release-cargo/crates/README.md +11 -10
- package/api/@wtf/release-cargo/crates/functions/publishOrder.md +1 -1
- package/api/@wtf/release-cargo/crates/functions/publishable.md +1 -1
- package/api/@wtf/release-cargo/crates/functions/readWorkspace.md +9 -8
- package/api/@wtf/release-cargo/crates/functions/selectCrates.md +16 -16
- package/api/@wtf/release-cargo/crates/functions/selects.md +36 -0
- package/api/@wtf/release-cargo/crates/interfaces/Selection.md +15 -15
- package/api/@wtf/release-cargo/ecosystem/README.md +9 -6
- package/api/@wtf/release-cargo/ecosystem/functions/packagesAt.md +6 -6
- package/api/@wtf/release-cargo/ecosystem/functions/packagesOfTree.md +3 -3
- package/api/@wtf/release-cargo/ecosystem/functions/packagesOfWorkspace.md +2 -2
- package/api/@wtf/release-cargo/ecosystem/functions/resolveRequirement.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/satisfiesRequirement.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/semverRange.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/interfaces/CargoPackage.md +17 -17
- package/api/@wtf/release-cargo/ecosystem/variables/cargoEcosystem.md +6 -4
- package/api/@wtf/release-cargo/errors/README.md +4 -5
- package/api/@wtf/release-cargo/errors/classes/CargoError.md +18 -33
- package/api/@wtf/release-cargo/errors/type-aliases/CargoErrorCode.md +1 -1
- package/api/@wtf/release-cargo/errors/variables/CARGO_ERRORS.md +8 -4
- package/api/@wtf/release-cargo/interfaces/Crate.md +6 -6
- package/api/@wtf/release-cargo/interfaces/CrateDependency.md +6 -6
- package/api/@wtf/release-cargo/interfaces/Workspace.md +3 -3
- package/api/@wtf/release-cargo/publish/README.md +4 -5
- package/api/@wtf/release-cargo/publish/functions/publishCrates.md +5 -4
- package/api/@wtf/release-cargo/publish/interfaces/PublishCratesOptions.md +33 -20
- package/api/@wtf/release-cargo/publish/interfaces/PublishedCrate.md +5 -5
- package/api/@wtf/release-cargo/publish/type-aliases/CrateStatus.md +1 -1
- package/api/@wtf/release-cargo/publish/variables/RECHECK_WAITS.md +1 -1
- package/api/@wtf/release-cargo/registry/README.md +5 -3
- package/api/@wtf/release-cargo/registry/functions/crateUrl.md +1 -1
- package/api/@wtf/release-cargo/registry/functions/indexHasVersion.md +1 -1
- package/api/@wtf/release-cargo/registry/functions/indexLookup.md +50 -0
- package/api/@wtf/release-cargo/registry/functions/indexPath.md +1 -1
- package/api/@wtf/release-cargo/registry/variables/CRATES_IO_INDEX.md +1 -1
- package/api/@wtf/release-cargo/release/README.md +54 -0
- package/api/@wtf/release-cargo/release/functions/prepareCrates.md +42 -0
- package/api/@wtf/release-cargo/release/functions/publishPlan.md +53 -0
- package/api/@wtf/release-cargo/release/functions/publishedOf.md +36 -0
- package/api/@wtf/release-cargo/release/functions/verifyCrates.md +44 -0
- package/api/@wtf/release-cargo/release/interfaces/CargoOptions.md +89 -0
- package/api/@wtf/release-cargo/release/type-aliases/CargoPlan.md +13 -0
- package/api/@wtf/release-cargo/stamp/README.md +6 -5
- package/api/@wtf/release-cargo/stamp/functions/checkVersions.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/inheritsVersion.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/stampManifest.md +1 -1
- package/api/@wtf/release-cargo/stamp/functions/stampWorkspace.md +19 -10
- package/api/@wtf/release-cargo/stamp/interfaces/StampOptions.md +4 -4
- package/api/@wtf/release-cargo/stamp/interfaces/StampWorkspaceOptions.md +21 -0
- package/api/@wtf/release-cargo/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-cargo/stamp/interfaces/StampedWorkspace.md +4 -4
- package/api/@wtf/release-cargo/type-aliases/DependencyKind.md +1 -1
- package/api/@wtf/release-go/README.md +13 -9
- package/api/@wtf/release-go/ecosystem/README.md +13 -6
- package/api/@wtf/release-go/ecosystem/functions/packagesOfModules.md +2 -2
- package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +4 -4
- package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +2 -2
- package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +1 -1
- package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +17 -17
- package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +6 -3
- package/api/@wtf/release-go/errors/README.md +4 -5
- package/api/@wtf/release-go/errors/classes/GoError.md +17 -32
- package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +1 -1
- package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +8 -4
- package/api/@wtf/release-go/gomod/functions/entriesOf.md +1 -1
- package/api/@wtf/release-go/gomod/functions/linesOf.md +1 -1
- package/api/@wtf/release-go/gomod/functions/readGoMod.md +1 -1
- package/api/@wtf/release-go/gomod/functions/tokensOf.md +1 -1
- package/api/@wtf/release-go/gomod/interfaces/Entry.md +4 -4
- package/api/@wtf/release-go/gomod/interfaces/GoMod.md +4 -4
- package/api/@wtf/release-go/gomod/interfaces/GoReplace.md +6 -6
- package/api/@wtf/release-go/gomod/interfaces/GoRequire.md +4 -4
- package/api/@wtf/release-go/gomod/interfaces/Token.md +5 -5
- package/api/@wtf/release-go/interfaces/GoIdentity.md +31 -0
- package/api/@wtf/release-go/interfaces/GoModule.md +6 -6
- package/api/@wtf/release-go/interfaces/GoOptions.md +86 -0
- package/api/@wtf/release-go/modules/README.md +9 -9
- package/api/@wtf/release-go/modules/functions/isFetchable.md +1 -1
- package/api/@wtf/release-go/modules/functions/isGoMod.md +1 -1
- package/api/@wtf/release-go/modules/functions/majorErrors.md +1 -1
- package/api/@wtf/release-go/modules/functions/majorOfPath.md +1 -1
- package/api/@wtf/release-go/modules/functions/modulesAt.md +3 -3
- package/api/@wtf/release-go/modules/functions/modulesOf.md +1 -1
- package/api/@wtf/release-go/modules/functions/readModules.md +4 -5
- package/api/@wtf/release-go/modules/functions/selectModules.md +13 -11
- package/api/@wtf/release-go/modules/interfaces/Selection.md +10 -11
- package/api/@wtf/release-go/release/README.md +45 -0
- package/api/@wtf/release-go/release/functions/isGoVersion.md +28 -0
- package/api/@wtf/release-go/release/functions/prepareModules.md +47 -0
- package/api/@wtf/release-go/release/functions/publishModules.md +54 -0
- package/api/@wtf/release-go/release/functions/releaseModules.md +48 -0
- package/api/@wtf/release-go/release/functions/releasedOf.md +41 -0
- package/api/@wtf/release-go/release/functions/verifyModules.md +44 -0
- package/api/@wtf/release-go/release/interfaces/ReleaseModules.md +31 -0
- package/api/@wtf/release-go/stamp/README.md +6 -5
- package/api/@wtf/release-go/stamp/functions/checkVersions.md +1 -1
- package/api/@wtf/release-go/stamp/functions/stampGoMod.md +1 -1
- package/api/@wtf/release-go/stamp/functions/stampModules.md +16 -10
- package/api/@wtf/release-go/stamp/interfaces/StampOptions.md +21 -0
- package/api/@wtf/release-go/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +13 -3
- package/api/@wtf/release-go/tags/README.md +3 -6
- package/api/@wtf/release-go/tags/functions/askProxy.md +6 -6
- package/api/@wtf/release-go/tags/functions/maskCredentials.md +1 -1
- package/api/@wtf/release-go/tags/functions/releaseCommit.md +16 -9
- package/api/@wtf/release-go/tags/functions/remoteTags.md +3 -3
- package/api/@wtf/release-go/tags/functions/tagModules.md +3 -3
- package/api/@wtf/release-go/tags/functions/tagOfModule.md +1 -1
- package/api/@wtf/release-go/tags/functions/tagPrefix.md +1 -1
- package/api/@wtf/release-go/tags/interfaces/CommitIdentity.md +35 -0
- package/api/@wtf/release-go/tags/interfaces/TagModulesOptions.md +42 -10
- package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +5 -5
- package/api/@wtf/release-go/tags/interfaces/TagsContext.md +22 -0
- package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +1 -1
- package/api/@wtf/release-maven/README.md +11 -8
- package/api/@wtf/release-maven/artifacts/README.md +11 -6
- package/api/@wtf/release-maven/artifacts/functions/groupIdOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/installsOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/isPomFile.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/isRange.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/modulesOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/nameOf.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/publishOrder.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/readModules.md +3 -3
- package/api/@wtf/release-maven/artifacts/functions/readPoms.md +4 -4
- package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +1 -1
- package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +8 -8
- package/api/@wtf/release-maven/ecosystem/README.md +28 -13
- package/api/@wtf/release-maven/ecosystem/functions/checkReleaseVersion.md +32 -0
- package/api/@wtf/release-maven/ecosystem/functions/compareVersions.md +1 -1
- package/api/@wtf/release-maven/ecosystem/functions/parseRange.md +1 -1
- package/api/@wtf/release-maven/ecosystem/functions/resolveVersion.md +1 -1
- package/api/@wtf/release-maven/ecosystem/functions/satisfiesVersion.md +1 -1
- package/api/@wtf/release-maven/ecosystem/interfaces/Bound.md +3 -3
- package/api/@wtf/release-maven/ecosystem/interfaces/MavenReleaseOptions.md +77 -0
- package/api/@wtf/release-maven/ecosystem/interfaces/Restriction.md +3 -3
- package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +5 -3
- package/api/@wtf/release-maven/errors/README.md +3 -4
- package/api/@wtf/release-maven/errors/classes/MavenError.md +17 -32
- package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +1 -1
- package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +4 -4
- package/api/@wtf/release-maven/interfaces/MavenModule.md +24 -24
- package/api/@wtf/release-maven/pom/functions/childOf.md +1 -1
- package/api/@wtf/release-maven/pom/functions/childrenOf.md +1 -1
- package/api/@wtf/release-maven/pom/functions/dependencyOf.md +1 -1
- package/api/@wtf/release-maven/pom/functions/escapeXml.md +1 -1
- package/api/@wtf/release-maven/pom/functions/parseXml.md +1 -1
- package/api/@wtf/release-maven/pom/functions/readPom.md +1 -1
- package/api/@wtf/release-maven/pom/functions/textAt.md +1 -1
- package/api/@wtf/release-maven/pom/interfaces/Pom.md +15 -15
- package/api/@wtf/release-maven/pom/interfaces/PomDependency.md +5 -5
- package/api/@wtf/release-maven/pom/interfaces/PomParent.md +4 -4
- package/api/@wtf/release-maven/pom/interfaces/PomPlugin.md +5 -5
- package/api/@wtf/release-maven/pom/interfaces/PomRepository.md +3 -3
- package/api/@wtf/release-maven/pom/interfaces/Span.md +3 -3
- package/api/@wtf/release-maven/pom/interfaces/XmlElement.md +7 -7
- package/api/@wtf/release-maven/pom/variables/PLUGIN_GROUP.md +1 -1
- package/api/@wtf/release-maven/publish/README.md +9 -6
- package/api/@wtf/release-maven/publish/functions/deployModules.md +2 -2
- package/api/@wtf/release-maven/publish/functions/releasedModules.md +44 -0
- package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +18 -27
- package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +4 -4
- package/api/@wtf/release-maven/publish/interfaces/ReleasedWhere.md +67 -0
- package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +1 -1
- package/api/@wtf/release-maven/repository/README.md +12 -6
- package/api/@wtf/release-maven/repository/functions/deployTargets.md +1 -1
- package/api/@wtf/release-maven/repository/functions/expandValues.md +1 -1
- package/api/@wtf/release-maven/repository/functions/hasPom.md +1 -1
- package/api/@wtf/release-maven/repository/functions/lookupHeaders.md +37 -0
- package/api/@wtf/release-maven/repository/functions/lookupPom.md +44 -0
- package/api/@wtf/release-maven/repository/functions/pomPath.md +1 -1
- package/api/@wtf/release-maven/repository/functions/pomUrl.md +1 -1
- package/api/@wtf/release-maven/repository/functions/releaseTargets.md +46 -0
- package/api/@wtf/release-maven/repository/interfaces/LookupAuth.md +32 -0
- package/api/@wtf/release-maven/repository/interfaces/ReleaseTargets.md +32 -0
- package/api/@wtf/release-maven/repository/interfaces/Repository.md +3 -3
- package/api/@wtf/release-maven/repository/interfaces/ValuesOf.md +3 -3
- package/api/@wtf/release-maven/repository/variables/MAVEN_CENTRAL.md +1 -1
- package/api/@wtf/release-maven/stamp/README.md +8 -8
- package/api/@wtf/release-maven/stamp/functions/checkVersions.md +1 -1
- package/api/@wtf/release-maven/stamp/functions/stampModules.md +15 -15
- package/api/@wtf/release-maven/stamp/functions/stampPom.md +1 -1
- package/api/@wtf/release-maven/stamp/interfaces/PomStampOptions.md +5 -5
- package/api/@wtf/release-maven/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-maven/stamp/interfaces/StampedModules.md +4 -4
- package/api/@wtf/release-npm/README.md +20 -15
- package/api/@wtf/release-npm/check/README.md +1 -1
- package/api/@wtf/release-npm/check/functions/checkPackages.md +3 -3
- package/api/@wtf/release-npm/check/functions/formatIssue.md +1 -1
- package/api/@wtf/release-npm/check/interfaces/CheckOptions.md +7 -7
- package/api/@wtf/release-npm/check/interfaces/Issue.md +6 -6
- package/api/@wtf/release-npm/check/type-aliases/CheckedPackage.md +1 -1
- package/api/@wtf/release-npm/check/type-aliases/IssueCode.md +2 -2
- package/api/@wtf/release-npm/ecosystem/README.md +21 -11
- package/api/@wtf/release-npm/ecosystem/variables/npmEcosystem.md +17 -7
- package/api/@wtf/release-npm/errors/README.md +8 -4
- package/api/@wtf/release-npm/errors/classes/NpmError.md +253 -0
- package/api/@wtf/release-npm/errors/type-aliases/NpmErrorCode.md +1 -1
- package/api/@wtf/release-npm/errors/variables/NPM_ERRORS.md +7 -3
- package/api/@wtf/release-npm/interfaces/Lookup.md +3 -3
- package/api/@wtf/release-npm/interfaces/NpmAside.md +46 -0
- package/api/@wtf/release-npm/interfaces/NpmOptions.md +134 -0
- package/api/@wtf/release-npm/interfaces/PublishOptions.md +6 -6
- package/api/@wtf/release-npm/interfaces/PublishPackage.md +5 -5
- package/api/@wtf/release-npm/interfaces/Publisher.md +11 -11
- package/api/@wtf/release-npm/interfaces/PublisherContext.md +32 -23
- package/api/@wtf/release-npm/manifests/README.md +5 -5
- package/api/@wtf/release-npm/manifests/functions/concreteRange.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/manifestsAt.md +3 -4
- package/api/@wtf/release-npm/manifests/functions/packageOf.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/packagesOfManifests.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/readManifests.md +7 -7
- package/api/@wtf/release-npm/manifests/functions/resolveSpecifier.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/runtimeDependenciesOf.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/satisfiesRange.md +1 -1
- package/api/@wtf/release-npm/manifests/interfaces/Manifest.md +5 -5
- package/api/@wtf/release-npm/manifests/interfaces/NpmPackage.md +16 -16
- package/api/@wtf/release-npm/manifests/type-aliases/DependencyField.md +1 -1
- package/api/@wtf/release-npm/manifests/variables/DEPENDENCY_FIELDS.md +1 -1
- package/api/@wtf/release-npm/manifests/variables/FIELD_KINDS.md +2 -2
- package/api/@wtf/release-npm/manifests/variables/RUNTIME_FIELDS.md +1 -1
- package/api/@wtf/release-npm/prepare/functions/isTypeScriptSource.md +1 -1
- package/api/@wtf/release-npm/prepare/functions/prepareManifest.md +1 -1
- package/api/@wtf/release-npm/prepare/functions/stripSourceConditions.md +1 -1
- package/api/@wtf/release-npm/prepare/interfaces/PrepareOptions.md +6 -6
- package/api/@wtf/release-npm/prepare/interfaces/PreparedManifest.md +6 -6
- package/api/@wtf/release-npm/prepare/variables/SOURCE_CONDITIONS.md +1 -1
- package/api/@wtf/release-npm/publishers/README.md +1 -1
- package/api/@wtf/release-npm/publishers/functions/builtInPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/functions/isPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/functions/registryOf.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/NPM_REGISTRY.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/PUBLISHERS.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/npmPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/variables/pnpmPublisher.md +1 -1
- package/api/@wtf/release-npm/release/README.md +59 -37
- package/api/@wtf/release-npm/release/functions/checkPlan.md +44 -0
- package/api/@wtf/release-npm/release/functions/discardPacked.md +32 -0
- package/api/@wtf/release-npm/release/functions/moveRelease.md +47 -0
- package/api/@wtf/release-npm/release/functions/packRelease.md +39 -0
- package/api/@wtf/release-npm/release/functions/prepareRelease.md +46 -0
- package/api/@wtf/release-npm/release/functions/publishPacked.md +17 -11
- package/api/@wtf/release-npm/release/functions/publishRelease.md +44 -0
- package/api/@wtf/release-npm/release/functions/publishedOf.md +12 -11
- package/api/@wtf/release-npm/release/functions/resolvePlan.md +49 -0
- package/api/@wtf/release-npm/release/functions/smokeRelease.md +40 -0
- package/api/@wtf/release-npm/release/functions/verifyRelease.md +41 -0
- package/api/@wtf/release-npm/release/interfaces/MovedPackage.md +79 -0
- package/api/@wtf/release-npm/release/interfaces/MovedRelease.md +39 -0
- package/api/@wtf/release-npm/release/interfaces/NpmPlan.md +68 -0
- package/api/@wtf/release-npm/release/interfaces/PackOptions.md +35 -31
- package/api/@wtf/release-npm/release/interfaces/PackedRelease.md +107 -0
- package/api/@wtf/release-npm/release/interfaces/PublishRun.md +35 -50
- package/api/@wtf/release-npm/release/interfaces/PublishedOf.md +4 -14
- package/api/@wtf/release-npm/release/interfaces/PublishedPackage.md +13 -14
- package/api/@wtf/release-npm/release/interfaces/PublishedRelease.md +49 -0
- package/api/@wtf/release-npm/release/interfaces/ResolvedPackage.md +4 -4
- package/api/@wtf/release-npm/release/interfaces/ResolvedRelease.md +37 -0
- package/api/@wtf/release-npm/release/type-aliases/LookedUpRelease.md +13 -0
- package/api/@wtf/release-npm/release/variables/ID_TOKENS.md +1 -1
- package/api/@wtf/release-npm/release/variables/RUNNER_ENVIRONMENTS.md +1 -1
- package/api/@wtf/release-npm/release/variables/npmOptionsSchema.md +13 -0
- package/api/@wtf/release-npm/workspace/README.md +7 -3
- package/api/@wtf/release-npm/workspace/functions/pnpmWorkspaceGlobs.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/publishableOf.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/readWorkspace.md +3 -9
- package/api/@wtf/release-npm/workspace/functions/workspaceFolders.md +3 -9
- package/api/@wtf/release-npm/workspace/functions/workspaceGlobs.md +3 -9
- package/api/@wtf/release-npm/workspace/interfaces/WorkspaceGlobs.md +3 -3
- package/api/@wtf/release-oci/README.md +12 -10
- package/api/@wtf/release-oci/ecosystem/README.md +22 -7
- package/api/@wtf/release-oci/ecosystem/functions/packagesOfImages.md +2 -2
- package/api/@wtf/release-oci/ecosystem/functions/packagesOfRepo.md +4 -4
- package/api/@wtf/release-oci/ecosystem/functions/repositoriesOf.md +27 -0
- package/api/@wtf/release-oci/ecosystem/functions/resolveTag.md +2 -2
- package/api/@wtf/release-oci/ecosystem/functions/satisfiesTag.md +2 -2
- package/api/@wtf/release-oci/ecosystem/interfaces/OciOptions.md +64 -0
- package/api/@wtf/release-oci/ecosystem/interfaces/OciPackage.md +17 -17
- package/api/@wtf/release-oci/ecosystem/interfaces/OciSourceOptions.md +32 -0
- package/api/@wtf/release-oci/ecosystem/variables/ociEcosystem.md +18 -4
- package/api/@wtf/release-oci/errors/README.md +4 -5
- package/api/@wtf/release-oci/errors/classes/OciError.md +17 -32
- package/api/@wtf/release-oci/errors/type-aliases/OciErrorCode.md +1 -1
- package/api/@wtf/release-oci/errors/variables/OCI_ERRORS.md +10 -2
- package/api/@wtf/release-oci/images/README.md +3 -3
- package/api/@wtf/release-oci/images/functions/imageDirOf.md +1 -1
- package/api/@wtf/release-oci/images/functions/imagesAt.md +3 -3
- package/api/@wtf/release-oci/images/functions/imagesOf.md +1 -1
- package/api/@wtf/release-oci/images/functions/isImageManifest.md +1 -1
- package/api/@wtf/release-oci/images/functions/readImages.md +3 -3
- package/api/@wtf/release-oci/images/functions/registryImageOf.md +3 -3
- package/api/@wtf/release-oci/images/functions/repositoryOf.md +1 -1
- package/api/@wtf/release-oci/interfaces/OciImage.md +4 -4
- package/api/@wtf/release-oci/publish/README.md +26 -13
- package/api/@wtf/release-oci/publish/functions/digestOf.md +1 -1
- package/api/@wtf/release-oci/publish/functions/moveImages.md +32 -0
- package/api/@wtf/release-oci/publish/functions/platformsOf.md +1 -1
- package/api/@wtf/release-oci/publish/functions/publishImages.md +8 -6
- package/api/@wtf/release-oci/publish/functions/smokeImages.md +1 -1
- package/api/@wtf/release-oci/publish/interfaces/CraneContext.md +10 -37
- package/api/@wtf/release-oci/publish/interfaces/ImageToPublish.md +3 -3
- package/api/@wtf/release-oci/publish/interfaces/ImagesMove.md +84 -0
- package/api/@wtf/release-oci/publish/interfaces/ImagesRelease.md +18 -17
- package/api/@wtf/release-oci/publish/interfaces/MovedImage.md +41 -0
- package/api/@wtf/release-oci/publish/interfaces/OciSource.md +3 -3
- package/api/@wtf/release-oci/publish/interfaces/PublishedImage.md +11 -21
- package/api/@wtf/release-oci/publish/interfaces/SmokedImage.md +5 -5
- package/api/@wtf/release-oci/registry/README.md +20 -4
- package/api/@wtf/release-oci/registry/functions/checkRegistryAccess.md +28 -0
- package/api/@wtf/release-oci/registry/functions/registryPageOf.md +1 -1
- package/api/@wtf/release-oci/registry/interfaces/ContainerRegistry.md +35 -0
- package/api/@wtf/release-oci/registry/interfaces/RegistryProject.md +51 -0
- package/api/@wtf/release-oci/registry/interfaces/RegistryQuery.md +20 -8
- package/api/@wtf/release-oci/registry/interfaces/RegistryResponse.md +47 -0
- package/api/@wtf/release-oci/registry/type-aliases/RegistryAccess.md +13 -0
- package/api/@wtf/release-oci/registry/type-aliases/RegistryFetch.md +39 -0
- package/api/@wtf/release-oci/tags/README.md +9 -8
- package/api/@wtf/release-oci/tags/functions/checkReleaseTags.md +35 -0
- package/api/@wtf/release-oci/tags/functions/isImageTag.md +27 -0
- package/api/@wtf/release-oci/tags/interfaces/ReleaseTags.md +4 -4
- package/api/@wtf/release-replace/README.md +6 -5
- package/api/@wtf/release-replace/errors/README.md +3 -3
- package/api/@wtf/release-replace/errors/classes/ReplaceError.md +17 -32
- package/api/@wtf/release-replace/errors/type-aliases/ReplaceErrorCode.md +1 -1
- package/api/@wtf/release-replace/errors/variables/REPLACE_ERRORS.md +1 -1
- package/api/@wtf/release-replace/files/functions/filesMatcher.md +3 -3
- package/api/@wtf/release-replace/interfaces/ReplaceMatch.md +5 -5
- package/api/@wtf/release-replace/interfaces/ReplacementOf.md +5 -5
- package/api/@wtf/release-replace/replace/README.md +3 -3
- package/api/@wtf/release-replace/replace/functions/regExpOf.md +1 -1
- package/api/@wtf/release-replace/replace/functions/replaceFiles.md +3 -3
- package/api/@wtf/release-replace/replace/functions/replaceText.md +1 -1
- package/api/@wtf/release-replace/replace/interfaces/ReplaceOptions.md +35 -32
- package/api/@wtf/release-replace/replace/interfaces/TextOptions.md +5 -5
- package/api/@wtf/release-replace/replace/type-aliases/To.md +1 -1
- package/api/@wtf/release-replace/templates/functions/mergeTemplates.md +1 -1
- package/api/@wtf/release-replace/templates/functions/resolveReplacement.md +1 -1
- package/api/@wtf/release-replace/templates/functions/resolveReplacements.md +1 -1
- package/api/@wtf/release-replace/type-aliases/Escape.md +1 -1
- package/api/@wtf/release-replace/type-aliases/ReplaceFunction.md +1 -1
- package/api/@wtf/release-replace/type-aliases/Replacement.md +1 -1
- package/api/@wtf/release-replace/type-aliases/ReplacementSpec.md +1 -1
- package/api/@wtf/release-replace/type-aliases/TemplateUse.md +1 -1
- package/api/@wtf/release-replace/type-aliases/Templates.md +1 -1
- package/api/@wtf/release-replace/values/functions/escapeValue.md +1 -1
- package/api/@wtf/release-replace/values/functions/textOf.md +1 -1
- package/api/@wtf/release-replace/values/functions/valueAt.md +1 -1
- package/api/@wtf/release-replace/values/variables/ESCAPES.md +1 -1
- package/api/@wtf/release-replace/values/variables/VALUE.md +1 -1
- package/api/@wtf/release-trains/README.md +9 -8
- package/api/@wtf/release-trains/cascade/README.md +6 -5
- package/api/@wtf/release-trains/cascade/functions/cascadeNotes.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadeText.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadeType.md +1 -1
- package/api/@wtf/release-trains/cascade/functions/cascadesOf.md +2 -2
- package/api/@wtf/release-trains/cascade/functions/higherType.md +1 -1
- package/api/@wtf/release-trains/cascade/interfaces/Cascade.md +11 -11
- package/api/@wtf/release-trains/cascade/interfaces/CascadeCheck.md +30 -27
- package/api/@wtf/release-trains/cascade/type-aliases/CascadeKind.md +2 -2
- package/api/@wtf/release-trains/cascade/type-aliases/ReleaseType.md +1 -1
- package/api/@wtf/release-trains/cascade/variables/RELEASE_TYPES.md +1 -1
- package/api/@wtf/release-trains/errors/README.md +6 -5
- package/api/@wtf/release-trains/errors/classes/TrainsError.md +18 -32
- package/api/@wtf/release-trains/errors/type-aliases/TrainsErrorCode.md +1 -1
- package/api/@wtf/release-trains/errors/variables/TRAINS_ERRORS.md +1 -13
- package/api/@wtf/release-trains/git/README.md +4 -4
- package/api/@wtf/release-trains/git/functions/tagOf.md +1 -1
- package/api/@wtf/release-trains/git/functions/tagsOf.md +4 -4
- package/api/@wtf/release-trains/git/functions/versionOfTag.md +1 -1
- package/api/@wtf/release-trains/git/interfaces/TrainTag.md +3 -3
- package/api/@wtf/release-trains/gitlab/README.md +6 -3
- package/api/@wtf/release-trains/gitlab/functions/findPackage.md +1 -1
- package/api/@wtf/release-trains/gitlab/functions/gitlabForge.md +33 -0
- package/api/@wtf/release-trains/gitlab/functions/gitlabHeadersOf.md +1 -1
- package/api/@wtf/release-trains/gitlab/functions/gitlabProjectOf.md +1 -1
- package/api/@wtf/release-trains/gitlab/functions/gitlabRegistryOf.md +1 -1
- package/api/@wtf/release-trains/gitlab/functions/uploadGeneric.md +1 -1
- package/api/@wtf/release-trains/gitlab/interfaces/GenericUpload.md +8 -8
- package/api/@wtf/release-trains/gitlab/interfaces/GitLabForgeOptions.md +97 -0
- package/api/@wtf/release-trains/gitlab/interfaces/GitLabOptions.md +4 -4
- package/api/@wtf/release-trains/gitlab/interfaces/GitLabProject.md +6 -6
- package/api/@wtf/release-trains/gitlab/interfaces/GitLabRegistry.md +5 -5
- package/api/@wtf/release-trains/gitlab/interfaces/HttpResponse.md +4 -4
- package/api/@wtf/release-trains/gitlab/interfaces/PackageQuery.md +9 -9
- package/api/@wtf/release-trains/gitlab/type-aliases/HttpFetch.md +1 -1
- package/api/@wtf/release-trains/gitlab/variables/LISTING_WAITS.md +1 -1
- package/api/@wtf/release-trains/interfaces/Train.md +7 -7
- package/api/@wtf/release-trains/links/README.md +16 -20
- package/api/@wtf/release-trains/links/functions/releaseLinks.md +15 -13
- package/api/@wtf/release-trains/links/interfaces/LinkOptions.md +56 -33
- package/api/@wtf/release-trains/packages/README.md +11 -16
- package/api/@wtf/release-trains/packages/functions/dependencyEdges.md +2 -2
- package/api/@wtf/release-trains/packages/functions/dependencyText.md +1 -1
- package/api/@wtf/release-trains/packages/functions/dependsOnErrors.md +2 -2
- package/api/@wtf/release-trains/packages/functions/ownersOf.md +2 -2
- package/api/@wtf/release-trains/packages/functions/packagesOf.md +2 -2
- package/api/@wtf/release-trains/packages/functions/releasedVersions.md +2 -2
- package/api/@wtf/release-trains/packages/functions/trainDependencies.md +2 -2
- package/api/@wtf/release-trains/packages/functions/trainOrder.md +2 -2
- package/api/@wtf/release-trains/packages/functions/unsatisfiedErrors.md +5 -4
- package/api/@wtf/release-trains/packages/interfaces/DependencyEdge.md +6 -6
- package/api/@wtf/release-trains/packages/interfaces/TrainDependency.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/VersionsRelease.md +24 -21
- package/api/@wtf/release-trains/paths/README.md +5 -4
- package/api/@wtf/release-trains/paths/functions/filterCommits.md +1 -1
- package/api/@wtf/release-trains/paths/functions/gitFilesOf.md +4 -4
- package/api/@wtf/release-trains/paths/functions/overlapError.md +1 -1
- package/api/@wtf/release-trains/paths/functions/trainOfPath.md +1 -1
- package/api/@wtf/release-trains/paths/functions/trainsOfCommit.md +1 -1
- package/api/@wtf/release-trains/paths/functions/trainsOfPath.md +1 -1
- package/api/@wtf/release-trains/paths/type-aliases/FilesOf.md +1 -1
- package/api/@wtf/release-trains/plan/README.md +38 -0
- package/api/@wtf/release-trains/plan/functions/planOf.md +45 -0
- package/api/@wtf/release-trains/plan/interfaces/PlanRelease.md +113 -0
- package/api/@wtf/release-trains/plan/interfaces/TrainPlan.md +72 -0
- package/api/@wtf/release-trains/schema/README.md +1 -1
- package/api/@wtf/release-trains/schema/interfaces/ConfigPart.md +6 -6
- package/api/@wtf/release-trains/schema/interfaces/RootOptions.md +7 -17
- package/api/@wtf/release-trains/schema/type-aliases/DependencyRule.md +1 -1
- package/api/@wtf/release-trains/schema/variables/DEPENDENCY_RULES.md +1 -1
- package/api/@wtf/release-trains/schema/variables/TAG_FORMAT_PATTERN.md +1 -1
- package/api/@wtf/release-trains/schema/variables/TRAIN_NAME_PATTERN.md +1 -1
- package/api/@wtf/release-trains/schema/variables/configSchema.md +2 -2
- package/api/@wtf/release-trains/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/release-trains/schema/variables/rootOptionsSchema.md +4 -4
- package/api/@wtf/release-trains/schema/variables/trainSchema.md +2 -2
- package/api/@wtf/release-trains/schema/variables/trainsSchema.md +2 -2
- package/api/@wtf/release-trains/trains/functions/changelogOf.md +1 -1
- package/api/@wtf/release-trains/trains/functions/matchersOf.md +3 -3
- package/api/@wtf/release-trains/trains/functions/overlapErrors.md +1 -1
- package/api/@wtf/release-trains/trains/functions/selectTrain.md +1 -1
- package/api/@wtf/release-trains/trains/functions/tagFormatOf.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainHeadedNotes.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainOfRun.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainOfTag.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainsErrors.md +1 -1
- package/api/@wtf/release-trains/trains/functions/trainsOfOptions.md +4 -9
- package/api/@wtf/release-trains/trains/variables/TRAIN_VARIABLE.md +1 -1
- package/api/@wtf/release-trains/trains/variables/VERSION.md +1 -1
- package/api/@wtf/release-trains/type-aliases/BranchSpec.md +1 -1
- package/api/@wtf/release-trains/type-aliases/Trains.md +1 -1
- package/api/@wtf/release-trains/verify/README.md +8 -7
- package/api/@wtf/release-trains/verify/functions/unreleasedDependencies.md +3 -3
- package/api/@wtf/release-trains/verify/functions/verifyTrain.md +3 -3
- package/api/@wtf/release-trains/verify/interfaces/UnreleasedDependencies.md +33 -30
- package/api/@wtf/release-trains/verify/interfaces/VerifiedTrain.md +5 -5
- package/api/@wtf/release-trains/verify/interfaces/VerifyRelease.md +27 -24
- package/api/@wtf/release-validate/errors/README.md +3 -4
- package/api/@wtf/release-validate/errors/classes/ValidateError.md +29 -32
- package/api/@wtf/release-validate/errors/type-aliases/ValidateErrorCode.md +1 -1
- package/api/@wtf/release-validate/errors/variables/VALIDATE_ERRORS.md +1 -1
- package/api/@wtf/release-validate/interfaces/ConfigIssue.md +4 -4
- package/api/@wtf/release-validate/json-schema/functions/fromJsonSchema.md +1 -1
- package/api/@wtf/release-validate/json-schema/functions/pathOfPointer.md +1 -1
- package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaError.md +3 -3
- package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaValidator.md +3 -3
- package/api/@wtf/release-validate/validate/functions/configErrors.md +1 -1
- package/api/@wtf/release-validate/validate/functions/isStandardSchema.md +1 -1
- package/api/@wtf/release-validate/validate/functions/pathText.md +1 -1
- package/api/@wtf/release-validate/validate/functions/validateConfig.md +1 -1
- package/api/@wtf/semantic-release/README.md +36 -0
- package/api/@wtf/semantic-release/errors/README.md +32 -0
- package/api/@wtf/semantic-release/errors/functions/marked.md +29 -0
- package/api/@wtf/semantic-release/errors/functions/markedStep.md +36 -0
- package/api/@wtf/semantic-release/errors/variables/SEMANTIC_RELEASE_ERROR.md +13 -0
- package/api/@wtf/{release-system/node → semantic-release}/functions/realPathOf.md +3 -3
- package/api/@wtf/semantic-release/functions/runOf.md +31 -0
- package/api/@wtf/semantic-release/interfaces/RunContext.md +31 -0
- package/api/@wtf/semantic-release/links/README.md +38 -0
- package/api/@wtf/{release-trains → semantic-release}/links/functions/forgetReleased.md +2 -2
- package/api/@wtf/{release-trains → semantic-release}/links/functions/recordReleased.md +3 -3
- package/api/@wtf/semantic-release/links/functions/releasedOf.md +28 -0
- package/api/@wtf/semantic-release/links/interfaces/ReleaseRun.md +41 -0
- package/api/@wtf/semantic-release/release/README.md +47 -0
- package/api/@wtf/semantic-release/release/functions/inTrain.md +42 -0
- package/api/@wtf/semantic-release/release/functions/stepRelease.md +35 -0
- package/api/@wtf/semantic-release/release/functions/trainNamed.md +34 -0
- package/api/@wtf/semantic-release/release/functions/trainPrefix.md +27 -0
- package/api/@wtf/semantic-release/release/interfaces/StepContext.md +63 -0
- package/api/@wtf/semantic-release/release/interfaces/StepOf.md +63 -0
- package/api/@wtf/semantic-release/schema/README.md +23 -0
- package/api/@wtf/{release-system/validator → semantic-release/schema}/functions/pluginEntriesOf.md +5 -5
- package/api/@wtf/semantic-release-cargo/README.md +32 -26
- package/api/@wtf/semantic-release-cargo/functions/indexLookup.md +3 -3
- package/api/@wtf/semantic-release-cargo/interfaces/CargoPluginOptions.md +46 -23
- package/api/@wtf/semantic-release-cargo/interfaces/CargoRelease.md +3 -3
- package/api/@wtf/semantic-release-cargo/schema/README.md +2 -2
- package/api/@wtf/semantic-release-cargo/schema/type-aliases/CargoOptions.md +2 -2
- package/api/@wtf/semantic-release-cargo/schema/variables/cargoOptionsSchema.md +2 -2
- package/api/@wtf/semantic-release-cargo/schema/variables/cargoSchema.md +2 -2
- package/api/@wtf/semantic-release-cargo/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-cargo/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-cargo/variables/default.md +43 -14
- package/api/@wtf/semantic-release-cargo/{functions → variables}/prepare.md +7 -7
- package/api/@wtf/semantic-release-cargo/{functions → variables}/publish.md +6 -5
- package/api/@wtf/semantic-release-cargo/variables/verifyConditions.md +37 -0
- package/api/@wtf/semantic-release-cargo/variables/verifyRelease.md +37 -0
- package/api/@wtf/semantic-release-go/README.md +40 -36
- package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +7 -17
- package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +3 -3
- package/api/@wtf/semantic-release-go/schema/README.md +2 -2
- package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +2 -2
- package/api/@wtf/semantic-release-go/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +2 -2
- package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +2 -2
- package/api/@wtf/semantic-release-go/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-go/variables/default.md +26 -22
- package/api/@wtf/semantic-release-go/variables/prepare.md +40 -0
- package/api/@wtf/semantic-release-go/variables/publish.md +45 -0
- package/api/@wtf/semantic-release-go/{functions → variables}/verifyConditions.md +8 -7
- package/api/@wtf/semantic-release-go/variables/verifyRelease.md +40 -0
- package/api/@wtf/semantic-release-maven/README.md +38 -20
- package/api/@wtf/semantic-release-maven/functions/pomLookup.md +3 -3
- package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +12 -22
- package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/README.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +2 -2
- package/api/@wtf/semantic-release-maven/variables/default.md +45 -16
- package/api/@wtf/semantic-release-maven/variables/prepare.md +41 -0
- package/api/@wtf/semantic-release-maven/variables/publish.md +44 -0
- package/api/@wtf/semantic-release-maven/{functions → variables}/verifyConditions.md +6 -7
- package/api/@wtf/semantic-release-maven/variables/verifyRelease.md +36 -0
- package/api/@wtf/semantic-release-npm/README.md +39 -29
- package/api/@wtf/semantic-release-npm/functions/loadPublisher.md +1 -1
- package/api/@wtf/semantic-release-npm/interfaces/PublishPluginOptions.md +24 -82
- package/api/@wtf/semantic-release-npm/interfaces/PublishedRelease.md +4 -4
- package/api/@wtf/semantic-release-npm/interfaces/SmokeOption.md +2 -2
- package/api/@wtf/semantic-release-npm/schema/README.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/type-aliases/PublishOptions.md +3 -3
- package/api/@wtf/semantic-release-npm/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-npm/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-npm/schema/variables/publishOptionsSchema.md +2 -2
- package/api/@wtf/semantic-release-npm/schema/variables/publishSchema.md +2 -2
- package/api/@wtf/semantic-release-npm/type-aliases/PublisherSpec.md +1 -1
- package/api/@wtf/semantic-release-npm/{functions → variables}/addChannel.md +7 -6
- package/api/@wtf/semantic-release-npm/variables/default.md +51 -15
- package/api/@wtf/semantic-release-npm/variables/fail.md +36 -0
- package/api/@wtf/semantic-release-npm/variables/prepare.md +37 -0
- package/api/@wtf/semantic-release-npm/{functions → variables}/publish.md +8 -6
- package/api/@wtf/semantic-release-npm/{functions → variables}/verifyConditions.md +6 -4
- package/api/@wtf/semantic-release-npm/variables/verifyRelease.md +35 -0
- package/api/@wtf/semantic-release-oci/README.md +17 -14
- package/api/@wtf/semantic-release-oci/interfaces/OciPluginOptions.md +23 -20
- package/api/@wtf/semantic-release-oci/interfaces/OciRelease.md +3 -3
- package/api/@wtf/semantic-release-oci/schema/README.md +3 -3
- package/api/@wtf/semantic-release-oci/schema/type-aliases/OciOptions.md +2 -2
- package/api/@wtf/semantic-release-oci/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-oci/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-oci/schema/variables/ociOptionsSchema.md +2 -2
- package/api/@wtf/semantic-release-oci/schema/variables/ociSchema.md +2 -2
- package/api/@wtf/semantic-release-oci/variables/default.md +40 -7
- package/api/@wtf/semantic-release-oci/variables/publish.md +47 -0
- package/api/@wtf/semantic-release-oci/{functions → variables}/verifyConditions.md +7 -5
- package/api/@wtf/semantic-release-oci/variables/verifyRelease.md +35 -0
- package/api/@wtf/semantic-release-replace/README.md +4 -4
- package/api/@wtf/semantic-release-replace/functions/functionOf.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/templatesOf.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/README.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/interfaces/ModuleExport.md +3 -3
- package/api/@wtf/semantic-release-replace/schema/interfaces/ReplaceOptions.md +4 -8
- package/api/@wtf/semantic-release-replace/schema/interfaces/RootTemplates.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacement.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacementSpec.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTemplates.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTo.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplateSet.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplatesOption.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/exportedSetSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/replaceOptionsSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/replacementSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/rootTemplatesSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/templateSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/schema/variables/templatesSchema.md +2 -2
- package/api/@wtf/semantic-release-replace/type-aliases/ReplacePluginOptions.md +13 -0
- package/api/@wtf/semantic-release-replace/variables/default.md +5 -5
- package/api/@wtf/semantic-release-replace/{functions → variables}/prepare.md +6 -6
- package/api/@wtf/semantic-release-replace/{functions → variables}/verifyConditions.md +5 -5
- package/api/@wtf/semantic-release-trains/config/functions/skipPlugins.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/stepId.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainAssets.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainChangelog.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainOfTag.md +1 -1
- package/api/@wtf/semantic-release-trains/config/functions/trainTagFormat.md +1 -1
- package/api/@wtf/semantic-release-trains/config/interfaces/AssetsOptions.md +4 -4
- package/api/@wtf/semantic-release-trains/config/interfaces/SkipOptions.md +3 -3
- package/api/@wtf/semantic-release-trains/config/variables/BRANCHES.md +1 -1
- package/api/@wtf/semantic-release-trains/config/variables/BREAKING.md +1 -1
- package/api/@wtf/semantic-release-trains/config/variables/TITLE.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/listingFetchOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/skipRuleOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +3 -2
- package/api/@wtf/semantic-release-trains/defaults/functions/stepOptionsOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/interfaces/ListingRetry.md +3 -3
- package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +35 -12
- package/api/@wtf/semantic-release-trains/defaults/interfaces/StepOptionsContext.md +18 -7
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.md +3 -2
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/StepOptions.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/TrainOptions.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/SKIP_RULES.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_OPTIONS.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_STEP_OPTIONS.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/variables/releaseAssets.md +2 -2
- package/api/@wtf/semantic-release-trains/errors/type-aliases/PluginErrorCode.md +1 -1
- package/api/@wtf/semantic-release-trains/errors/variables/PLUGIN_ERRORS.md +1 -1
- package/api/@wtf/semantic-release-trains/info/README.md +3 -3
- package/api/@wtf/semantic-release-trains/info/functions/decideTrain.md +1 -1
- package/api/@wtf/semantic-release-trains/info/functions/dotenvOf.md +1 -1
- package/api/@wtf/semantic-release-trains/info/functions/infoOf.md +3 -2
- package/api/@wtf/semantic-release-trains/info/interfaces/DecideRun.md +4 -4
- package/api/@wtf/semantic-release-trains/info/interfaces/InfoRun.md +36 -33
- package/api/@wtf/semantic-release-trains/info/interfaces/TrainDecision.md +5 -5
- package/api/@wtf/semantic-release-trains/info/interfaces/TrainInfo.md +5 -5
- package/api/@wtf/semantic-release-trains/interfaces/TrainsEntryOptions.md +5 -5
- package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -17
- package/api/@wtf/semantic-release-trains/schema/README.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-trains/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-trains/schema/variables/pluginSpecSchema.md +2 -2
- package/api/@wtf/semantic-release-trains/schema/variables/skipRuleSchema.md +2 -2
- package/api/@wtf/semantic-release-trains/schema/variables/trainsEntrySchema.md +2 -2
- package/api/@wtf/semantic-release-trains/schema/variables/trainsPluginSchema.md +2 -2
- package/api/@wtf/semantic-release-trains/type-aliases/PluginSpec.md +1 -1
- package/api/@wtf/semantic-release-trains/type-aliases/TrainsPluginOptions.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/addChannel.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/analyzeCommits.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/default.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/fail.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/generateNotes.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/prepare.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/publish.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/success.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-trains/variables/verifyRelease.md +1 -1
- package/api/@wtf/semantic-release-validate/README.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/configOf.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/loadSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/interfaces/ValidatePluginOptions.md +2 -2
- package/api/@wtf/semantic-release-validate/schema/interfaces/Validator.md +2 -2
- package/api/@wtf/semantic-release-validate/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/schema/variables/validateOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/variables/default.md +2 -2
- package/api/@wtf/semantic-release-validate/{functions → variables}/verifyConditions.md +5 -5
- package/api/README.md +22 -10
- package/api/trains.json +29 -10
- package/guides/ci-recipes.md +29 -27
- package/guides/configuring-trains.md +24 -20
- package/guides/dependency-rules.md +17 -17
- package/guides/ecosystems.md +43 -25
- package/guides/getting-started.md +12 -10
- package/guides/platform.md +179 -0
- package/guides/publishing-crates.md +58 -17
- package/guides/publishing-go-modules.md +55 -11
- package/guides/publishing-maven.md +48 -10
- package/guides/publishing-oci.md +36 -5
- package/guides/publishing.md +105 -84
- package/guides/troubleshooting.md +12 -12
- package/package.json +24 -18
- package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +0 -23
- package/api/@wtf/release-npm/interfaces/PublishTrainOptions.md +0 -144
- package/api/@wtf/release-npm/release/functions/checkTrain.md +0 -32
- package/api/@wtf/release-npm/release/functions/distTagOf.md +0 -31
- package/api/@wtf/release-npm/release/functions/packTrain.md +0 -39
- package/api/@wtf/release-npm/release/functions/publishTrain.md +0 -37
- package/api/@wtf/release-npm/release/functions/publishedOfResolved.md +0 -36
- package/api/@wtf/release-npm/release/functions/releaseTrain.md +0 -31
- package/api/@wtf/release-npm/release/functions/resolveManifests.md +0 -37
- package/api/@wtf/release-npm/release/functions/tagTrain.md +0 -36
- package/api/@wtf/release-npm/release/interfaces/CheckRelease.md +0 -222
- package/api/@wtf/release-npm/release/interfaces/PackedTrain.md +0 -125
- package/api/@wtf/release-npm/release/interfaces/PublishedTrain.md +0 -47
- package/api/@wtf/release-npm/release/interfaces/ResolveRelease.md +0 -220
- package/api/@wtf/release-npm/release/interfaces/ResolvedTrain.md +0 -55
- package/api/@wtf/release-npm/release/interfaces/TagRelease.md +0 -174
- package/api/@wtf/release-npm/release/type-aliases/LookedUpTrain.md +0 -13
- package/api/@wtf/release-npm/release/type-aliases/ReleaseRun.md +0 -13
- package/api/@wtf/release-npm/workspace/interfaces/WorkspaceOptions.md +0 -19
- package/api/@wtf/release-oci/tags/functions/releaseTagsOf.md +0 -39
- package/api/@wtf/release-oci/tags/functions/tagsOfRelease.md +0 -33
- package/api/@wtf/release-system/README.md +0 -71
- package/api/@wtf/release-system/errors/README.md +0 -42
- package/api/@wtf/release-system/errors/functions/throwAll.md +0 -26
- package/api/@wtf/release-system/errors/type-aliases/SystemErrorCode.md +0 -13
- package/api/@wtf/release-system/errors/variables/SYSTEM_ERRORS.md +0 -23
- package/api/@wtf/release-system/git/functions/gitOf.md +0 -39
- package/api/@wtf/release-system/git/interfaces/GitContext.md +0 -46
- package/api/@wtf/release-system/git/interfaces/LogCommit.md +0 -43
- package/api/@wtf/release-system/node/README.md +0 -25
- package/api/@wtf/release-system/node/functions/nodeSystem.md +0 -20
- package/api/@wtf/release-system/node/functions/systemOf.md +0 -29
- package/api/@wtf/release-system/system/README.md +0 -39
- package/api/@wtf/release-system/system/interfaces/DirEntry.md +0 -27
- package/api/@wtf/release-system/system/interfaces/ExecOptions.md +0 -41
- package/api/@wtf/release-system/system/interfaces/ExecResult.md +0 -35
- package/api/@wtf/release-system/system/interfaces/System.md +0 -73
- package/api/@wtf/release-system/system/interfaces/SystemFs.md +0 -184
- package/api/@wtf/release-system/system/type-aliases/Exec.md +0 -41
- package/api/@wtf/release-system/system/type-aliases/SystemInput.md +0 -20
- package/api/@wtf/release-system/validator/interfaces/OptionIssue.md +0 -63
- package/api/@wtf/release-system/validator/interfaces/Property.md +0 -49
- package/api/@wtf/release-system/validator/type-aliases/JsonSchema.md +0 -17
- package/api/@wtf/release-system/validator/type-aliases/Path.md +0 -13
- package/api/@wtf/release-trains/ecosystem/functions/isEcosystem.md +0 -27
- package/api/@wtf/release-trains/ecosystem/functions/readPackages.md +0 -33
- package/api/@wtf/release-trains/ecosystem/interfaces/Dependency.md +0 -43
- package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemContext.md +0 -68
- package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemPackages.md +0 -27
- package/api/@wtf/release-trains/ecosystem/interfaces/Package.md +0 -71
- package/api/@wtf/release-trains/ecosystem/type-aliases/DependencyKind.md +0 -16
- package/api/@wtf/release-trains/ecosystem/variables/DEPENDENCY_KINDS.md +0 -13
- package/api/@wtf/release-trains/generated/functions/listGenerated.md +0 -41
- package/api/@wtf/release-trains/generated/functions/readGenerated.md +0 -39
- package/api/@wtf/release-trains/generated/functions/stageGeneratedFolders.md +0 -29
- package/api/@wtf/release-trains/generated/functions/unlistedIn.md +0 -42
- package/api/@wtf/release-trains/generated/interfaces/GeneratedOptions.md +0 -19
- package/api/@wtf/release-trains/generated/interfaces/StageOptions.md +0 -73
- package/api/@wtf/release-trains/generated/variables/GENERATED.md +0 -13
- package/api/@wtf/release-trains/links/functions/releasedOf.md +0 -28
- package/api/@wtf/release-trains/links/interfaces/PackageRegistry.md +0 -41
- package/api/@wtf/release-trains/links/interfaces/ReleaseLink.md +0 -41
- package/api/@wtf/release-trains/links/interfaces/ReleaseRun.md +0 -41
- package/api/@wtf/release-trains/links/interfaces/ReleasedPackage.md +0 -92
- package/api/@wtf/release-trains/packages/interfaces/OrderFault.md +0 -39
- package/api/@wtf/release-trains/packages/interfaces/OrderPins.md +0 -27
- package/api/@wtf/release-trains/packages/interfaces/PublishOrder.md +0 -35
- package/api/@wtf/semantic-release-cargo/functions/verifyConditions.md +0 -39
- package/api/@wtf/semantic-release-go/functions/prepare.md +0 -41
- package/api/@wtf/semantic-release-go/functions/publish.md +0 -43
- package/api/@wtf/semantic-release-go/functions/verifyRelease.md +0 -38
- package/api/@wtf/semantic-release-maven/functions/prepare.md +0 -41
- package/api/@wtf/semantic-release-maven/functions/publish.md +0 -43
- package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +0 -32
- package/api/@wtf/semantic-release-npm/functions/fail.md +0 -36
- package/api/@wtf/semantic-release-npm/functions/prepare.md +0 -34
- package/api/@wtf/semantic-release-oci/functions/publish.md +0 -44
- package/api/@wtf/semantic-release-replace/interfaces/ReplacePluginOptions.md +0 -71
- package/guides/system.md +0 -175
package/guides/ecosystems.md
CHANGED
|
@@ -14,8 +14,13 @@ An ecosystem is a module that reads one kind of manifest, such as npm's `package
|
|
|
14
14
|
depends on.
|
|
15
15
|
- `satisfies` says whether a version is within a range, by the ecosystem's own rules.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
An ecosystem that releases implements the steps of the contract of `@wtf/release/contract` too:
|
|
18
|
+
`verify`, `prepare`, `smoke`, `publish` and `move`, each optional but `publish`. Any driver runs
|
|
19
|
+
them, a semantic-release plugin, a CLI or a test, over a plan of the packages to publish (see
|
|
20
|
+
[Release the packages](#release-the-packages)).
|
|
21
|
+
|
|
22
|
+
Five ecosystems are built in, each one releasing by the contract, and each with a semantic-release
|
|
23
|
+
plugin of its own that drives it:
|
|
19
24
|
|
|
20
25
|
| Ecosystem | Package | Plugin | Manifests it reads |
|
|
21
26
|
| --------- | -------------------- | ----------------------------- | --------------------------------------------------------------------------------------- |
|
|
@@ -70,8 +75,8 @@ ecosystem costs a repo nothing. For example, cargo's ecosystem gives no package
|
|
|
70
75
|
a train (`EDEPENDENCYNOTRAIN`). That train must have released (`EDEPENDENCYNORELEASE`), and one
|
|
71
76
|
of its releases must be within the range (`EDEPENDENCYUNSATISFIED`).
|
|
72
77
|
- **Versions.** A release stamps each range on another train's package with that train's last
|
|
73
|
-
release, read from the train's tags that `HEAD` holds
|
|
74
|
-
|
|
78
|
+
release, read from the train's tags that `HEAD` holds. `planOf` of `@wtf/release-trains/plan`
|
|
79
|
+
gives them in the plan of the train, the version of each package of the repo.
|
|
75
80
|
- **Cascade.** When another train's last release falls outside a range that this train's last
|
|
76
81
|
release published, this train releases again. It releases a major when a major left a `peer`
|
|
77
82
|
range behind, and a patch for any other kind.
|
|
@@ -107,8 +112,8 @@ See [Publish npm packages](publishing.md).
|
|
|
107
112
|
|
|
108
113
|
`@wtf/release-cargo` reads the Cargo workspace at the root of the repo with
|
|
109
114
|
`cargo metadata --no-deps --format-version 1`. For a commit, it exports the files with
|
|
110
|
-
`git archive` into
|
|
111
|
-
them.
|
|
115
|
+
`git archive` into a temporary folder of the platform, unpacks them with `tar`, reads them, and
|
|
116
|
+
removes them.
|
|
112
117
|
|
|
113
118
|
- **Published:** every crate without `publish = false`.
|
|
114
119
|
- **Kinds:** a normal dependency is `runtime`, a build dependency is `build`, and a dev-dependency
|
|
@@ -215,13 +220,13 @@ reads.
|
|
|
215
220
|
|
|
216
221
|
### The interface
|
|
217
222
|
|
|
218
|
-
`@wtf/release
|
|
223
|
+
`@wtf/release/ecosystem` declares the interface:
|
|
219
224
|
|
|
220
225
|
```ts fragment
|
|
221
226
|
export interface Ecosystem {
|
|
222
227
|
/** 'npm', 'cargo': as an error, the notes and a key of the trains say it. */
|
|
223
228
|
readonly name: string
|
|
224
|
-
/** The packages of the repo, of the working tree, or at `context.ref`,
|
|
229
|
+
/** The packages of the repo, of the working tree, or at `context.ref`, of `context.root`. */
|
|
225
230
|
packages(context: EcosystemContext): Promise<readonly Package[]>
|
|
226
231
|
/** The range a release publishes of `range`, of `version`, the release of the package it names. */
|
|
227
232
|
resolve(range: string, version: string): string
|
|
@@ -246,8 +251,8 @@ export interface Dependency {
|
|
|
246
251
|
|
|
247
252
|
The trains call `packages` for the working tree, with no `ref`. They also call it for a commit, such
|
|
248
253
|
as the tag of a train's last release, which a cascade reads. `packages` does everything through its
|
|
249
|
-
context
|
|
250
|
-
[The
|
|
254
|
+
context, as every library does: the files of the folder of the repo, `root`, and git and the
|
|
255
|
+
ecosystem's own tool by the `platform`. See [The platform](platform.md).
|
|
251
256
|
|
|
252
257
|
### An example
|
|
253
258
|
|
|
@@ -256,9 +261,10 @@ of its own, a `release.json` in each folder. The manifest holds a name, a flag t
|
|
|
256
261
|
package publishes, and dependencies at exact versions:
|
|
257
262
|
|
|
258
263
|
```ts
|
|
259
|
-
import {
|
|
260
|
-
import {
|
|
261
|
-
import
|
|
264
|
+
import { readFile } from '@wtf/release/files'
|
|
265
|
+
import { git, trackedFiles } from '@wtf/release/git'
|
|
266
|
+
import { basenameOf, dirnameOf } from '@wtf/release/posix'
|
|
267
|
+
import type { Ecosystem, EcosystemContext, Package } from '@wtf/release/ecosystem'
|
|
262
268
|
|
|
263
269
|
/** What a release.json holds. */
|
|
264
270
|
interface Manifest {
|
|
@@ -269,8 +275,7 @@ interface Manifest {
|
|
|
269
275
|
|
|
270
276
|
/** Each release.json of the repo, of the working tree or of `context.ref`, by git. */
|
|
271
277
|
async function manifestsOf(context: EcosystemContext): Promise<[string, Manifest][]> {
|
|
272
|
-
const {
|
|
273
|
-
const { ref } = context
|
|
278
|
+
const { root, ref } = context
|
|
274
279
|
const files = (
|
|
275
280
|
ref === undefined
|
|
276
281
|
? await trackedFiles(context)
|
|
@@ -280,7 +285,7 @@ async function manifestsOf(context: EcosystemContext): Promise<[string, Manifest
|
|
|
280
285
|
files.map(async (file): Promise<[string, Manifest]> => {
|
|
281
286
|
const text =
|
|
282
287
|
ref === undefined
|
|
283
|
-
? await
|
|
288
|
+
? await readFile(root, file)
|
|
284
289
|
: await git(['show', `${ref}:${file}`], context)
|
|
285
290
|
return [file, JSON.parse(text) as Manifest]
|
|
286
291
|
})
|
|
@@ -325,16 +330,29 @@ export default ecosystem
|
|
|
325
330
|
such as `1.5.0-beta.1` for `^1.4.0`, because the trains release prereleases on their channels.
|
|
326
331
|
- **No manifest means no package.** In a repo without any of the ecosystem's manifests, return `[]`
|
|
327
332
|
rather than fail. A config can then name the ecosystem before the first manifest exists.
|
|
328
|
-
- **Always use the
|
|
329
|
-
module does outside itself goes through `context.
|
|
330
|
-
|
|
333
|
+
- **Always use the context.** Do not use `node:*`, `process` or the global `fetch`. Everything the
|
|
334
|
+
module does outside itself goes through `context.root` and `context.platform`. The trains can
|
|
335
|
+
then run it on a CLI's platform, or on a test's platform and folder in memory.
|
|
336
|
+
|
|
337
|
+
### Release the packages
|
|
331
338
|
|
|
332
|
-
|
|
339
|
+
To release its packages too, the ecosystem implements `ReleasingEcosystem` of
|
|
340
|
+
`@wtf/release/contract`, of options of its own: `publish`, and the steps of `verify`, `prepare`,
|
|
341
|
+
`smoke` and `move` that fit it. Each step takes the `Release` (the version, the folder of the repo,
|
|
342
|
+
the platform, whether it is a dry run, and where to log), the `Plan` of the ecosystem (its packages
|
|
343
|
+
to publish, in order, and the version of each package of the repo), and its options. It knows no
|
|
344
|
+
train: a driver gives it the plan, as `planOf` of `@wtf/release-trains/plan` works one out for a
|
|
345
|
+
train, and runs a step of every ecosystem by `runStep` of `@wtf/release/driver`. The test ecosystem
|
|
346
|
+
of `@wtf/release` (`packages/release/test/contract.test.ts`) implements every step, and each
|
|
347
|
+
built-in library one, as the guide of each shows.
|
|
333
348
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
`@wtf/semantic-release-maven` are. The plugin:
|
|
349
|
+
A semantic-release plugin over it, as `@wtf/semantic-release-npm`, `-cargo`, `-go`, `-maven` and
|
|
350
|
+
`-oci` are:
|
|
337
351
|
|
|
338
352
|
- reads `trains`, `ecosystems` and `train` from the root of the config;
|
|
339
|
-
-
|
|
340
|
-
-
|
|
353
|
+
- works out the plan of its train with `planOf`, which throws the trains' errors;
|
|
354
|
+
- runs each step of the ecosystem in its step of semantic-release, on the platform and the folder of
|
|
355
|
+
the run that `runOf` of `@wtf/semantic-release` gives, marking the errors that leave it by
|
|
356
|
+
`markedStep`;
|
|
357
|
+
- records what `publish` published for the links of the release, by `recordReleased` of
|
|
358
|
+
`@wtf/semantic-release/links`.
|
|
@@ -36,15 +36,16 @@ You can also write an ecosystem of your own for any other kind of package. See
|
|
|
36
36
|
wtf release has two layers:
|
|
37
37
|
|
|
38
38
|
- **Libraries** do the work. They do not depend on semantic-release or on any other release tool.
|
|
39
|
-
Each function takes the
|
|
40
|
-
from a CLI or a script of your own. See [The
|
|
39
|
+
Each function takes the folder of the repo and the platform it runs on from its caller, so you
|
|
40
|
+
can also run the libraries from a CLI or a script of your own. See [The platform](platform.md).
|
|
41
41
|
- **Plugins** let semantic-release run the libraries. Each plugin is a thin adapter over its
|
|
42
42
|
library.
|
|
43
43
|
|
|
44
44
|
The libraries:
|
|
45
45
|
|
|
46
|
-
- `@wtf/release
|
|
47
|
-
option validators and `ReleaseError`. It knows nothing about
|
|
46
|
+
- `@wtf/release` is the base of the other libraries: the platform they run on, the files of the
|
|
47
|
+
repo, programs, paths and globs, git, option validators and `ReleaseError`. It knows nothing about
|
|
48
|
+
trains.
|
|
48
49
|
- `@wtf/release-trains` handles the trains: their commits, their checks, and the folders a build
|
|
49
50
|
generates.
|
|
50
51
|
- `@wtf/release-npm`, `@wtf/release-cargo`, `@wtf/release-go`, `@wtf/release-maven` and
|
|
@@ -55,6 +56,8 @@ The libraries:
|
|
|
55
56
|
|
|
56
57
|
The plugins:
|
|
57
58
|
|
|
59
|
+
- `@wtf/semantic-release` is what every plugin shares: it makes Node's platform and the folder of
|
|
60
|
+
the repo for a run, and marks the libraries' errors for semantic-release.
|
|
58
61
|
- `@wtf/semantic-release-trains` checks the trains, gives a plugin it wraps only the train's
|
|
59
62
|
commits, and stages the folders a build generates.
|
|
60
63
|
- `@wtf/semantic-release-npm`, `@wtf/semantic-release-cargo`, `@wtf/semantic-release-go`,
|
|
@@ -107,15 +110,14 @@ The examples in these guides use the trains that this repo releases its own pack
|
|
|
107
110
|
|
|
108
111
|
| Train | Folders |
|
|
109
112
|
| ---------- | ----------------------------------------------------------------- |
|
|
110
|
-
| `
|
|
113
|
+
| `release` | `packages/release`, `packages/semantic-release` |
|
|
111
114
|
| `trains` | `packages/release-trains`, `packages/semantic-release-trains`, … |
|
|
112
115
|
| `replace` | `packages/release-replace`, `packages/semantic-release-replace` |
|
|
113
116
|
| `validate` | `packages/release-validate`, `packages/semantic-release-validate` |
|
|
114
117
|
| `docs` | `packages/docs` |
|
|
115
118
|
|
|
116
|
-
`@wtf/release
|
|
117
|
-
`
|
|
118
|
-
package, so `docs` releases last.
|
|
119
|
+
Each library lists `@wtf/release`, and each plugin `@wtf/semantic-release`, so `trains`, `replace`
|
|
120
|
+
and `validate` depend on `release`. The docs package lists every package, so `docs` releases last.
|
|
119
121
|
|
|
120
122
|
Each example shows only the trains it needs. The repo's own `release.config.mjs` declares them all,
|
|
121
123
|
and tags each one `<train>-v<version>`. Here is a config with two trains:
|
|
@@ -192,7 +194,7 @@ releases nothing:
|
|
|
192
194
|
RELEASE_TRAIN=trains npx semantic-release --dry-run --no-ci
|
|
193
195
|
```
|
|
194
196
|
|
|
195
|
-
Release a train that another train depends on first, such as `
|
|
197
|
+
Release a train that another train depends on first, such as `release` before `trains`. The plugin
|
|
196
198
|
warns you when a dependency train has commits that it has not released. See
|
|
197
199
|
[Trains that depend on other trains](dependency-rules.md).
|
|
198
200
|
|
|
@@ -214,7 +216,7 @@ copy of each package that it packs. See [Publish npm packages](publishing.md).
|
|
|
214
216
|
train's tag on your host.
|
|
215
217
|
Wrapped in the trains plugin, `@semantic-release/gitlab` links each package that the release
|
|
216
218
|
published. See [The links of the release](publishing.md#the-links-of-the-release).
|
|
217
|
-
- [The
|
|
219
|
+
- [The platform](platform.md): run the libraries on a platform of your own.
|
|
218
220
|
|
|
219
221
|
## Make the first release
|
|
220
222
|
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# The platform
|
|
2
|
+
|
|
3
|
+
Read this page when you want to run the libraries outside semantic-release, from a CLI of your own,
|
|
4
|
+
or in tests. You can also use it to change how the plugins run programs.
|
|
5
|
+
|
|
6
|
+
Every function of the libraries, such as `@wtf/release-trains`, `@wtf/release-npm` and
|
|
7
|
+
`@wtf/release-replace`, reaches the outside world through two things its caller gives it:
|
|
8
|
+
|
|
9
|
+
- `root`, the folder of the repo. It is a `FileSystemDirectoryHandle` of the File System standard,
|
|
10
|
+
so it can be a folder on disk, a folder in memory, or a browser's.
|
|
11
|
+
- `platform`, what runs programs, fetches and makes temporary folders. It is a part of the platform
|
|
12
|
+
of [`@wtf/platform`](https://www.npmjs.com/package/@wtf/platform), picked to what the function
|
|
13
|
+
uses.
|
|
14
|
+
|
|
15
|
+
The types come from `@wtf/release`, the base that the other libraries build on. A function requires
|
|
16
|
+
them from its caller and never makes them itself. None of the library modules names Node. Each
|
|
17
|
+
caller passes what fits it:
|
|
18
|
+
|
|
19
|
+
- A semantic-release plugin passes Node's platform and the folder of the run.
|
|
20
|
+
- A CLI passes Node's, or a platform of its own.
|
|
21
|
+
- A test passes a platform and a folder in memory.
|
|
22
|
+
|
|
23
|
+
Each function takes only what it uses:
|
|
24
|
+
|
|
25
|
+
| It takes | What it holds | Which functions take it |
|
|
26
|
+
| ----------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
27
|
+
| `root` alone | The folder of the repo. | A function that only reads or writes files of the repo. |
|
|
28
|
+
| `RepoPlatform` | `spawn`, which starts a program, `env`, the environment a program gets, and `dirs.cwd`, the working folder. | A function that runs git, or another program of the repo. |
|
|
29
|
+
| `ReleasePlatform` | A `RepoPlatform`, with `fetch`, and `path`, `navigator`, `crypto` and `dirs.temp` for temporary folders. | A release that fetches, or stages what it packs outside the repo. |
|
|
30
|
+
|
|
31
|
+
`platform.dirs.cwd` is the path of the folder that `root` is the handle of, and programs run there.
|
|
32
|
+
`RepoContext` holds the two together, `{ root, platform }`:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import type { RepoContext } from '@wtf/release'
|
|
36
|
+
import { readFile } from '@wtf/release/files'
|
|
37
|
+
import { run } from '@wtf/release/process'
|
|
38
|
+
|
|
39
|
+
/** The name of the root package, and the commit of the working tree. */
|
|
40
|
+
export async function describe({ root, platform }: RepoContext) {
|
|
41
|
+
const { name } = JSON.parse(await readFile(root, 'package.json')) as { name: string }
|
|
42
|
+
const { stdout } = await run(platform, 'git', ['rev-parse', 'HEAD'])
|
|
43
|
+
return `${name}@${stdout.trim()}`
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`@wtf/release/files` reads and writes the files of a folder by their paths from it, with `/`:
|
|
48
|
+
`readFile`, `readBytes`, `writeFile`, `exists`, `readDir`, `makeDir`, `remove` and `copy`.
|
|
49
|
+
`@wtf/release/posix` joins paths without a platform.
|
|
50
|
+
|
|
51
|
+
`run` of `@wtf/release/process` runs a program in the folder of the repo, or in a folder of it, and
|
|
52
|
+
returns `{ stdout, stderr, code }`. The program gets the platform's `env`, or the environment you
|
|
53
|
+
give it whole; `envOf` makes one of the platform's with variables of your own. A non-zero exit code
|
|
54
|
+
is not a failure of `run` itself, and the caller decides what it means. `run` rejects only when the
|
|
55
|
+
program cannot start.
|
|
56
|
+
|
|
57
|
+
## Use Node's platform
|
|
58
|
+
|
|
59
|
+
A CLI or a script on Node makes Node's platform with `nodePlatform` of
|
|
60
|
+
`@wtf/platform-node/platform`, and the folder of the repo with `nodeDirectory` of
|
|
61
|
+
`@wtf/platform-fs-node/handles`. Node's platform works in `process.cwd()` and gives each program
|
|
62
|
+
`process.env`:
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import type { ReleasePlatform } from '@wtf/release'
|
|
66
|
+
import { readWorkspace } from '@wtf/release-npm/workspace'
|
|
67
|
+
import { nodeDirectory } from '@wtf/platform-fs-node/handles'
|
|
68
|
+
import { nodeStorage } from '@wtf/platform-fs-node/storage'
|
|
69
|
+
import { nodePlatform } from '@wtf/platform-node/platform'
|
|
70
|
+
|
|
71
|
+
const platform: ReleasePlatform = nodePlatform({
|
|
72
|
+
fetch: (input, init) => fetch(input, init),
|
|
73
|
+
storage: nodeStorage()
|
|
74
|
+
})
|
|
75
|
+
const root = await nodeDirectory(platform.dirs.cwd)
|
|
76
|
+
|
|
77
|
+
export const packages = await readWorkspace(root)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Write a platform of your own
|
|
81
|
+
|
|
82
|
+
A CLI gives each function the platform it runs on, so it can change any member of it. This example
|
|
83
|
+
logs each program before it runs:
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
import type { ReleasePlatform, RepoContext } from '@wtf/release'
|
|
87
|
+
import npm from '@wtf/release-npm'
|
|
88
|
+
import { verifyTrain } from '@wtf/release-trains/verify'
|
|
89
|
+
|
|
90
|
+
/** A platform whose programs are logged before they run, over the one a CLI has. */
|
|
91
|
+
export const logged = (platform: ReleasePlatform): ReleasePlatform => ({
|
|
92
|
+
...platform,
|
|
93
|
+
spawn: (command, args, options) => {
|
|
94
|
+
console.error(`$ ${command} ${args.join(' ')}`)
|
|
95
|
+
return platform.spawn(command, args, options)
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
export function check({ root, platform }: RepoContext<ReleasePlatform>) {
|
|
100
|
+
return verifyTrain({
|
|
101
|
+
trains: {
|
|
102
|
+
validate: { paths: ['packages/release-validate', 'packages/semantic-release-validate'] }
|
|
103
|
+
},
|
|
104
|
+
train: 'validate',
|
|
105
|
+
ecosystems: [npm],
|
|
106
|
+
root,
|
|
107
|
+
platform: logged(platform)
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## The platform of the plugins
|
|
113
|
+
|
|
114
|
+
Each plugin makes Node's platform and the folder of the repo for the run, with `runOf` of
|
|
115
|
+
`@wtf/semantic-release`. It makes them from the folder and the environment that semantic-release
|
|
116
|
+
gives each step, `cwd` and `env`, which the plugin requires. It passes them to every call into its
|
|
117
|
+
library, so each program runs in that folder and with that environment.
|
|
118
|
+
|
|
119
|
+
A plugin knows it runs on Node, and a library does not: a library always takes the platform it is
|
|
120
|
+
given and assumes none. So a plugin has no option of its platform, and lays nothing over Node's. To
|
|
121
|
+
change what the programs of a release see, change the environment of the run, as the variables of
|
|
122
|
+
its job: `GIT_TERMINAL_PROMPT=0` stops every program of the release from asking for a password.
|
|
123
|
+
|
|
124
|
+
A test of a plugin that runs it on a platform in memory mocks `@wtf/platform-node/platform`, as
|
|
125
|
+
Vitest's `vi.mock` does, so the plugin's Node's platform is the test's.
|
|
126
|
+
|
|
127
|
+
## Errors
|
|
128
|
+
|
|
129
|
+
The libraries throw plain errors: each is a `ReleaseError` of `@wtf/release/errors`, or of a class
|
|
130
|
+
of its package that extends it, with a stable code, a message of what is wrong, and details of how
|
|
131
|
+
to fix it. They know nothing of the tool that prints them.
|
|
132
|
+
|
|
133
|
+
A plugin marks them as they leave each of its steps, with `markedStep` of
|
|
134
|
+
`@wtf/semantic-release/errors`, so that semantic-release prints each by its code, its message and
|
|
135
|
+
its details. A CLI of your own prints them its own way:
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import { isReleaseError } from '@wtf/release/errors'
|
|
139
|
+
|
|
140
|
+
/** An error as a CLI prints it: its code and how to fix it, of a release's. */
|
|
141
|
+
export const printed = (error: unknown): string =>
|
|
142
|
+
isReleaseError(error) ? `${error.code}: ${error.message}\n${error.details}` : String(error)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Use a platform in tests
|
|
146
|
+
|
|
147
|
+
A platform with scripted programs and a folder in memory run the libraries with no disk and no git.
|
|
148
|
+
`memoryPlatform` of `@wtf/platform-memory/platform` answers each program by a script, and records
|
|
149
|
+
each it runs. `memoryDirectory` of `@wtf/platform-fs-memory/handles` is a disk in memory:
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import { testDirs } from '@wtf/platform/dirs'
|
|
153
|
+
import { memoryDirectory } from '@wtf/platform-fs-memory/handles'
|
|
154
|
+
import { memoryPlatform } from '@wtf/platform-memory/platform'
|
|
155
|
+
import { makeDir, writeFile } from '@wtf/release/files'
|
|
156
|
+
import npm from '@wtf/release-npm'
|
|
157
|
+
|
|
158
|
+
// A disk in memory, of the folder of the repo, /repo, and a temporary folder, /tmp.
|
|
159
|
+
const disk = memoryDirectory()
|
|
160
|
+
const root = await makeDir(disk, 'repo')
|
|
161
|
+
await makeDir(disk, 'tmp')
|
|
162
|
+
await writeFile(root, 'package.json', '{ "name": "repo", "private": true }')
|
|
163
|
+
await writeFile(root, 'packages/core/package.json', '{ "name": "@acme/core" }')
|
|
164
|
+
|
|
165
|
+
// git lists the files it tracks. Any other program is not there, as of a command not found.
|
|
166
|
+
const platform = memoryPlatform({
|
|
167
|
+
dirs: testDirs({ cwd: '/repo', temp: '/tmp' }),
|
|
168
|
+
directory: () => disk,
|
|
169
|
+
spawn: (command, args) =>
|
|
170
|
+
command === 'git' && args[0] === 'ls-files'
|
|
171
|
+
? { stdout: 'package.json\0packages/core/package.json\0' }
|
|
172
|
+
: undefined
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
export const names = async () => (await npm.packages({ root, platform })).map(({ name }) => name) // ['repo', '@acme/core']
|
|
176
|
+
|
|
177
|
+
// Each program that ran: [{ command: 'git', args: ['ls-files', '-z'], … }]
|
|
178
|
+
export const runs = () => platform.spawn.runs
|
|
179
|
+
```
|
|
@@ -94,21 +94,57 @@ and at the commit of a train's last release. For that commit, they export the fi
|
|
|
94
94
|
|
|
95
95
|
## What a release does
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
The plugin maps each step of semantic-release onto a step of the cargo ecosystem, the contract of
|
|
98
|
+
[`@wtf/release`](../../release/README.md). It gives the ecosystem the release, of the next
|
|
99
|
+
release's version, and the train's plan: the train's crates that publish, in dependency order, and
|
|
100
|
+
the version of each crate of the workspace, the release's for the train's crates and each other
|
|
101
|
+
train's last release for that train's crates.
|
|
102
|
+
|
|
103
|
+
1. **`verifyConditions`** checks the options and works out the plan, which reads the workspace with
|
|
104
|
+
`cargo metadata` and each other train's last release from its tags. A workspace that cannot be
|
|
100
105
|
published fails here, before the tag (see
|
|
101
106
|
[When crates depend on other trains](#when-crates-depend-on-other-trains)).
|
|
102
|
-
2. **`
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
2. **`verifyRelease`** runs the ecosystem's `verify` once semantic-release knows the version: it
|
|
108
|
+
checks the version, the crates that the release publishes, of `include` and `exclude`, their
|
|
109
|
+
order, and the credentials.
|
|
110
|
+
3. **`prepare`** runs the ecosystem's `prepare`, which writes the plan's versions into the
|
|
111
|
+
manifests: the release's version into the train's crates, and each other train's last release
|
|
112
|
+
into that train's crates and into each dependency on them. It then reads the workspace again. A
|
|
113
|
+
crate that is not at its train's version fails the run (see
|
|
114
|
+
[What the stamp does not read](#what-the-stamp-does-not-read)).
|
|
115
|
+
4. **`publish`** runs the ecosystem's `publish`. It asks the registry's sparse index which crates
|
|
116
|
+
it already has, and skips them. It publishes the rest in the plan's order with `cargo publish`.
|
|
117
|
+
cargo waits for each crate to appear in the index before the next one, so the crates of a
|
|
118
|
+
release can install each other.
|
|
119
|
+
|
|
120
|
+
A dry run of semantic-release runs only `verifyConditions` and `verifyRelease`. It writes no
|
|
121
|
+
version and publishes nothing.
|
|
122
|
+
|
|
123
|
+
### Without semantic-release
|
|
124
|
+
|
|
125
|
+
The ecosystem knows no train and no release tool, so any driver can release the crates: give it a
|
|
126
|
+
release and a plan, and run its steps, as with `runStep` of `@wtf/release/driver`. A dry run
|
|
127
|
+
(`dryRun: true`) writes and publishes nothing: `prepare` gives the manifests it would write, and
|
|
128
|
+
`publish` only asks the registry.
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
import type { Release } from '@wtf/release/contract'
|
|
132
|
+
import { runStep } from '@wtf/release/driver'
|
|
133
|
+
import { publishOrder } from '@wtf/release/order'
|
|
134
|
+
import cargo from '@wtf/release-cargo'
|
|
135
|
+
|
|
136
|
+
/** Every crate of the workspace that publishes, at the version of the release, but the docs. */
|
|
137
|
+
export async function releaseCrates(release: Release) {
|
|
138
|
+
const packages = await cargo.packages(release)
|
|
139
|
+
const { order } = publishOrder(packages.filter(({ published }) => published))
|
|
140
|
+
const versions = new Map(order.map(({ name }) => [name, release.version]))
|
|
141
|
+
const plans = new Map([['cargo', { own: order, versions }]])
|
|
142
|
+
const ecosystems = [[cargo, { exclude: ['docs'] }]] as const
|
|
143
|
+
await runStep(release, plans, ecosystems, 'verify')
|
|
144
|
+
await runStep(release, plans, ecosystems, 'prepare')
|
|
145
|
+
return (await runStep(release, plans, ecosystems, 'publish')).released
|
|
146
|
+
}
|
|
147
|
+
```
|
|
112
148
|
|
|
113
149
|
## When crates depend on other trains
|
|
114
150
|
|
|
@@ -210,7 +246,10 @@ no release publishes it.
|
|
|
210
246
|
before the tag with `EDEPENDENCYNORELEASE`.
|
|
211
247
|
- **`publish = false` on what is not published.** Mark an example or a test crate of the workspace
|
|
212
248
|
this way. Otherwise the train whose paths hold it publishes it. You can also leave a crate of the
|
|
213
|
-
train out with `exclude`, which names only crates of the train
|
|
249
|
+
train out with `exclude`, which names only crates of the train, or crates that publish nowhere
|
|
250
|
+
(`ECRATES`). A crate with `publish = false` that a train's paths hold is stamped at the
|
|
251
|
+
train's version all the same, with its dependencies on published crates, so `cargo publish
|
|
252
|
+
--workspace` and the smoke, which build every member, resolve it.
|
|
214
253
|
|
|
215
254
|
## Authenticate to the registry
|
|
216
255
|
|
|
@@ -220,9 +259,9 @@ uses:
|
|
|
220
259
|
- an ID token of the job, in `CRATES_IO_ID_TOKEN` by default (`idToken` names another variable);
|
|
221
260
|
- a token, in `CARGO_REGISTRY_TOKEN`.
|
|
222
261
|
|
|
223
|
-
With both, the plugin uses the ID token and the log says so. With neither, `
|
|
224
|
-
with `ECRATEAUTH` before the tag. A dry run only warns, because semantic-release runs
|
|
225
|
-
`
|
|
262
|
+
With both, the plugin uses the ID token and the log says so. With neither, `verifyRelease` fails
|
|
263
|
+
with `ECRATEAUTH` before the tag. A dry run only warns so, because semantic-release runs neither
|
|
264
|
+
`prepare` nor `publish` in a dry run.
|
|
226
265
|
|
|
227
266
|
### Trusted publishing
|
|
228
267
|
|
|
@@ -265,6 +304,8 @@ The plugin does the rest:
|
|
|
265
304
|
- When the job ends, even when it fails, the plugin revokes the token (`DELETE` on the same URL). A
|
|
266
305
|
failed revoke is logged and fails nothing, because the token expires by itself.
|
|
267
306
|
- The tokens appear in no log and no error.
|
|
307
|
+
- Each request to the registry names the library, `@wtf/release-cargo`, as its user agent, as
|
|
308
|
+
crates.io asks every client to name itself.
|
|
268
309
|
|
|
269
310
|
A registry other than crates.io that offers the same exchange takes its API as `registryApi`, with
|
|
270
311
|
its `registry` and its `index`:
|
|
@@ -10,7 +10,9 @@ or `v<version>` for a module at the root. The Go proxy reads the module from tha
|
|
|
10
10
|
publishes a module by pushing its tag.
|
|
11
11
|
|
|
12
12
|
The plugin runs on the library [`@wtf/release-go`](../../release-go/README.md). The library's
|
|
13
|
-
default export is the Go ecosystem,
|
|
13
|
+
default export is the Go ecosystem, which reads the modules of a repo and releases them in the steps
|
|
14
|
+
of [`@wtf/release`](../../release/README.md)'s contract, and the plugin exports the same ecosystem
|
|
15
|
+
at `./ecosystem`. Add
|
|
14
16
|
`'@wtf/semantic-release-go/ecosystem'` to `ecosystems` in your config. The trains then treat modules
|
|
15
17
|
the same way as npm packages: they decide which train holds each module, the order of the trains,
|
|
16
18
|
the checks of a release, and the releases a train owes the trains it depends on. See
|
|
@@ -102,18 +104,24 @@ workflow:
|
|
|
102
104
|
|
|
103
105
|
## What a release does
|
|
104
106
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
Each step of semantic-release runs a step of the Go ecosystem over the plan of the train: the
|
|
108
|
+
modules of the train that Go can fetch, and the version of each module of the repo.
|
|
109
|
+
|
|
110
|
+
1. **`verifyConditions`** checks the options and reads the go.mod files that git tracks. It works
|
|
111
|
+
out the plan of the train, which reads each other train's last release from its tags, and selects
|
|
112
|
+
the modules that the release tags. A repo that cannot be released fails here, before the tag (see
|
|
108
113
|
[When modules depend on other trains](#when-modules-depend-on-other-trains)).
|
|
109
|
-
2. **`verifyRelease`**
|
|
110
|
-
(`
|
|
111
|
-
|
|
114
|
+
2. **`verifyRelease`** runs the ecosystem's `verify`. It checks that the version is one Go tags a
|
|
115
|
+
module of (`EGOSEMVER`), and each module's path against the major of the version (`EGOMAJOR`;
|
|
116
|
+
see [Release a new major](#release-a-new-major)).
|
|
117
|
+
3. **`prepare`** runs the ecosystem's `prepare`, which writes the versions into the go.mod
|
|
118
|
+
files. It writes
|
|
112
119
|
the release's version into each require of a module of the train, and each other train's last
|
|
113
120
|
release into each require of that train's modules, in every go.mod of the repo. Then it reads the
|
|
114
121
|
files again, and a require that is not at its train's version fails the run (`EGOVERSION`; see
|
|
115
122
|
[What the release changes in go.mod](#what-the-release-changes-in-gomod)).
|
|
116
|
-
4. **`publish`** commits the changed go.mod files and tags that commit with
|
|
123
|
+
4. **`publish`** runs `publish`, which commits the changed go.mod files and tags that commit with
|
|
124
|
+
each module's tag (see
|
|
117
125
|
[Tag a commit that holds the versions](#tag-a-commit-that-holds-the-versions)). It skips each tag
|
|
118
126
|
the remote already has. With `proxy`, it then asks the Go proxy for each module.
|
|
119
127
|
|
|
@@ -132,7 +140,8 @@ tag. The branch, the index and the working tree stay as they are; only the tags
|
|
|
132
140
|
|
|
133
141
|
- The commit message is `chore(release): Go modules of <train> <version>`.
|
|
134
142
|
- The author comes from `GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL`, and the committer from
|
|
135
|
-
`GIT_COMMITTER_*`. Without them, both are `semantic-release-bot`.
|
|
143
|
+
`GIT_COMMITTER_*`. Without them, both are `semantic-release-bot`. The plugin gives the library
|
|
144
|
+
this author: the library itself has none, and a caller of its own names one.
|
|
136
145
|
- When no go.mod changed, as for modules that require no other module of the repo, the plugin tags
|
|
137
146
|
the release commit itself.
|
|
138
147
|
|
|
@@ -190,8 +199,8 @@ From v2 on, Go holds the major in the module path: `example.com/repo/core/v2`. A
|
|
|
190
199
|
`/vN` needs a release of major N. A release of major 2 or higher needs a path that ends in its
|
|
191
200
|
major.
|
|
192
201
|
|
|
193
|
-
The plugin checks this in `verifyRelease`, once semantic-release knows the version
|
|
194
|
-
|
|
202
|
+
The plugin checks this in `verifyRelease`, once semantic-release knows the version. So a breaking
|
|
203
|
+
change to a module whose path has no `/v2` fails before anything is tagged
|
|
195
204
|
(`EGOMAJOR`). The error names the go.mod to change. In the commit of the breaking change:
|
|
196
205
|
|
|
197
206
|
1. Write `module example.com/repo/core/v2` in that go.mod.
|
|
@@ -276,3 +285,38 @@ Before it creates anything, the plugin asks the remote for every tag. It skips e
|
|
|
276
285
|
has, and pushes the rest in one atomic push: all of them or none. So retry the tag's job to create
|
|
277
286
|
the missing tags. A remote that cannot be asked stops the run before anything is created
|
|
278
287
|
(`EGOTAG`).
|
|
288
|
+
|
|
289
|
+
## Release Go modules without semantic-release
|
|
290
|
+
|
|
291
|
+
The Go ecosystem knows no train and no release tool. Any caller can release modules with it: give
|
|
292
|
+
it a release, a plan, and its options, and run its steps, one by one or through `runStep` of
|
|
293
|
+
`@wtf/release/driver`. The plan says which modules the release tags (`own`) and the version that
|
|
294
|
+
each module of the repo is required at (`versions`). `@wtf/release-trains/plan` works out the plan
|
|
295
|
+
of a train, or you can write one by hand.
|
|
296
|
+
|
|
297
|
+
```ts
|
|
298
|
+
import type { Plan, Release } from '@wtf/release/contract'
|
|
299
|
+
import { runStep } from '@wtf/release/driver'
|
|
300
|
+
import go from '@wtf/release-go'
|
|
301
|
+
|
|
302
|
+
declare const release: Release
|
|
303
|
+
declare const plan: Plan
|
|
304
|
+
|
|
305
|
+
const plans = new Map([['go', plan]])
|
|
306
|
+
const ecosystems = [
|
|
307
|
+
[
|
|
308
|
+
go,
|
|
309
|
+
{
|
|
310
|
+
remote: 'origin',
|
|
311
|
+
author: { name: 'Release Bot', email: 'release-bot@example.com' },
|
|
312
|
+
proxy: true
|
|
313
|
+
}
|
|
314
|
+
]
|
|
315
|
+
] as const
|
|
316
|
+
await runStep(release, plans, ecosystems, 'verify')
|
|
317
|
+
await runStep(release, plans, ecosystems, 'prepare')
|
|
318
|
+
export const { released } = await runStep(release, plans, ecosystems, 'publish')
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
`publish` needs `remote` and `author`, unless the release is a dry run (`EGOTAG`). A dry run writes
|
|
322
|
+
no go.mod, creates no commit and no tag, and asks the proxy nothing: it says the tags it would push.
|