@wtf/release-docs 9.0.2 → 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 +6 -4
- package/api/.generated +291 -141
- 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 +11 -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 +38 -0
- package/api/@wtf/release-oci/ecosystem/README.md +56 -0
- package/api/@wtf/release-oci/ecosystem/functions/packagesOfImages.md +29 -0
- package/api/@wtf/release-oci/ecosystem/functions/packagesOfRepo.md +32 -0
- package/api/@wtf/release-oci/ecosystem/functions/repositoriesOf.md +27 -0
- package/api/@wtf/release-oci/ecosystem/functions/resolveTag.md +35 -0
- package/api/@wtf/release-oci/ecosystem/functions/satisfiesTag.md +34 -0
- package/api/@wtf/release-oci/ecosystem/interfaces/OciOptions.md +64 -0
- package/api/@wtf/release-oci/ecosystem/interfaces/OciPackage.md +97 -0
- package/api/@wtf/release-oci/ecosystem/interfaces/OciSourceOptions.md +32 -0
- package/api/@wtf/release-oci/ecosystem/variables/ociEcosystem.md +29 -0
- package/api/@wtf/release-oci/errors/README.md +24 -0
- package/api/@wtf/release-oci/errors/classes/OciError.md +253 -0
- package/api/@wtf/release-oci/errors/type-aliases/OciErrorCode.md +13 -0
- package/api/@wtf/release-oci/errors/variables/OCI_ERRORS.md +51 -0
- package/api/@wtf/release-oci/images/README.md +35 -0
- package/api/@wtf/release-oci/images/functions/imageDirOf.md +28 -0
- package/api/@wtf/release-oci/images/functions/imagesAt.md +44 -0
- package/api/@wtf/release-oci/images/functions/imagesOf.md +34 -0
- package/api/@wtf/release-oci/images/functions/isImageManifest.md +27 -0
- package/api/@wtf/release-oci/images/functions/readImages.md +34 -0
- package/api/@wtf/release-oci/images/functions/registryImageOf.md +28 -0
- package/api/@wtf/release-oci/images/functions/repositoryOf.md +35 -0
- package/api/@wtf/release-oci/interfaces/OciImage.md +44 -0
- package/api/@wtf/release-oci/publish/README.md +65 -0
- package/api/@wtf/release-oci/publish/functions/digestOf.md +38 -0
- package/api/@wtf/release-oci/publish/functions/moveImages.md +32 -0
- package/api/@wtf/release-oci/publish/functions/platformsOf.md +44 -0
- package/api/@wtf/release-oci/publish/functions/publishImages.md +32 -0
- package/api/@wtf/release-oci/publish/functions/smokeImages.md +41 -0
- package/api/@wtf/release-oci/publish/interfaces/CraneContext.md +40 -0
- package/api/@wtf/release-oci/publish/interfaces/ImageToPublish.md +35 -0
- package/api/@wtf/release-oci/publish/interfaces/ImagesMove.md +84 -0
- package/api/@wtf/release-oci/publish/interfaces/ImagesRelease.md +84 -0
- package/api/@wtf/release-oci/publish/interfaces/MovedImage.md +41 -0
- package/api/@wtf/release-oci/publish/interfaces/OciSource.md +31 -0
- package/api/@wtf/release-oci/publish/interfaces/PublishedImage.md +91 -0
- package/api/@wtf/release-oci/publish/interfaces/SmokedImage.md +67 -0
- package/api/@wtf/release-oci/registry/README.md +50 -0
- package/api/@wtf/release-oci/registry/functions/checkRegistryAccess.md +28 -0
- package/api/@wtf/release-oci/registry/functions/registryPageOf.md +30 -0
- 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 +63 -0
- 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 +28 -0
- 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 +31 -0
- 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 +64 -0
- package/api/@wtf/semantic-release-oci/interfaces/OciPluginOptions.md +119 -0
- package/api/@wtf/semantic-release-oci/interfaces/OciRelease.md +31 -0
- package/api/@wtf/semantic-release-oci/schema/README.md +38 -0
- package/api/@wtf/semantic-release-oci/schema/type-aliases/OciOptions.md +13 -0
- package/api/@wtf/semantic-release-oci/schema/variables/configSchema.md +13 -0
- package/api/@wtf/semantic-release-oci/schema/variables/jsonSchema.md +13 -0
- package/api/@wtf/semantic-release-oci/schema/variables/ociOptionsSchema.md +13 -0
- package/api/@wtf/semantic-release-oci/schema/variables/ociSchema.md +14 -0
- package/api/@wtf/semantic-release-oci/variables/default.md +112 -0
- package/api/@wtf/semantic-release-oci/variables/publish.md +47 -0
- package/api/@wtf/semantic-release-oci/variables/verifyConditions.md +38 -0
- 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 +31 -10
- package/api/trains.json +32 -9
- 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 +69 -32
- package/guides/getting-started.md +26 -21
- 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 +134 -0
- package/guides/publishing.md +105 -84
- package/guides/troubleshooting.md +13 -12
- package/guides/validating-a-config.md +1 -0
- package/package.json +24 -16
- 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-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 -45
- 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 -70
- 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-replace/interfaces/ReplacePluginOptions.md +0 -71
- package/guides/system.md +0 -175
package/guides/ecosystems.md
CHANGED
|
@@ -14,15 +14,21 @@ 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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
|
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:
|
|
24
|
+
|
|
25
|
+
| Ecosystem | Package | Plugin | Manifests it reads |
|
|
26
|
+
| --------- | -------------------- | ----------------------------- | --------------------------------------------------------------------------------------- |
|
|
27
|
+
| `npm` | `@wtf/release-npm` | `@wtf/semantic-release-npm` | each `package.json` that git tracks |
|
|
28
|
+
| `cargo` | `@wtf/release-cargo` | `@wtf/semantic-release-cargo` | the Cargo workspace at the root, through `cargo metadata` |
|
|
29
|
+
| `go` | `@wtf/release-go` | `@wtf/semantic-release-go` | each `go.mod` that git tracks |
|
|
30
|
+
| `maven` | `@wtf/release-maven` | `@wtf/semantic-release-maven` | each `pom.xml` that git tracks |
|
|
31
|
+
| `oci` | `@wtf/release-oci` | `@wtf/semantic-release-oci` | each `Dockerfile`, `Containerfile` or `.devcontainer/devcontainer.json` that git tracks |
|
|
26
32
|
|
|
27
33
|
## Name the ecosystems in your config
|
|
28
34
|
|
|
@@ -69,8 +75,8 @@ ecosystem costs a repo nothing. For example, cargo's ecosystem gives no package
|
|
|
69
75
|
a train (`EDEPENDENCYNOTRAIN`). That train must have released (`EDEPENDENCYNORELEASE`), and one
|
|
70
76
|
of its releases must be within the range (`EDEPENDENCYUNSATISFIED`).
|
|
71
77
|
- **Versions.** A release stamps each range on another train's package with that train's last
|
|
72
|
-
release, read from the train's tags that `HEAD` holds
|
|
73
|
-
|
|
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.
|
|
74
80
|
- **Cascade.** When another train's last release falls outside a range that this train's last
|
|
75
81
|
release published, this train releases again. It releases a major when a major left a `peer`
|
|
76
82
|
range behind, and a patch for any other kind.
|
|
@@ -106,8 +112,8 @@ See [Publish npm packages](publishing.md).
|
|
|
106
112
|
|
|
107
113
|
`@wtf/release-cargo` reads the Cargo workspace at the root of the repo with
|
|
108
114
|
`cargo metadata --no-deps --format-version 1`. For a commit, it exports the files with
|
|
109
|
-
`git archive` into
|
|
110
|
-
them.
|
|
115
|
+
`git archive` into a temporary folder of the platform, unpacks them with `tar`, reads them, and
|
|
116
|
+
removes them.
|
|
111
117
|
|
|
112
118
|
- **Published:** every crate without `publish = false`.
|
|
113
119
|
- **Kinds:** a normal dependency is `runtime`, a build dependency is `build`, and a dev-dependency
|
|
@@ -189,6 +195,24 @@ own.
|
|
|
189
195
|
So a bare version never causes a cascade, and the release never rewrites a range of your own. See
|
|
190
196
|
[Publish Maven modules](publishing-maven.md).
|
|
191
197
|
|
|
198
|
+
### OCI images
|
|
199
|
+
|
|
200
|
+
`@wtf/release-oci` reads each folder of a file an image is built of that git tracks: a
|
|
201
|
+
`Dockerfile`, a `Containerfile`, or a `.devcontainer/devcontainer.json`, which the devcontainer CLI
|
|
202
|
+
builds. A folder of more than one is one image. It reads a commit's files with `git ls-tree`.
|
|
203
|
+
|
|
204
|
+
- **Name:** the image's repository in its registry: the registry image of the project,
|
|
205
|
+
`CI_REGISTRY_IMAGE` of a pipeline, for the image at the root, and that and its folder for another.
|
|
206
|
+
Where the environment names no registry image, the image is named by its folder.
|
|
207
|
+
- **Published:** every image.
|
|
208
|
+
- **Kinds:** none. An image does not depend on another image of the repo as the trains read it: a
|
|
209
|
+
`FROM` or a base pins a tag of a registry. Order such trains by `dependsOn`.
|
|
210
|
+
- **`resolve`:** the version itself, the tag a release publishes.
|
|
211
|
+
- **`satisfies`:** a tag of the one version it names.
|
|
212
|
+
|
|
213
|
+
A release copies the image a pipeline tested, by its digest, to the tags of the version, and moves
|
|
214
|
+
the minor and the major of a release. See [Publish OCI images](publishing-oci.md).
|
|
215
|
+
|
|
192
216
|
## Write your own ecosystem
|
|
193
217
|
|
|
194
218
|
Write an ecosystem when your repo holds a kind of package that none of the built-in ecosystems
|
|
@@ -196,13 +220,13 @@ reads.
|
|
|
196
220
|
|
|
197
221
|
### The interface
|
|
198
222
|
|
|
199
|
-
`@wtf/release
|
|
223
|
+
`@wtf/release/ecosystem` declares the interface:
|
|
200
224
|
|
|
201
225
|
```ts fragment
|
|
202
226
|
export interface Ecosystem {
|
|
203
227
|
/** 'npm', 'cargo': as an error, the notes and a key of the trains say it. */
|
|
204
228
|
readonly name: string
|
|
205
|
-
/** 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`. */
|
|
206
230
|
packages(context: EcosystemContext): Promise<readonly Package[]>
|
|
207
231
|
/** The range a release publishes of `range`, of `version`, the release of the package it names. */
|
|
208
232
|
resolve(range: string, version: string): string
|
|
@@ -227,8 +251,8 @@ export interface Dependency {
|
|
|
227
251
|
|
|
228
252
|
The trains call `packages` for the working tree, with no `ref`. They also call it for a commit, such
|
|
229
253
|
as the tag of a train's last release, which a cascade reads. `packages` does everything through its
|
|
230
|
-
context
|
|
231
|
-
[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).
|
|
232
256
|
|
|
233
257
|
### An example
|
|
234
258
|
|
|
@@ -237,9 +261,10 @@ of its own, a `release.json` in each folder. The manifest holds a name, a flag t
|
|
|
237
261
|
package publishes, and dependencies at exact versions:
|
|
238
262
|
|
|
239
263
|
```ts
|
|
240
|
-
import {
|
|
241
|
-
import {
|
|
242
|
-
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'
|
|
243
268
|
|
|
244
269
|
/** What a release.json holds. */
|
|
245
270
|
interface Manifest {
|
|
@@ -250,8 +275,7 @@ interface Manifest {
|
|
|
250
275
|
|
|
251
276
|
/** Each release.json of the repo, of the working tree or of `context.ref`, by git. */
|
|
252
277
|
async function manifestsOf(context: EcosystemContext): Promise<[string, Manifest][]> {
|
|
253
|
-
const {
|
|
254
|
-
const { ref } = context
|
|
278
|
+
const { root, ref } = context
|
|
255
279
|
const files = (
|
|
256
280
|
ref === undefined
|
|
257
281
|
? await trackedFiles(context)
|
|
@@ -261,7 +285,7 @@ async function manifestsOf(context: EcosystemContext): Promise<[string, Manifest
|
|
|
261
285
|
files.map(async (file): Promise<[string, Manifest]> => {
|
|
262
286
|
const text =
|
|
263
287
|
ref === undefined
|
|
264
|
-
? await
|
|
288
|
+
? await readFile(root, file)
|
|
265
289
|
: await git(['show', `${ref}:${file}`], context)
|
|
266
290
|
return [file, JSON.parse(text) as Manifest]
|
|
267
291
|
})
|
|
@@ -306,16 +330,29 @@ export default ecosystem
|
|
|
306
330
|
such as `1.5.0-beta.1` for `^1.4.0`, because the trains release prereleases on their channels.
|
|
307
331
|
- **No manifest means no package.** In a repo without any of the ecosystem's manifests, return `[]`
|
|
308
332
|
rather than fail. A config can then name the ecosystem before the first manifest exists.
|
|
309
|
-
- **Always use the
|
|
310
|
-
module does outside itself goes through `context.
|
|
311
|
-
|
|
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
|
|
312
338
|
|
|
313
|
-
|
|
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.
|
|
314
348
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
`@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:
|
|
318
351
|
|
|
319
352
|
- reads `trains`, `ecosystems` and `train` from the root of the config;
|
|
320
|
-
-
|
|
321
|
-
-
|
|
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`.
|
|
@@ -18,14 +18,15 @@ other train first.
|
|
|
18
18
|
## Which packages it releases
|
|
19
19
|
|
|
20
20
|
An **ecosystem** tells the trains how to read one kind of package: where its manifests are, what it
|
|
21
|
-
depends on, and what a version range means.
|
|
21
|
+
depends on, and what a version range means. Five ecosystems are built in, and one repo can mix them:
|
|
22
22
|
|
|
23
|
-
| Ecosystem | Manifests
|
|
24
|
-
| --------- |
|
|
25
|
-
| npm | each `package.json`
|
|
26
|
-
| Cargo | the Cargo workspace at the root
|
|
27
|
-
| Go | each `go.mod`
|
|
28
|
-
| Maven | each `pom.xml`
|
|
23
|
+
| Ecosystem | Manifests | Plugin | Guide |
|
|
24
|
+
| --------- | ----------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------- |
|
|
25
|
+
| npm | each `package.json` | `@wtf/semantic-release-npm` | [Publish npm packages](publishing.md) |
|
|
26
|
+
| Cargo | the Cargo workspace at the root | `@wtf/semantic-release-cargo` | [Publish Cargo crates](publishing-crates.md) |
|
|
27
|
+
| Go | each `go.mod` | `@wtf/semantic-release-go` | [Publish Go modules](publishing-go-modules.md) |
|
|
28
|
+
| Maven | each `pom.xml` | `@wtf/semantic-release-maven` | [Publish Maven modules](publishing-maven.md) |
|
|
29
|
+
| OCI | each `Dockerfile`, `Containerfile` or `.devcontainer/devcontainer.json` | `@wtf/semantic-release-oci` | [Publish OCI images](publishing-oci.md) |
|
|
29
30
|
|
|
30
31
|
You can also write an ecosystem of your own for any other kind of package. See
|
|
31
32
|
[How ecosystems work](ecosystems.md).
|
|
@@ -35,28 +36,33 @@ You can also write an ecosystem of your own for any other kind of package. See
|
|
|
35
36
|
wtf release has two layers:
|
|
36
37
|
|
|
37
38
|
- **Libraries** do the work. They do not depend on semantic-release or on any other release tool.
|
|
38
|
-
Each function takes the
|
|
39
|
-
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).
|
|
40
41
|
- **Plugins** let semantic-release run the libraries. Each plugin is a thin adapter over its
|
|
41
42
|
library.
|
|
42
43
|
|
|
43
44
|
The libraries:
|
|
44
45
|
|
|
45
|
-
- `@wtf/release
|
|
46
|
-
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.
|
|
47
49
|
- `@wtf/release-trains` handles the trains: their commits, their checks, and the folders a build
|
|
48
50
|
generates.
|
|
49
|
-
- `@wtf/release-npm`, `@wtf/release-cargo`, `@wtf/release-go
|
|
50
|
-
|
|
51
|
+
- `@wtf/release-npm`, `@wtf/release-cargo`, `@wtf/release-go`, `@wtf/release-maven` and
|
|
52
|
+
`@wtf/release-oci` are the five ecosystems. Each one also publishes the train's packages of its
|
|
53
|
+
kind.
|
|
51
54
|
- `@wtf/release-replace` replaces text in files, such as the version in a badge.
|
|
52
55
|
- `@wtf/release-validate` validates a config with any Standard Schema.
|
|
53
56
|
|
|
54
57
|
The plugins:
|
|
55
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.
|
|
56
61
|
- `@wtf/semantic-release-trains` checks the trains, gives a plugin it wraps only the train's
|
|
57
62
|
commits, and stages the folders a build generates.
|
|
58
|
-
- `@wtf/semantic-release-npm`, `@wtf/semantic-release-cargo`, `@wtf/semantic-release-go
|
|
59
|
-
`@wtf/semantic-release-maven` publish the train's packages of one
|
|
63
|
+
- `@wtf/semantic-release-npm`, `@wtf/semantic-release-cargo`, `@wtf/semantic-release-go`,
|
|
64
|
+
`@wtf/semantic-release-maven` and `@wtf/semantic-release-oci` publish the train's packages of one
|
|
65
|
+
ecosystem.
|
|
60
66
|
- `@wtf/semantic-release-replace` replaces text in files during a release.
|
|
61
67
|
- `@wtf/semantic-release-validate` validates the config of a run with a schema of your own.
|
|
62
68
|
|
|
@@ -104,15 +110,14 @@ The examples in these guides use the trains that this repo releases its own pack
|
|
|
104
110
|
|
|
105
111
|
| Train | Folders |
|
|
106
112
|
| ---------- | ----------------------------------------------------------------- |
|
|
107
|
-
| `
|
|
113
|
+
| `release` | `packages/release`, `packages/semantic-release` |
|
|
108
114
|
| `trains` | `packages/release-trains`, `packages/semantic-release-trains`, … |
|
|
109
115
|
| `replace` | `packages/release-replace`, `packages/semantic-release-replace` |
|
|
110
116
|
| `validate` | `packages/release-validate`, `packages/semantic-release-validate` |
|
|
111
117
|
| `docs` | `packages/docs` |
|
|
112
118
|
|
|
113
|
-
`@wtf/release
|
|
114
|
-
`
|
|
115
|
-
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.
|
|
116
121
|
|
|
117
122
|
Each example shows only the trains it needs. The repo's own `release.config.mjs` declares them all,
|
|
118
123
|
and tags each one `<train>-v<version>`. Here is a config with two trains:
|
|
@@ -189,7 +194,7 @@ releases nothing:
|
|
|
189
194
|
RELEASE_TRAIN=trains npx semantic-release --dry-run --no-ci
|
|
190
195
|
```
|
|
191
196
|
|
|
192
|
-
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
|
|
193
198
|
warns you when a dependency train has commits that it has not released. See
|
|
194
199
|
[Trains that depend on other trains](dependency-rules.md).
|
|
195
200
|
|
|
@@ -211,7 +216,7 @@ copy of each package that it packs. See [Publish npm packages](publishing.md).
|
|
|
211
216
|
train's tag on your host.
|
|
212
217
|
Wrapped in the trains plugin, `@semantic-release/gitlab` links each package that the release
|
|
213
218
|
published. See [The links of the release](publishing.md#the-links-of-the-release).
|
|
214
|
-
- [The
|
|
219
|
+
- [The platform](platform.md): run the libraries on a platform of your own.
|
|
215
220
|
|
|
216
221
|
## Make the first release
|
|
217
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`:
|