@wtf/release-docs 8.1.0 → 8.2.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 +12 -4
- package/api/.generated +155 -29
- 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 +1 -1
- 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 +1 -1
- package/api/@wtf/release-cargo/crates/functions/selectCrates.md +5 -4
- package/api/@wtf/release-cargo/crates/interfaces/Selection.md +5 -5
- package/api/@wtf/release-cargo/ecosystem/functions/packagesAt.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/packagesOfTree.md +1 -1
- package/api/@wtf/release-cargo/ecosystem/functions/packagesOfWorkspace.md +1 -1
- 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 +7 -7
- package/api/@wtf/release-cargo/ecosystem/variables/cargoEcosystem.md +1 -1
- package/api/@wtf/release-cargo/errors/classes/CargoError.md +5 -5
- package/api/@wtf/release-cargo/errors/type-aliases/CargoErrorCode.md +1 -1
- package/api/@wtf/release-cargo/errors/variables/CARGO_ERRORS.md +2 -2
- 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/functions/publishCrates.md +1 -1
- package/api/@wtf/release-cargo/publish/interfaces/PublishCratesOptions.md +11 -11
- 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/functions/crateUrl.md +1 -1
- package/api/@wtf/release-cargo/registry/functions/indexHasVersion.md +1 -1
- 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/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 +1 -1
- package/api/@wtf/release-cargo/stamp/interfaces/StampOptions.md +4 -4
- package/api/@wtf/release-cargo/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-cargo/stamp/interfaces/StampedWorkspace.md +3 -3
- package/api/@wtf/release-cargo/type-aliases/DependencyKind.md +1 -1
- package/api/@wtf/release-go/README.md +34 -0
- package/api/@wtf/release-go/ecosystem/README.md +40 -0
- package/api/@wtf/release-go/ecosystem/functions/packagesOfModules.md +30 -0
- package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +32 -0
- package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +35 -0
- package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +35 -0
- package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +97 -0
- package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +15 -0
- package/api/@wtf/release-go/errors/README.md +25 -0
- package/api/@wtf/release-go/errors/classes/GoError.md +268 -0
- package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +13 -0
- package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +47 -0
- package/api/@wtf/release-go/gomod/README.md +39 -0
- package/api/@wtf/release-go/gomod/functions/entriesOf.md +29 -0
- package/api/@wtf/release-go/gomod/functions/linesOf.md +27 -0
- package/api/@wtf/release-go/gomod/functions/readGoMod.md +28 -0
- package/api/@wtf/release-go/gomod/functions/tokensOf.md +29 -0
- package/api/@wtf/release-go/gomod/interfaces/Entry.md +41 -0
- package/api/@wtf/release-go/gomod/interfaces/GoMod.md +41 -0
- package/api/@wtf/release-go/gomod/interfaces/GoReplace.md +61 -0
- package/api/@wtf/release-go/gomod/interfaces/GoRequire.md +41 -0
- package/api/@wtf/release-go/gomod/interfaces/Token.md +51 -0
- package/api/@wtf/release-go/interfaces/GoModule.md +61 -0
- package/api/@wtf/release-go/modules/README.md +39 -0
- package/api/@wtf/release-go/modules/functions/isFetchable.md +28 -0
- package/api/@wtf/release-go/modules/functions/isGoMod.md +28 -0
- package/api/@wtf/release-go/modules/functions/majorErrors.md +37 -0
- package/api/@wtf/release-go/modules/functions/majorOfPath.md +28 -0
- package/api/@wtf/release-go/modules/functions/modulesAt.md +39 -0
- package/api/@wtf/release-go/modules/functions/modulesOf.md +29 -0
- package/api/@wtf/release-go/modules/functions/readModules.md +33 -0
- package/api/@wtf/release-go/modules/functions/selectModules.md +44 -0
- package/api/@wtf/release-go/modules/interfaces/Selection.md +43 -0
- package/api/@wtf/release-go/stamp/README.md +44 -0
- package/api/@wtf/release-go/stamp/functions/checkVersions.md +38 -0
- package/api/@wtf/release-go/stamp/functions/stampGoMod.md +35 -0
- package/api/@wtf/release-go/stamp/functions/stampModules.md +42 -0
- package/api/@wtf/release-go/stamp/interfaces/Stamped.md +31 -0
- package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +31 -0
- package/api/@wtf/release-go/tags/README.md +48 -0
- package/api/@wtf/release-go/tags/functions/askProxy.md +44 -0
- package/api/@wtf/release-go/tags/functions/maskCredentials.md +28 -0
- package/api/@wtf/release-go/tags/functions/releaseCommit.md +48 -0
- package/api/@wtf/release-go/tags/functions/remoteTags.md +43 -0
- package/api/@wtf/release-go/tags/functions/tagModules.md +36 -0
- package/api/@wtf/release-go/tags/functions/tagOfModule.md +34 -0
- package/api/@wtf/release-go/tags/functions/tagPrefix.md +29 -0
- package/api/@wtf/release-go/tags/interfaces/TagModulesOptions.md +93 -0
- package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +51 -0
- package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +13 -0
- package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +23 -0
- package/api/@wtf/release-maven/README.md +33 -0
- package/api/@wtf/release-maven/artifacts/README.md +41 -0
- package/api/@wtf/release-maven/artifacts/functions/groupIdOf.md +33 -0
- package/api/@wtf/release-maven/artifacts/functions/installsOf.md +44 -0
- package/api/@wtf/release-maven/artifacts/functions/isPomFile.md +28 -0
- package/api/@wtf/release-maven/artifacts/functions/isRange.md +27 -0
- package/api/@wtf/release-maven/artifacts/functions/modulesOf.md +44 -0
- package/api/@wtf/release-maven/artifacts/functions/nameOf.md +33 -0
- package/api/@wtf/release-maven/artifacts/functions/publishOrder.md +34 -0
- package/api/@wtf/release-maven/artifacts/functions/readModules.md +31 -0
- package/api/@wtf/release-maven/artifacts/functions/readPoms.md +32 -0
- package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +44 -0
- package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +42 -0
- package/api/@wtf/release-maven/ecosystem/README.md +41 -0
- package/api/@wtf/release-maven/ecosystem/functions/compareVersions.md +38 -0
- package/api/@wtf/release-maven/ecosystem/functions/parseRange.md +28 -0
- package/api/@wtf/release-maven/ecosystem/functions/resolveVersion.md +36 -0
- package/api/@wtf/release-maven/ecosystem/functions/satisfiesVersion.md +36 -0
- package/api/@wtf/release-maven/ecosystem/interfaces/Bound.md +31 -0
- package/api/@wtf/release-maven/ecosystem/interfaces/Restriction.md +31 -0
- package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +15 -0
- package/api/@wtf/release-maven/errors/README.md +25 -0
- package/api/@wtf/release-maven/errors/classes/MavenError.md +268 -0
- package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +13 -0
- package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +51 -0
- package/api/@wtf/release-maven/interfaces/MavenModule.md +169 -0
- package/api/@wtf/release-maven/pom/README.md +48 -0
- package/api/@wtf/release-maven/pom/functions/childOf.md +33 -0
- package/api/@wtf/release-maven/pom/functions/childrenOf.md +33 -0
- package/api/@wtf/release-maven/pom/functions/dependencyOf.md +27 -0
- package/api/@wtf/release-maven/pom/functions/escapeXml.md +27 -0
- package/api/@wtf/release-maven/pom/functions/parseXml.md +39 -0
- package/api/@wtf/release-maven/pom/functions/readPom.md +39 -0
- package/api/@wtf/release-maven/pom/functions/textAt.md +34 -0
- package/api/@wtf/release-maven/pom/interfaces/Pom.md +151 -0
- package/api/@wtf/release-maven/pom/interfaces/PomDependency.md +51 -0
- package/api/@wtf/release-maven/pom/interfaces/PomParent.md +41 -0
- package/api/@wtf/release-maven/pom/interfaces/PomPlugin.md +51 -0
- package/api/@wtf/release-maven/pom/interfaces/PomRepository.md +31 -0
- package/api/@wtf/release-maven/pom/interfaces/Span.md +35 -0
- package/api/@wtf/release-maven/pom/interfaces/XmlElement.md +83 -0
- package/api/@wtf/release-maven/pom/variables/PLUGIN_GROUP.md +13 -0
- package/api/@wtf/release-maven/publish/README.md +45 -0
- package/api/@wtf/release-maven/publish/functions/deployModules.md +35 -0
- package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +146 -0
- package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +42 -0
- package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +13 -0
- package/api/@wtf/release-maven/repository/README.md +38 -0
- package/api/@wtf/release-maven/repository/functions/deployTargets.md +46 -0
- package/api/@wtf/release-maven/repository/functions/expandValues.md +42 -0
- package/api/@wtf/release-maven/repository/functions/hasPom.md +38 -0
- package/api/@wtf/release-maven/repository/functions/pomPath.md +40 -0
- package/api/@wtf/release-maven/repository/functions/pomUrl.md +45 -0
- package/api/@wtf/release-maven/repository/interfaces/Repository.md +31 -0
- package/api/@wtf/release-maven/repository/interfaces/ValuesOf.md +31 -0
- package/api/@wtf/release-maven/repository/variables/MAVEN_CENTRAL.md +13 -0
- package/api/@wtf/release-maven/stamp/README.md +50 -0
- package/api/@wtf/release-maven/stamp/functions/checkVersions.md +36 -0
- package/api/@wtf/release-maven/stamp/functions/stampModules.md +55 -0
- package/api/@wtf/release-maven/stamp/functions/stampPom.md +45 -0
- package/api/@wtf/release-maven/stamp/interfaces/PomStampOptions.md +51 -0
- package/api/@wtf/release-maven/stamp/interfaces/Stamped.md +31 -0
- package/api/@wtf/release-maven/stamp/interfaces/StampedModules.md +31 -0
- package/api/@wtf/release-npm/check/functions/checkPackages.md +1 -1
- package/api/@wtf/release-npm/check/functions/formatIssue.md +1 -1
- package/api/@wtf/release-npm/check/interfaces/CheckOptions.md +6 -6
- package/api/@wtf/release-npm/check/interfaces/Issue.md +5 -5
- package/api/@wtf/release-npm/check/type-aliases/CheckedPackage.md +1 -1
- package/api/@wtf/release-npm/check/type-aliases/IssueCode.md +1 -1
- package/api/@wtf/release-npm/ecosystem/variables/npmEcosystem.md +1 -1
- package/api/@wtf/release-npm/errors/type-aliases/NpmErrorCode.md +1 -1
- package/api/@wtf/release-npm/errors/variables/NPM_ERRORS.md +1 -1
- package/api/@wtf/release-npm/interfaces/Lookup.md +3 -3
- 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/PublishTrainOptions.md +13 -13
- package/api/@wtf/release-npm/interfaces/Publisher.md +7 -7
- package/api/@wtf/release-npm/interfaces/PublisherContext.md +7 -7
- package/api/@wtf/release-npm/manifests/functions/concreteRange.md +1 -1
- package/api/@wtf/release-npm/manifests/functions/manifestsAt.md +1 -1
- 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 +1 -1
- 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 +7 -7
- 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 +1 -1
- 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 +5 -5
- 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/functions/builtInPublisher.md +1 -1
- package/api/@wtf/release-npm/publishers/functions/isPublisher.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/functions/checkTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/distTagOf.md +1 -1
- package/api/@wtf/release-npm/release/functions/packTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishPacked.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishedOf.md +1 -1
- package/api/@wtf/release-npm/release/functions/publishedOfResolved.md +1 -1
- package/api/@wtf/release-npm/release/functions/releaseTrain.md +1 -1
- package/api/@wtf/release-npm/release/functions/resolveManifests.md +1 -1
- package/api/@wtf/release-npm/release/functions/tagTrain.md +1 -1
- package/api/@wtf/release-npm/release/interfaces/CheckRelease.md +16 -16
- package/api/@wtf/release-npm/release/interfaces/PackOptions.md +8 -8
- package/api/@wtf/release-npm/release/interfaces/PackedTrain.md +12 -12
- package/api/@wtf/release-npm/release/interfaces/PublishRun.md +11 -11
- package/api/@wtf/release-npm/release/interfaces/PublishedOf.md +4 -4
- package/api/@wtf/release-npm/release/interfaces/PublishedPackage.md +7 -7
- package/api/@wtf/release-npm/release/interfaces/PublishedTrain.md +5 -5
- package/api/@wtf/release-npm/release/interfaces/ResolveRelease.md +17 -17
- package/api/@wtf/release-npm/release/interfaces/ResolvedPackage.md +4 -4
- package/api/@wtf/release-npm/release/interfaces/ResolvedTrain.md +6 -6
- package/api/@wtf/release-npm/release/interfaces/TagRelease.md +14 -14
- package/api/@wtf/release-npm/release/type-aliases/LookedUpTrain.md +1 -1
- package/api/@wtf/release-npm/release/type-aliases/ReleaseRun.md +1 -1
- 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/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 +1 -1
- package/api/@wtf/release-npm/workspace/functions/workspaceFolders.md +1 -1
- package/api/@wtf/release-npm/workspace/functions/workspaceGlobs.md +1 -1
- package/api/@wtf/release-npm/workspace/interfaces/WorkspaceGlobs.md +3 -3
- package/api/@wtf/release-npm/workspace/interfaces/WorkspaceOptions.md +2 -2
- package/api/@wtf/release-replace/errors/classes/ReplaceError.md +5 -5
- 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 +1 -1
- 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/functions/regExpOf.md +1 -1
- package/api/@wtf/release-replace/replace/functions/replaceFiles.md +1 -1
- package/api/@wtf/release-replace/replace/functions/replaceText.md +1 -1
- package/api/@wtf/release-replace/replace/interfaces/ReplaceOptions.md +10 -10
- 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-system/errors/classes/ReleaseError.md +7 -5
- package/api/@wtf/release-system/errors/functions/throwAll.md +1 -1
- package/api/@wtf/release-system/errors/type-aliases/ErrorClass.md +1 -1
- package/api/@wtf/release-system/errors/type-aliases/SystemErrorCode.md +1 -1
- package/api/@wtf/release-system/errors/variables/SYSTEM_ERRORS.md +1 -1
- package/api/@wtf/release-system/git/functions/commitsSince.md +1 -1
- package/api/@wtf/release-system/git/functions/filesOfCommits.md +1 -1
- package/api/@wtf/release-system/git/functions/git.md +1 -1
- package/api/@wtf/release-system/git/functions/gitOf.md +1 -1
- package/api/@wtf/release-system/git/functions/trackedFiles.md +1 -1
- package/api/@wtf/release-system/git/interfaces/GitContext.md +4 -4
- package/api/@wtf/release-system/git/interfaces/LogCommit.md +5 -5
- package/api/@wtf/release-system/node/functions/nodeSystem.md +1 -1
- package/api/@wtf/release-system/node/functions/realPathOf.md +1 -1
- package/api/@wtf/release-system/node/functions/systemOf.md +1 -1
- package/api/@wtf/release-system/paths/functions/normalizePath.md +1 -1
- package/api/@wtf/release-system/paths/functions/pathMatcher.md +1 -1
- package/api/@wtf/release-system/paths/type-aliases/PathMatcher.md +1 -1
- package/api/@wtf/release-system/posix/functions/basenameOf.md +1 -1
- package/api/@wtf/release-system/posix/functions/dirnameOf.md +1 -1
- package/api/@wtf/release-system/posix/functions/joinPath.md +1 -1
- package/api/@wtf/release-system/posix/functions/relativePath.md +1 -1
- package/api/@wtf/release-system/posix/functions/resolvePath.md +1 -1
- package/api/@wtf/release-system/system/interfaces/DirEntry.md +3 -3
- package/api/@wtf/release-system/system/interfaces/ExecOptions.md +4 -4
- package/api/@wtf/release-system/system/interfaces/ExecResult.md +4 -4
- package/api/@wtf/release-system/system/interfaces/System.md +7 -7
- package/api/@wtf/release-system/system/interfaces/SystemFs.md +8 -8
- package/api/@wtf/release-system/system/type-aliases/Exec.md +1 -1
- package/api/@wtf/release-system/system/type-aliases/SystemInput.md +1 -1
- package/api/@wtf/release-system/validator/functions/allOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/anyObject.md +1 -1
- package/api/@wtf/release-system/validator/functions/anyOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/arrayOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/booleanOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/errorOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/errorsOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/exclusive.md +1 -1
- package/api/@wtf/release-system/validator/functions/issuesOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/objectOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/oneOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/orFunction.md +1 -1
- package/api/@wtf/release-system/validator/functions/pathText.md +1 -1
- package/api/@wtf/release-system/validator/functions/pluginEntriesOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/recordOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/refined.md +1 -1
- package/api/@wtf/release-system/validator/functions/stringOf.md +1 -1
- package/api/@wtf/release-system/validator/functions/tupleOf.md +1 -1
- package/api/@wtf/release-system/validator/interfaces/ArrayOptions.md +5 -5
- package/api/@wtf/release-system/validator/interfaces/IssueOptions.md +4 -4
- package/api/@wtf/release-system/validator/interfaces/ObjectOptions.md +5 -5
- package/api/@wtf/release-system/validator/interfaces/OptionIssue.md +4 -4
- package/api/@wtf/release-system/validator/interfaces/Property.md +4 -4
- package/api/@wtf/release-system/validator/interfaces/RecordOptions.md +6 -6
- package/api/@wtf/release-system/validator/interfaces/StringOptions.md +6 -6
- package/api/@wtf/release-system/validator/interfaces/Validator.md +4 -4
- package/api/@wtf/release-system/validator/type-aliases/JsonSchema.md +1 -1
- package/api/@wtf/release-system/validator/type-aliases/Path.md +1 -1
- 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 +1 -1
- 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 +8 -8
- package/api/@wtf/release-trains/cascade/type-aliases/CascadeKind.md +1 -1
- 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/ecosystem/functions/isEcosystem.md +1 -1
- package/api/@wtf/release-trains/ecosystem/functions/loadEcosystems.md +1 -1
- package/api/@wtf/release-trains/ecosystem/functions/readPackages.md +1 -1
- package/api/@wtf/release-trains/ecosystem/interfaces/Dependency.md +4 -4
- package/api/@wtf/release-trains/ecosystem/interfaces/Ecosystem.md +5 -5
- package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemContext.md +5 -5
- package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemPackages.md +3 -3
- package/api/@wtf/release-trains/ecosystem/interfaces/Package.md +8 -6
- package/api/@wtf/release-trains/ecosystem/type-aliases/DependencyKind.md +1 -1
- package/api/@wtf/release-trains/ecosystem/type-aliases/ModuleLoader.md +1 -1
- package/api/@wtf/release-trains/ecosystem/variables/DEPENDENCY_KINDS.md +1 -1
- package/api/@wtf/release-trains/errors/classes/TrainsError.md +5 -5
- package/api/@wtf/release-trains/errors/type-aliases/TrainsErrorCode.md +1 -1
- package/api/@wtf/release-trains/errors/variables/TRAINS_ERRORS.md +1 -1
- package/api/@wtf/release-trains/generated/functions/filesIn.md +1 -1
- package/api/@wtf/release-trains/generated/functions/formatGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/listGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/parseGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/readGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/stageGenerated.md +1 -1
- package/api/@wtf/release-trains/generated/functions/stageGeneratedFolders.md +1 -1
- package/api/@wtf/release-trains/generated/functions/unlistedIn.md +1 -1
- package/api/@wtf/release-trains/generated/interfaces/GeneratedOptions.md +2 -2
- package/api/@wtf/release-trains/generated/interfaces/StageOptions.md +6 -6
- package/api/@wtf/release-trains/generated/variables/GENERATED.md +1 -1
- package/api/@wtf/release-trains/git/functions/tagOf.md +1 -1
- package/api/@wtf/release-trains/git/functions/tagsOf.md +1 -1
- 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/interfaces/Train.md +7 -7
- package/api/@wtf/release-trains/packages/functions/dependencyEdges.md +1 -1
- package/api/@wtf/release-trains/packages/functions/dependencyText.md +1 -1
- package/api/@wtf/release-trains/packages/functions/dependsOnErrors.md +1 -1
- package/api/@wtf/release-trains/packages/functions/normalizeDir.md +1 -1
- package/api/@wtf/release-trains/packages/functions/ownersOf.md +1 -1
- package/api/@wtf/release-trains/packages/functions/packagesOf.md +1 -1
- package/api/@wtf/release-trains/packages/functions/publishOrder.md +1 -1
- package/api/@wtf/release-trains/packages/functions/releasedVersions.md +1 -1
- package/api/@wtf/release-trains/packages/functions/trainDependencies.md +1 -1
- package/api/@wtf/release-trains/packages/functions/trainOrder.md +1 -1
- package/api/@wtf/release-trains/packages/functions/unsatisfiedErrors.md +1 -1
- package/api/@wtf/release-trains/packages/interfaces/DependencyEdge.md +6 -6
- package/api/@wtf/release-trains/packages/interfaces/OrderFault.md +4 -4
- package/api/@wtf/release-trains/packages/interfaces/OrderPins.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/PublishOrder.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/TrainDependency.md +3 -3
- package/api/@wtf/release-trains/packages/interfaces/VersionsRelease.md +7 -7
- package/api/@wtf/release-trains/paths/functions/filterCommits.md +1 -1
- package/api/@wtf/release-trains/paths/functions/gitFilesOf.md +1 -1
- 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/schema/interfaces/ConfigPart.md +6 -6
- package/api/@wtf/release-trains/schema/interfaces/RootOptions.md +7 -7
- 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 +1 -1
- package/api/@wtf/release-trains/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/rootOptionsSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/trainSchema.md +1 -1
- package/api/@wtf/release-trains/schema/variables/trainsSchema.md +1 -1
- package/api/@wtf/release-trains/trains/functions/changelogOf.md +1 -1
- package/api/@wtf/release-trains/trains/functions/matchersOf.md +1 -1
- 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 +1 -1
- 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/functions/unreleasedDependencies.md +1 -1
- package/api/@wtf/release-trains/verify/functions/verifyTrain.md +1 -1
- package/api/@wtf/release-trains/verify/interfaces/UnreleasedDependencies.md +10 -10
- package/api/@wtf/release-trains/verify/interfaces/VerifiedTrain.md +5 -5
- package/api/@wtf/release-trains/verify/interfaces/VerifyRelease.md +8 -8
- package/api/@wtf/release-validate/errors/classes/ValidateError.md +5 -5
- 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-cargo/functions/indexLookup.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-cargo/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-cargo/interfaces/CargoPluginOptions.md +12 -12
- package/api/@wtf/semantic-release-cargo/interfaces/CargoRelease.md +3 -3
- package/api/@wtf/semantic-release-cargo/schema/type-aliases/CargoOptions.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/cargoOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/cargoSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-cargo/variables/default.md +1 -1
- package/api/@wtf/semantic-release-go/README.md +73 -0
- package/api/@wtf/semantic-release-go/functions/prepare.md +41 -0
- package/api/@wtf/semantic-release-go/functions/publish.md +43 -0
- package/api/@wtf/semantic-release-go/functions/verifyConditions.md +37 -0
- package/api/@wtf/semantic-release-go/functions/verifyRelease.md +38 -0
- package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +84 -0
- package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +31 -0
- package/api/@wtf/semantic-release-go/schema/README.md +37 -0
- package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +13 -0
- package/api/@wtf/{semantic-release-trains-changelog → semantic-release-go}/schema/variables/configSchema.md +2 -2
- package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +13 -0
- package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +14 -0
- package/api/@wtf/{semantic-release-trains-changelog → semantic-release-go}/schema/variables/jsonSchema.md +2 -2
- package/api/@wtf/semantic-release-go/variables/default.md +144 -0
- package/api/@wtf/semantic-release-maven/README.md +74 -0
- package/api/@wtf/semantic-release-maven/functions/pomLookup.md +38 -0
- package/api/@wtf/semantic-release-maven/functions/prepare.md +41 -0
- package/api/@wtf/semantic-release-maven/functions/publish.md +43 -0
- package/api/@wtf/semantic-release-maven/functions/verifyConditions.md +40 -0
- package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +32 -0
- package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +129 -0
- package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +21 -0
- package/api/@wtf/semantic-release-maven/schema/README.md +38 -0
- package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +13 -0
- package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +13 -0
- package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +13 -0
- package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +13 -0
- package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +14 -0
- package/api/@wtf/semantic-release-maven/variables/default.md +116 -0
- package/api/@wtf/semantic-release-npm/functions/addChannel.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/fail.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/loadPublisher.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-npm/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-npm/interfaces/PublishPluginOptions.md +18 -18
- 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/type-aliases/PublishOptions.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/publishOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/schema/variables/publishSchema.md +1 -1
- package/api/@wtf/semantic-release-npm/type-aliases/PublisherSpec.md +1 -1
- package/api/@wtf/semantic-release-npm/variables/default.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/functionOf.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/templatesOf.md +1 -1
- package/api/@wtf/semantic-release-replace/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-replace/interfaces/ReplacePluginOptions.md +5 -5
- package/api/@wtf/semantic-release-replace/schema/interfaces/ModuleExport.md +3 -3
- package/api/@wtf/semantic-release-replace/schema/interfaces/ReplaceOptions.md +4 -4
- 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 +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/exportedSetSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/replaceOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/replacementSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/rootTemplatesSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/templateSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/schema/variables/templatesSchema.md +1 -1
- package/api/@wtf/semantic-release-replace/variables/default.md +1 -1
- package/api/@wtf/semantic-release-trains/config/README.md +11 -3
- 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 +3 -4
- 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 +14 -0
- package/api/@wtf/semantic-release-trains/defaults/README.md +42 -0
- package/api/@wtf/semantic-release-trains/defaults/functions/skipRuleOf.md +40 -0
- package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +42 -0
- package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +40 -0
- package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +59 -0
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.md +35 -0
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/TrainOptions.md +33 -0
- package/api/@wtf/semantic-release-trains/defaults/variables/SKIP_RULES.md +13 -0
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_OPTIONS.md +19 -0
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +17 -0
- 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/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 +1 -1
- package/api/@wtf/semantic-release-trains/info/interfaces/DecideRun.md +4 -4
- package/api/@wtf/semantic-release-trains/info/interfaces/InfoRun.md +8 -8
- 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 +15 -8
- package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -7
- package/api/@wtf/semantic-release-trains/schema/README.md +1 -0
- package/api/@wtf/semantic-release-trains/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/pluginSpecSchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/skipRuleSchema.md +13 -0
- package/api/@wtf/semantic-release-trains/schema/variables/trainsEntrySchema.md +1 -1
- package/api/@wtf/semantic-release-trains/schema/variables/trainsPluginSchema.md +1 -1
- 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/functions/configOf.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/loadSchema.md +1 -1
- package/api/@wtf/semantic-release-validate/functions/verifyConditions.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 +1 -1
- package/api/README.md +20 -5
- package/api/trains.json +9 -3
- package/guides/changelogs.md +30 -123
- package/guides/ci-recipes.md +16 -13
- package/guides/configuring-trains.md +7 -4
- package/guides/ecosystems.md +46 -23
- package/guides/getting-started.md +4 -6
- package/guides/publishing-go-modules.md +208 -0
- package/guides/publishing-maven.md +293 -0
- package/guides/publishing.md +6 -5
- package/guides/system.md +2 -2
- package/guides/validating-a-config.md +7 -9
- package/package.json +12 -10
- package/api/@wtf/release-trains-changelog/README.md +0 -58
- package/api/@wtf/release-trains-changelog/render/README.md +0 -44
- package/api/@wtf/release-trains-changelog/render/functions/changelogSection.md +0 -35
- package/api/@wtf/release-trains-changelog/render/functions/parseCommit.md +0 -28
- package/api/@wtf/release-trains-changelog/render/functions/prependSection.md +0 -40
- package/api/@wtf/release-trains-changelog/render/functions/renderSection.md +0 -37
- package/api/@wtf/release-trains-changelog/render/interfaces/ChangelogCommit.md +0 -27
- package/api/@wtf/release-trains-changelog/render/interfaces/ParsedCommit.md +0 -53
- package/api/@wtf/release-trains-changelog/render/interfaces/RenderOptions.md +0 -65
- package/api/@wtf/release-trains-changelog/render/variables/DEFAULT_TYPES.md +0 -13
- package/api/@wtf/release-trains-changelog/render/variables/TITLE.md +0 -13
- package/api/@wtf/release-trains-changelog/write/README.md +0 -48
- package/api/@wtf/release-trains-changelog/write/functions/changelogErrors.md +0 -33
- package/api/@wtf/release-trains-changelog/write/functions/commitUrlOf.md +0 -29
- package/api/@wtf/release-trains-changelog/write/functions/writeChangelogs.md +0 -35
- package/api/@wtf/release-trains-changelog/write/interfaces/ChangelogOptions.md +0 -68
- package/api/@wtf/release-trains-changelog/write/interfaces/ChangelogRelease.md +0 -176
- package/api/@wtf/release-trains-changelog/write/interfaces/ChangelogTarget.md +0 -146
- package/api/@wtf/release-trains-changelog/write/interfaces/WrittenChangelog.md +0 -37
- package/api/@wtf/semantic-release-trains-changelog/README.md +0 -47
- package/api/@wtf/semantic-release-trains-changelog/functions/prepare.md +0 -33
- package/api/@wtf/semantic-release-trains-changelog/functions/verifyConditions.md +0 -36
- package/api/@wtf/semantic-release-trains-changelog/interfaces/ChangelogPluginOptions.md +0 -126
- package/api/@wtf/semantic-release-trains-changelog/schema/README.md +0 -24
- package/api/@wtf/semantic-release-trains-changelog/schema/variables/changelogOptionsSchema.md +0 -13
- package/api/@wtf/semantic-release-trains-changelog/schema/variables/changelogSchema.md +0 -13
- package/api/@wtf/semantic-release-trains-changelog/variables/default.md +0 -68
package/guides/ecosystems.md
CHANGED
|
@@ -10,6 +10,8 @@ not. An **ecosystem** says those: a package of its own reads the manifests of on
|
|
|
10
10
|
| --------- | -------------------- | ----------------------------- | ---------------------------------------------------- |
|
|
11
11
|
| `npm` | `@wtf/release-npm` | `@wtf/semantic-release-npm` | each `package.json` git tracks |
|
|
12
12
|
| `cargo` | `@wtf/release-cargo` | `@wtf/semantic-release-cargo` | the Cargo workspace at the root, by `cargo metadata` |
|
|
13
|
+
| `go` | `@wtf/release-go` | `@wtf/semantic-release-go` | each `go.mod` git tracks |
|
|
14
|
+
| `maven` | `@wtf/release-maven` | `@wtf/semantic-release-maven` | each `pom.xml` git tracks |
|
|
13
15
|
|
|
14
16
|
A config names the ecosystems of the repo at its root, beside `trains`, each by the name of its
|
|
15
17
|
module, whose default export is the ecosystem. It is required, and a repo of two kinds names both.
|
|
@@ -31,7 +33,7 @@ export default {
|
|
|
31
33
|
```
|
|
32
34
|
|
|
33
35
|
The plugins load each of the repo, as an entry of `wrap` loads the plugin it wraps: by its name, its
|
|
34
|
-
path from the repo (`./release/
|
|
36
|
+
path from the repo (`./release/mine.mjs`), or its `file:` URL. One that cannot be loaded, whose
|
|
35
37
|
default export is no ecosystem, or of the name of another, fails with `EECOSYSTEM`. An ecosystem
|
|
36
38
|
that finds no manifest of its kind in the repo gives no package, so naming one more costs a repo
|
|
37
39
|
nothing: cargo's gives none of a repo of no `Cargo.toml` at its root, and runs no `cargo`.
|
|
@@ -52,6 +54,10 @@ nothing: cargo's gives none of a repo of no `Cargo.toml` at its root, and runs n
|
|
|
52
54
|
- **Cascade.** Where another train's last release has left a range the train's last release
|
|
53
55
|
published, the train releases again: a major of a `peer` that a major left, a patch of any other
|
|
54
56
|
kind.
|
|
57
|
+
- **A train of none.** A publishing plugin of an ecosystem (`@wtf/semantic-release-npm`, `-cargo`,
|
|
58
|
+
`-go`, `-maven`) does nothing in a run of a train that holds none of that ecosystem's packages: it
|
|
59
|
+
says so in the log, and asks for no credential. So a config of several ecosystems lists each
|
|
60
|
+
plugin for every train, and a train of npm packages alone skips the crates.
|
|
55
61
|
|
|
56
62
|
## The interface
|
|
57
63
|
|
|
@@ -166,7 +172,7 @@ What to get right:
|
|
|
166
172
|
itself is by `context.system`, so the trains run it on a CLI's system, or a test's in memory.
|
|
167
173
|
|
|
168
174
|
The publishing is the ecosystem's own: a plugin of semantic-release of its own, as
|
|
169
|
-
`@wtf/semantic-release-npm` and `@wtf/semantic-release-
|
|
175
|
+
`@wtf/semantic-release-npm`, `@wtf/semantic-release-cargo`, `@wtf/semantic-release-go` and `@wtf/semantic-release-maven` are, reads `trains`, `ecosystems` and
|
|
170
176
|
`train` of the root, the packages of its train by `ownersOf` of `@wtf/release-trains/packages`, and
|
|
171
177
|
the versions of the other trains by `releasedVersions`, which throws the errors of the trains.
|
|
172
178
|
|
|
@@ -203,30 +209,47 @@ is written as npm writes a range:
|
|
|
203
209
|
|
|
204
210
|
See [Publishing crates](publishing-crates.md).
|
|
205
211
|
|
|
206
|
-
|
|
212
|
+
### Go
|
|
207
213
|
|
|
208
|
-
|
|
214
|
+
`@wtf/release-go` reads each `go.mod` git tracks, of the working tree or of a commit by `git show`,
|
|
215
|
+
but those under a `vendor` or `testdata` folder. A package is named by its module path, of the
|
|
216
|
+
`module` line; a go.mod of none, or two of one path, fail with `EGOMOD`. A module is published when
|
|
217
|
+
Go can fetch it, as the first element of its path has a dot (`example.com/repo/core`, not `tools`).
|
|
218
|
+
Each `require` of another module of the repo, of a line of its own or of a block, `// indirect` too,
|
|
219
|
+
is `runtime`, Go's only kind, of the version it names, as `v0.0.0`. `resolve` is the version itself,
|
|
220
|
+
of a `v`, as the stamp writes it (`v1.4.0`), and `satisfies` is Go's minimal version selection: the
|
|
221
|
+
same major, and the same version or a later one, prereleases in the order of semver.
|
|
209
222
|
|
|
210
|
-
|
|
223
|
+
| requires | takes |
|
|
224
|
+
| -------- | ------------------------- |
|
|
225
|
+
| `v1.4.0` | `>=1.4.0, <2.0.0` |
|
|
226
|
+
| `v0.2.1` | `>=0.2.1, <1.0.0` |
|
|
227
|
+
| `v2.0.0` | `>=2.0.0, <3.0.0` |
|
|
228
|
+
| `latest` | none: it names no version |
|
|
211
229
|
|
|
212
|
-
|
|
213
|
-
- **Dependencies:** each `require` of a sibling module is `runtime`, of the version it requires; a
|
|
214
|
-
`replace` by a path keeps the workspace building, and reaches no proxy.
|
|
215
|
-
- **Publishing:** there is no registry. A release pushes Go's own tags, `<module dir>/vX.Y.Z`, beside
|
|
216
|
-
the train's tag, and the proxy reads them.
|
|
217
|
-
- **`resolve` and `satisfies`:** the version itself; a version is within a requirement when it is at
|
|
218
|
-
least it, within its major, as minimal version selection reads it.
|
|
219
|
-
- **A major:** from v2 on, the module's path ends in `/vN`, so a check of the release refuses a major
|
|
220
|
-
of a module whose path does not, until it changes.
|
|
230
|
+
See [Publishing Go modules](publishing-go-modules.md).
|
|
221
231
|
|
|
222
232
|
### Maven
|
|
223
233
|
|
|
224
|
-
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
234
|
+
`@wtf/release-maven` reads each `pom.xml` git tracks, of the working tree or of a commit by
|
|
235
|
+
`git show`, but those in a `src` or a `target` folder, by a small XML reader of its own. A package
|
|
236
|
+
is named `groupId:artifactId`, the groupId its parent's where the pom writes none. A module is
|
|
237
|
+
published unless `maven.deploy.skip` is `true` in its `<properties>`, or in a parent's in the repo,
|
|
238
|
+
its own value first. Its `<parent>` and each `<dependency>` of the scope `compile`, `runtime` or none
|
|
239
|
+
are `runtime`, `provided` is `peer`, `test` is `dev` (of no range, as no consumer resolves it), and
|
|
240
|
+
`system` is none; a `<dependencyManagement>` entry of the scope `import` is `runtime`, and a plugin of
|
|
241
|
+
the build, or a plugin's dependency, `build`. The range is the `<version>` as written,
|
|
242
|
+
`${project.version}` too. `resolve` is the version itself, as the stamp writes it, but a range of
|
|
243
|
+
the author's own, which is itself; `satisfies` is Maven's rules, by Maven's order of versions:
|
|
244
|
+
|
|
245
|
+
| pom | takes |
|
|
246
|
+
| ------------ | ----------------------------------------- |
|
|
247
|
+
| `1.4.0` | any: a bare version is a soft requirement |
|
|
248
|
+
| `[1.4,2.0)` | `>=1.4.0, <2.0.0` |
|
|
249
|
+
| `[1.4,)` | `>=1.4.0` |
|
|
250
|
+
| `(,1.0]` | `<=1.0.0` |
|
|
251
|
+
| `[1.4]` | `1.4.0` |
|
|
252
|
+
| `[1,2),[3,)` | `>=1.0.0, <2.0.0`, or `>=3.0.0` |
|
|
253
|
+
|
|
254
|
+
So a bare version cascades nothing; a range of your own is never rewritten. See
|
|
255
|
+
[Publishing Maven modules](publishing-maven.md).
|
|
@@ -9,15 +9,14 @@ There are two layers:
|
|
|
9
9
|
|
|
10
10
|
- **The libraries**, of no release tool: `@wtf/release-system` (the system, paths, git, validators
|
|
11
11
|
of options and `ReleaseError`, of no train, the base of the others), `@wtf/release-trains` (the
|
|
12
|
-
trains, their commits, their checks, the folders a build generates),
|
|
13
|
-
`@wtf/release-trains-changelog` (a changelog of each package), `@wtf/release-npm`
|
|
12
|
+
trains, their commits, their checks, the folders a build generates), `@wtf/release-npm`
|
|
14
13
|
(every package of a train published), `@wtf/release-replace` (text replaced in files, as the
|
|
15
14
|
version of a badge) and `@wtf/release-validate` (a config validated by any Standard Schema). Each
|
|
16
15
|
function takes the `system` it runs by: see [The system](system.md).
|
|
17
16
|
- **The plugins of semantic-release**, each a thin adapter over its library:
|
|
18
17
|
`@wtf/semantic-release-trains` (the trains checked, a plugin given the train's commits alone, and
|
|
19
|
-
the folders a build generates staged), `@wtf/semantic-release-
|
|
20
|
-
`@wtf/semantic-release-
|
|
18
|
+
the folders a build generates staged), `@wtf/semantic-release-npm` and
|
|
19
|
+
`@wtf/semantic-release-replace`.
|
|
21
20
|
|
|
22
21
|
## Install
|
|
23
22
|
|
|
@@ -33,8 +32,7 @@ Each plugin is a package of its own, which semantic-release loads by its name, a
|
|
|
33
32
|
it. `@wtf/semantic-release-trains` is one, which a config lists once for each role: of `wrap`, it
|
|
34
33
|
gives the plugin it wraps, as the analyzer and the notes generator, the train's commits alone; of
|
|
35
34
|
`generated`, it stages the folders a build generates; and every entry checks the trains. Install
|
|
36
|
-
each other the config names: `@wtf/semantic-release-
|
|
37
|
-
`@wtf/semantic-release-npm`, `@wtf/semantic-release-replace`. semantic-release brings
|
|
35
|
+
each other the config names: `@wtf/semantic-release-npm`, `@wtf/semantic-release-replace`. semantic-release brings
|
|
38
36
|
`@semantic-release/commit-analyzer` and `@semantic-release/release-notes-generator` with it, which
|
|
39
37
|
an entry of `wrap` loads as semantic-release does.
|
|
40
38
|
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Publishing Go modules
|
|
2
|
+
|
|
3
|
+
A release train can release the Go modules of a repo beside its npm packages and crates: one
|
|
4
|
+
version, one train tag, and a retry that finishes what stopped. Go has no registry to upload to. A
|
|
5
|
+
version of a module is a git tag of its repo, `<folder>/v<version>`, or `v<version>` for a module at
|
|
6
|
+
the root, and the Go proxy reads the module from that tag. The library is
|
|
7
|
+
[`@wtf/release-go`](../../release-go/README.md), and the plugin over it
|
|
8
|
+
[`@wtf/semantic-release-go`](../../semantic-release-go/README.md).
|
|
9
|
+
|
|
10
|
+
`@wtf/release-go` is the ecosystem of Go too, its default export, which the plugin exports at
|
|
11
|
+
`./ecosystem` and a config names in `ecosystems` as `'@wtf/semantic-release-go/ecosystem'`. The
|
|
12
|
+
trains then read the modules of the repo as they read npm packages ([Ecosystems](ecosystems.md)):
|
|
13
|
+
which train holds each module, the order of the trains, the checks of a release, and the releases a
|
|
14
|
+
train owes the trains it depends on.
|
|
15
|
+
|
|
16
|
+
## The model
|
|
17
|
+
|
|
18
|
+
The train tag is the version, and no version is written into git on the branch. Each go.mod that
|
|
19
|
+
requires another module of the repo requires it at a placeholder, `v0.0.0`, and builds against the
|
|
20
|
+
module in the repo by a `go.work` or a `replace` (see [go.work or replace](#gowork-or-replace)):
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
module example.com/repo/cli
|
|
24
|
+
|
|
25
|
+
go 1.24
|
|
26
|
+
|
|
27
|
+
require example.com/repo/core v0.0.0
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
A module is each go.mod git tracks, but those under a `vendor` or `testdata` folder, which Go
|
|
31
|
+
ignores. It is of the train whose `paths` hold its folder; the plugin reads `trains`, `ecosystems`
|
|
32
|
+
and `train` of the root of the config, as `@wtf/semantic-release-npm` does. A module of no train is
|
|
33
|
+
tagged by no release. A module whose path has no dot in its first element, as `module tools`, cannot
|
|
34
|
+
be fetched by Go, so no release tags it, and a module that requires it fails before the tag
|
|
35
|
+
(`EGOPRIVATE`). `ecosystems` must list the ecosystem of Go, or the plugin fails in
|
|
36
|
+
`verifyConditions` with `EGOECOSYSTEM`:
|
|
37
|
+
|
|
38
|
+
```js norun
|
|
39
|
+
// release.config.mjs
|
|
40
|
+
export const ecosystems = [
|
|
41
|
+
'@wtf/semantic-release-npm/ecosystem',
|
|
42
|
+
'@wtf/semantic-release-go/ecosystem'
|
|
43
|
+
]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## The commit the tags name
|
|
47
|
+
|
|
48
|
+
Go reads a module's go.mod at the commit its tag names, and uses the requires it finds there. The
|
|
49
|
+
release commit of the branch still has the placeholders, so tagging it would publish
|
|
50
|
+
`require example.com/repo/core v0.0.0`, a version that does not exist.
|
|
51
|
+
|
|
52
|
+
So the run of the tag writes the versions into the go.mod files (`prepare`), then makes a commit of
|
|
53
|
+
those files on top of the release commit, on no branch, and tags that commit with each module's tag
|
|
54
|
+
(`publish`). The branch, the index and the working tree are left as they are; only the tags reach
|
|
55
|
+
the remote. The commit is `chore(release): Go modules of <train> <version>`, of the author in
|
|
56
|
+
`GIT_AUTHOR_NAME` and `GIT_AUTHOR_EMAIL` (and the committer in `GIT_COMMITTER_*`), else
|
|
57
|
+
`semantic-release-bot`. When no go.mod changed, as for modules that require no other module of the
|
|
58
|
+
repo, the release commit itself is tagged.
|
|
59
|
+
|
|
60
|
+
The tag of a module in a folder of its major, as `example.com/repo/lib/v2` in `lib/v2`, is the folder
|
|
61
|
+
above with the version, `lib/v2.0.0`, as Go looks it up.
|
|
62
|
+
|
|
63
|
+
## Run it on the tag
|
|
64
|
+
|
|
65
|
+
The branch run decides the version and pushes the train tag, as for any train. The run of the tag
|
|
66
|
+
lists the plugin:
|
|
67
|
+
|
|
68
|
+
```js norun
|
|
69
|
+
// release.config.mjs
|
|
70
|
+
export const tagPlugins = [
|
|
71
|
+
['@wtf/semantic-release-trains', { wrap: '@semantic-release/release-notes-generator' }],
|
|
72
|
+
// The Go modules of the train of the run, whose `paths` hold their folders.
|
|
73
|
+
'@wtf/semantic-release-go',
|
|
74
|
+
['@wtf/semantic-release-npm', { tarballDir: 'tarballs' }],
|
|
75
|
+
['@semantic-release/gitlab', { successCommentCondition: false, failCommentCondition: false }]
|
|
76
|
+
]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The plugin pushes its tags to the `repositoryUrl` of the run, which in a CI job holds the token
|
|
80
|
+
semantic-release pushes by, so the job needs nothing more than the branch run does: `git`, and a
|
|
81
|
+
token that may create the module tags. Where the tags of the repo are protected by a pattern that
|
|
82
|
+
matches the module tags too, the token's role must be allowed to create them. The job needs no
|
|
83
|
+
`go`, unless `proxy` is on.
|
|
84
|
+
|
|
85
|
+
The module tags start pipelines of their own. Let a workflow rule run a pipeline for the train
|
|
86
|
+
tags alone, and none for any other tag:
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
workflow:
|
|
90
|
+
rules:
|
|
91
|
+
# The tag of a release of a train: its pipeline publishes.
|
|
92
|
+
- if: $CI_COMMIT_TAG =~ /^(core|cli)-v\d+\.\d+\.\d+/
|
|
93
|
+
# Every other tag, as a Go module's own (`core/v1.2.0`), runs no pipeline.
|
|
94
|
+
- if: $CI_COMMIT_TAG
|
|
95
|
+
when: never
|
|
96
|
+
- if: $CI_COMMIT_BRANCH
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Modules of several trains
|
|
100
|
+
|
|
101
|
+
A repo can release its modules in several trains, each with its own version and tags: a core, and a
|
|
102
|
+
CLI that requires it.
|
|
103
|
+
|
|
104
|
+
```js norun
|
|
105
|
+
// release.config.mjs
|
|
106
|
+
export const trains = {
|
|
107
|
+
core: { paths: ['core'], shared: ['go.work'] },
|
|
108
|
+
cli: { paths: ['cli'], shared: ['go.work'] }
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The trains read the requires by the ecosystem of Go, so a train whose modules require another
|
|
113
|
+
train's modules releases after it, as an npm package of one train that depends on a package of
|
|
114
|
+
another does; no `dependsOn` says so.
|
|
115
|
+
|
|
116
|
+
The release of a train writes its own version into each require of its modules, and the last
|
|
117
|
+
release of each other train, of its tags that the tag's commit holds, into each require of that
|
|
118
|
+
train's modules, in every go.mod of the repo. So the release `cli-v1.0.0`, after `core-v1.4.0`,
|
|
119
|
+
tags `cli/v1.0.0` on a commit whose `cli/go.mod` has `require example.com/repo/core v1.4.0`, and
|
|
120
|
+
tags nothing of core, whose `core/v1.4.0` the release of core made.
|
|
121
|
+
|
|
122
|
+
The checks are the trains', before the tag: a module of the release that requires a module of no
|
|
123
|
+
train fails with `EDEPENDENCYNOTRAIN`, and of a train that has no release with
|
|
124
|
+
`EDEPENDENCYNORELEASE`, as neither has a version Go could fetch; a module the paths of two trains
|
|
125
|
+
hold fails with `ETRAINOVERLAP`.
|
|
126
|
+
|
|
127
|
+
Go's minimal version selection takes the version a module requires or a later one of the same
|
|
128
|
+
major, so `require example.com/repo/core v1.4.0` takes core 1.5.0, and a release of core owes cli
|
|
129
|
+
nothing ([Dependency rules](dependency-rules.md)). Core 2.0.0 is a module of another path (see
|
|
130
|
+
[Majors](#majors)): cli takes it by changing its imports and its require, a change of cli's own,
|
|
131
|
+
which releases cli.
|
|
132
|
+
|
|
133
|
+
## Majors
|
|
134
|
+
|
|
135
|
+
From v2 on, Go holds the major in the module path: `example.com/repo/core/v2`. A path that ends in
|
|
136
|
+
`/vN` needs a release of major N, and a release of major 2 or more needs a path that ends in its
|
|
137
|
+
major. The plugin checks this in `verifyRelease`, once semantic-release knows the version, and again
|
|
138
|
+
in `prepare`, so a breaking change of a module whose path has no `/v2` fails before anything is
|
|
139
|
+
tagged (`EGOMAJOR`). The error names the go.mod to change: write `module example.com/repo/core/v2`
|
|
140
|
+
there, and change each import and each require of the module to the new path, in the commit of the
|
|
141
|
+
breaking change. A `gopkg.in/` path carries its major in its own way and is not checked.
|
|
142
|
+
|
|
143
|
+
The module can stay in its folder (`core/go.mod`, tags `core/v2.0.0`), or move to a folder of its
|
|
144
|
+
major (`core/v2/go.mod`, tags `core/v2.0.0` as well).
|
|
145
|
+
|
|
146
|
+
## go.work or replace
|
|
147
|
+
|
|
148
|
+
Before a release, each go.mod requires the modules of the repo at `v0.0.0`, which does not exist, so
|
|
149
|
+
the build must find them in the repo. Two ways:
|
|
150
|
+
|
|
151
|
+
- **go.work**, at the root, which lists the modules of the repo and is no part of any module:
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
go 1.24
|
|
155
|
+
|
|
156
|
+
use (
|
|
157
|
+
./core
|
|
158
|
+
./cli
|
|
159
|
+
)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
A build in the repo uses the modules of the workspace; a user's `go install` of a module reads its
|
|
163
|
+
go.mod alone, and never the repo's go.work.
|
|
164
|
+
|
|
165
|
+
- **replace**, in each go.mod that requires a module of the repo:
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
require example.com/repo/core v0.0.0
|
|
169
|
+
|
|
170
|
+
replace example.com/repo/core v0.0.0 => ../core
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
The release writes the version on the left of the replace too
|
|
174
|
+
(`replace example.com/repo/core v1.4.0 => ../core`), so it still applies to the version the
|
|
175
|
+
require names. But `go install example.com/repo/cli@v1.0.0` refuses a module whose go.mod has a
|
|
176
|
+
replace directive, so prefer go.work for a module people install by `go install`.
|
|
177
|
+
|
|
178
|
+
A release changes only the version of each require of a module of the repo, and of each replace of
|
|
179
|
+
one that names a version, where they stand: comments, layout and line endings stay. It does not
|
|
180
|
+
touch go.sum and does not run `go mod tidy`. A go.sum needs no line for a module the build finds in
|
|
181
|
+
the repo, by go.work or by a replace; and Go checks the modules a user fetches against its checksum
|
|
182
|
+
database, not against the go.sum of the module that requires them. A require of a form the stamp
|
|
183
|
+
does not read fails the run after it (`EGOVERSION`), so no go.mod is tagged at the wrong version.
|
|
184
|
+
|
|
185
|
+
## The proxy
|
|
186
|
+
|
|
187
|
+
`proxy: true` asks the Go proxy for each module once its tag is pushed, by
|
|
188
|
+
`go list -m -json <path>@v<version>`, with `GOWORK=off`, `GOFLAGS=-mod=mod` and the `GOPROXY` of
|
|
189
|
+
the job, Go's own by default. The proxy then has the version, and pkg.go.dev lists it; the release
|
|
190
|
+
links to the first module there. It is off by default: the public proxy cannot fetch a private repo.
|
|
191
|
+
Turn it on for a public repo, in a job that has `go`:
|
|
192
|
+
|
|
193
|
+
```js norun
|
|
194
|
+
// release.config.mjs
|
|
195
|
+
export const go = ['@wtf/semantic-release-go', { proxy: true }]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
A proxy that does not give a module fails the run with `EGOPROXY`, as when it lags a new tag; a
|
|
199
|
+
retry of the job of the tag skips the tags the remote has and asks again. Users of a private repo
|
|
200
|
+
set `GOPRIVATE` to its path, and fetch it by git instead of the proxy.
|
|
201
|
+
|
|
202
|
+
## A release that stopped
|
|
203
|
+
|
|
204
|
+
A tag the remote has stays: the checksum database records a module version the first time anyone
|
|
205
|
+
fetches it, so a tag must never move. The plugin asks the remote for every tag before it makes
|
|
206
|
+
anything, skips each it has, and pushes the rest in one atomic push, all or none. Retrying the job
|
|
207
|
+
of the tag makes the tags that are missing. A remote that cannot be asked stops the run before
|
|
208
|
+
anything is made (`EGOTAG`).
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Publishing Maven modules
|
|
2
|
+
|
|
3
|
+
A release train can deploy the modules of a Maven repo beside the packages of other ecosystems of the
|
|
4
|
+
same release: one version, one tag, and a retry that finishes what stopped. A repo of several trains
|
|
5
|
+
deploys each train's modules by its own release, and a module that depends on a module of another
|
|
6
|
+
train at that train's last release. The library is
|
|
7
|
+
[`@wtf/release-maven`](../../release-maven/README.md), and the plugin over it
|
|
8
|
+
[`@wtf/semantic-release-maven`](../../semantic-release-maven/README.md). Neither reads a
|
|
9
|
+
`package.json`: a module is a `pom.xml`, so the plugin is a plugin of its own, listed beside
|
|
10
|
+
`@wtf/semantic-release-npm`, not a publisher of it.
|
|
11
|
+
|
|
12
|
+
`@wtf/release-maven` is the ecosystem of Maven too, its default export, which the plugin exports at
|
|
13
|
+
`./ecosystem` and a config names in `ecosystems` as `'@wtf/semantic-release-maven/ecosystem'`, so
|
|
14
|
+
the trains read the modules of the repo by it, the same as the packages of npm
|
|
15
|
+
([Ecosystems](ecosystems.md)): which train holds each module, the order of the trains, the checks of
|
|
16
|
+
a release, and the releases a train owes the trains it depends on.
|
|
17
|
+
|
|
18
|
+
Gradle is not covered: the plugin reads poms and runs `mvn`.
|
|
19
|
+
|
|
20
|
+
## The model
|
|
21
|
+
|
|
22
|
+
The tag is the version, and no version is written into git. Each `pom.xml` holds a placeholder,
|
|
23
|
+
`0.0.0-SNAPSHOT`, as each `package.json` of an npm train holds `0.0.0-development`:
|
|
24
|
+
|
|
25
|
+
```xml
|
|
26
|
+
<project>
|
|
27
|
+
<parent>
|
|
28
|
+
<groupId>org.acme</groupId>
|
|
29
|
+
<artifactId>parent</artifactId>
|
|
30
|
+
<version>0.0.0-SNAPSHOT</version>
|
|
31
|
+
<relativePath>../parent/pom.xml</relativePath>
|
|
32
|
+
</parent>
|
|
33
|
+
<artifactId>client</artifactId>
|
|
34
|
+
<version>0.0.0-SNAPSHOT</version>
|
|
35
|
+
|
|
36
|
+
<dependencies>
|
|
37
|
+
<dependency>
|
|
38
|
+
<groupId>org.acme</groupId>
|
|
39
|
+
<artifactId>core</artifactId>
|
|
40
|
+
<version>0.0.0-SNAPSHOT</version>
|
|
41
|
+
</dependency>
|
|
42
|
+
</dependencies>
|
|
43
|
+
</project>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The run of the tag writes the version of the tag into each pom, deploys, and the working tree is
|
|
47
|
+
thrown away with the job. A module is each `pom.xml` git tracks, but one in a `src` or a `target`
|
|
48
|
+
folder, as the fixtures of a plugin's tests; its name is `groupId:artifactId`, the groupId its
|
|
49
|
+
parent's where it writes none.
|
|
50
|
+
|
|
51
|
+
A module is of the train whose `paths` hold its folder, as a package is of the train whose paths
|
|
52
|
+
hold its `package.json`; the plugin reads `trains`, `ecosystems` and `train` of the root of the
|
|
53
|
+
config, as `@wtf/semantic-release-npm` does. A module of no train, as a sample, is deployed by no
|
|
54
|
+
release. `ecosystems` must list the ecosystem of Maven, the plugin's
|
|
55
|
+
`'@wtf/semantic-release-maven/ecosystem'` or `'@wtf/release-maven'`, or the trains read no module
|
|
56
|
+
and the plugin fails in `verifyConditions` with `EMAVENECOSYSTEM`.
|
|
57
|
+
|
|
58
|
+
A pom at the root of the repo has the folder `.`, which only a path of `.` holds, and that holds
|
|
59
|
+
every file. Keep the parent in a folder of its own, as `parent/pom.xml`, and the root pom an
|
|
60
|
+
aggregator of `<modules>`, of `maven.deploy.skip` and no train. Give each child the parent's
|
|
61
|
+
`<relativePath>`, so Maven finds the parent in the repo rather than in a repository.
|
|
62
|
+
|
|
63
|
+
## Run it on the tag
|
|
64
|
+
|
|
65
|
+
The branch run decides the version and pushes the tag, as for any train. The run of the tag, the
|
|
66
|
+
job that deploys, lists the plugin:
|
|
67
|
+
|
|
68
|
+
```js norun
|
|
69
|
+
// release.config.mjs
|
|
70
|
+
export const tagPlugins = [
|
|
71
|
+
['@wtf/semantic-release-trains', { wrap: '@semantic-release/release-notes-generator' }],
|
|
72
|
+
// The modules of the train of the run, whose `paths` hold their folders.
|
|
73
|
+
['@wtf/semantic-release-maven', { args: ['-s', 'ci_settings.xml'] }],
|
|
74
|
+
['@semantic-release/gitlab', { successCommentCondition: false, failCommentCondition: false }]
|
|
75
|
+
]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The job needs Node, for semantic-release, and Maven and a JDK, for the deploys: an image of both, or
|
|
79
|
+
one of them that installs the other. The jobs of the branch need neither Maven nor a JDK: the trains
|
|
80
|
+
read the poms by git.
|
|
81
|
+
|
|
82
|
+
The plugin deploys each module by `mvn -B -N -f <dir>/pom.xml deploy`, of that pom alone, from the
|
|
83
|
+
root of the repo, after the modules it depends on. A deploy runs the build of the module and its
|
|
84
|
+
tests; add `-DskipTests` to `args` where the branch pipeline has run them. A module the release needs
|
|
85
|
+
to build, which it neither deploys nor finds on the repository, as a test kit of
|
|
86
|
+
`maven.deploy.skip`, is installed into the local repository first.
|
|
87
|
+
|
|
88
|
+
## Modules of several trains
|
|
89
|
+
|
|
90
|
+
A repo can be released in several trains, each its own modules, version and tags, whose modules
|
|
91
|
+
depend on the modules of the others: a core, a client over it, and docs over both.
|
|
92
|
+
|
|
93
|
+
```js norun
|
|
94
|
+
// release.config.mjs
|
|
95
|
+
export const trains = {
|
|
96
|
+
core: { paths: ['parent', 'core'] },
|
|
97
|
+
client: { paths: ['client'] },
|
|
98
|
+
docs: { paths: ['docs'], dependsOn: ['core', 'client'] }
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export const ecosystems = ['@wtf/semantic-release-maven/ecosystem']
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The trains read the modules by the ecosystem of Maven, so a train whose modules depend on another
|
|
105
|
+
train's modules, by any scope but `test`, or by a `<parent>` or a plugin of the build, releases after
|
|
106
|
+
it; no `dependsOn` says so. Name a train in `dependsOn` only of what no pom says.
|
|
107
|
+
|
|
108
|
+
The release of a train writes its own version into its modules, and the last release of each other
|
|
109
|
+
train, of its tags that the tag's commit holds, into that train's modules and into everything that
|
|
110
|
+
names them. So the release `client-v1.1.0`, after `core-v1.4.0`, deploys `client` 1.1.0 of the
|
|
111
|
+
parent 1.4.0 and `core` 1.4.0, and nothing of core's, which the repository has.
|
|
112
|
+
|
|
113
|
+
The checks are the trains', the same of every ecosystem, in `verifyConditions`, before the tag: a
|
|
114
|
+
module of the release that depends on a module of no train fails with `EDEPENDENCYNOTRAIN`, and on a
|
|
115
|
+
module of a train that has no release with `EDEPENDENCYNORELEASE`, as neither has a version a
|
|
116
|
+
repository could serve, so the release never deploys the placeholder; a module the paths of two
|
|
117
|
+
trains hold fails with `ETRAINOVERLAP`. A dependency of the `test` scope is no fault, as no consumer
|
|
118
|
+
resolves it. A module of the release that depends on a module of `maven.deploy.skip`, by any other
|
|
119
|
+
scope, or has it as its parent, fails with `EMAVENPRIVATE`: a consumer would not find it.
|
|
120
|
+
|
|
121
|
+
### Versions and ranges
|
|
122
|
+
|
|
123
|
+
A version Maven reads as a bare `<version>1.4.0</version>` is a soft requirement: Maven takes it
|
|
124
|
+
unless the build has another version of the module. So a release of core of any version owes client
|
|
125
|
+
nothing, and no train cascades of a bare version. A range of your own, as `[1.4,2.0)`, is by its
|
|
126
|
+
bounds, in Maven's order of versions (`1.0` is `1.0.0`, `1.5.0-beta.1` comes before `1.5.0`): the
|
|
127
|
+
release writes no range, and once core's last release is outside it, as 2.0.0, a release of client
|
|
128
|
+
fails with `EDEPENDENCYUNSATISFIED` until you change the range.
|
|
129
|
+
|
|
130
|
+
## What the stamp writes
|
|
131
|
+
|
|
132
|
+
Each module takes the version of its train: of the train of the release, the release's; of another
|
|
133
|
+
train, its last release; of no train, none. Of every pom of the repo, the stamp writes:
|
|
134
|
+
|
|
135
|
+
- the project's `<version>` of each module that takes a version, a `${revision}` too;
|
|
136
|
+
- the `<parent>`'s `<version>`, where the parent is a module of the repo that takes a version;
|
|
137
|
+
- the `<version>` of each `<dependency>`, in `<dependencies>`, `<dependencyManagement>`, a plugin's
|
|
138
|
+
dependencies and a profile, and of each `<plugin>`, that names a module that takes a version,
|
|
139
|
+
`${project.version}` too.
|
|
140
|
+
|
|
141
|
+
It leaves a range, a dependency of no `<version>`, which takes the one its `<dependencyManagement>`
|
|
142
|
+
gives, and a version of a property of your own, as `${core.version}`: write the version of a module
|
|
143
|
+
of the repo as `0.0.0-SNAPSHOT` or `${project.version}`. It writes no XML: it reads where each
|
|
144
|
+
`<version>` is, and writes the new text there, so the comments, the layout and the line ends stay as
|
|
145
|
+
they were.
|
|
146
|
+
|
|
147
|
+
A module that writes no `<version>` takes its parent's, so it must be of the train of its parent: a
|
|
148
|
+
module of another train, or whose parent is not of the repo, fails with `EMAVENSTAMP`; give it a
|
|
149
|
+
`<version>0.0.0-SNAPSHOT</version>` of its own. A module of no train that inherits its version moves
|
|
150
|
+
with its parent. After the stamp, the plugin reads the poms again, and a module not at the version
|
|
151
|
+
of its train fails the run (`EMAVENVERSION`), so a pom the stamp did not write cannot deploy at the
|
|
152
|
+
wrong version.
|
|
153
|
+
|
|
154
|
+
## `maven.deploy.skip`
|
|
155
|
+
|
|
156
|
+
A module whose `<properties>` set `maven.deploy.skip` to `true`, or whose parent in the repo does,
|
|
157
|
+
is not deployed; its own value wins over its parent's, so a parent of samples can skip them all and
|
|
158
|
+
one sample set it back to `false`. Use it for an aggregator, samples, integration tests and test
|
|
159
|
+
kits. `exclude` leaves out a module of the train by its `groupId:artifactId` too.
|
|
160
|
+
|
|
161
|
+
## The GitLab Maven registry
|
|
162
|
+
|
|
163
|
+
The registry of a project serves its packages at
|
|
164
|
+
`${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven`, and a job reads and writes it by its
|
|
165
|
+
`CI_JOB_TOKEN`. The settings give Maven the token as the header `Job-Token`. They hold no secret, so
|
|
166
|
+
commit them, or let the job write them:
|
|
167
|
+
|
|
168
|
+
```xml
|
|
169
|
+
<!-- ci_settings.xml -->
|
|
170
|
+
<settings>
|
|
171
|
+
<servers>
|
|
172
|
+
<server>
|
|
173
|
+
<id>gitlab-maven</id>
|
|
174
|
+
<configuration>
|
|
175
|
+
<httpHeaders>
|
|
176
|
+
<property>
|
|
177
|
+
<name>Job-Token</name>
|
|
178
|
+
<value>${env.CI_JOB_TOKEN}</value>
|
|
179
|
+
</property>
|
|
180
|
+
</httpHeaders>
|
|
181
|
+
</configuration>
|
|
182
|
+
</server>
|
|
183
|
+
</servers>
|
|
184
|
+
</settings>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The plugin is given the repository, its `url` of `${env.…}`, which it reads of the environment of
|
|
188
|
+
the run, and the header its lookups send, which no log holds:
|
|
189
|
+
|
|
190
|
+
```js norun
|
|
191
|
+
// release.config.mjs
|
|
192
|
+
export const maven = [
|
|
193
|
+
'@wtf/semantic-release-maven',
|
|
194
|
+
{
|
|
195
|
+
repository: {
|
|
196
|
+
id: 'gitlab-maven',
|
|
197
|
+
url: '${env.CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven'
|
|
198
|
+
},
|
|
199
|
+
lookupAuth: { header: 'Job-Token', variable: 'CI_JOB_TOKEN' },
|
|
200
|
+
args: ['-s', 'ci_settings.xml']
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
The same `<repository>` in the parent's `<distributionManagement>` serves as well, without
|
|
206
|
+
`repository`. The registry is asked where it deploys, so `lookup` is not needed.
|
|
207
|
+
|
|
208
|
+
## Maven Central
|
|
209
|
+
|
|
210
|
+
Maven Central takes a release by the Central Portal, and serves it at
|
|
211
|
+
`https://repo1.maven.org/maven2`. It needs each module signed, with a jar of its sources and one of
|
|
212
|
+
its javadoc, a `<name>`, `<description>`, `<url>`, `<licenses>`, `<developers>` and `<scm>`, and a
|
|
213
|
+
namespace (the groupId) the Portal has verified for you. Put the plugins in a profile `release`, so
|
|
214
|
+
the branch builds do not sign:
|
|
215
|
+
|
|
216
|
+
```xml
|
|
217
|
+
<profile>
|
|
218
|
+
<id>release</id>
|
|
219
|
+
<build>
|
|
220
|
+
<plugins>
|
|
221
|
+
<plugin>
|
|
222
|
+
<artifactId>maven-source-plugin</artifactId>
|
|
223
|
+
<executions><execution><goals><goal>jar-no-fork</goal></goals></execution></executions>
|
|
224
|
+
</plugin>
|
|
225
|
+
<plugin>
|
|
226
|
+
<artifactId>maven-javadoc-plugin</artifactId>
|
|
227
|
+
<executions><execution><goals><goal>jar</goal></goals></execution></executions>
|
|
228
|
+
</plugin>
|
|
229
|
+
<plugin>
|
|
230
|
+
<artifactId>maven-gpg-plugin</artifactId>
|
|
231
|
+
<executions><execution><goals><goal>sign</goal></goals></execution></executions>
|
|
232
|
+
</plugin>
|
|
233
|
+
<plugin>
|
|
234
|
+
<groupId>org.sonatype.central</groupId>
|
|
235
|
+
<artifactId>central-publishing-maven-plugin</artifactId>
|
|
236
|
+
<extensions>true</extensions>
|
|
237
|
+
<configuration>
|
|
238
|
+
<publishingServerId>central</publishingServerId>
|
|
239
|
+
<autoPublish>true</autoPublish>
|
|
240
|
+
<waitUntil>published</waitUntil>
|
|
241
|
+
</configuration>
|
|
242
|
+
</plugin>
|
|
243
|
+
</plugins>
|
|
244
|
+
</build>
|
|
245
|
+
</profile>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
The `central-publishing-maven-plugin` takes the place of Maven's deploy, so a module needs no
|
|
249
|
+
`distributionManagement`. The settings give it the user token of the Portal, of protected, masked
|
|
250
|
+
variables:
|
|
251
|
+
|
|
252
|
+
```xml
|
|
253
|
+
<!-- ci_settings.xml -->
|
|
254
|
+
<settings>
|
|
255
|
+
<servers>
|
|
256
|
+
<server>
|
|
257
|
+
<id>central</id>
|
|
258
|
+
<username>${env.CENTRAL_TOKEN_USERNAME}</username>
|
|
259
|
+
<password>${env.CENTRAL_TOKEN_PASSWORD}</password>
|
|
260
|
+
</server>
|
|
261
|
+
</servers>
|
|
262
|
+
</settings>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
The job imports the signing key before the release, as
|
|
266
|
+
`echo "$GPG_PRIVATE_KEY" | gpg --batch --import`, and `maven-gpg-plugin` reads its passphrase of
|
|
267
|
+
`MAVEN_GPG_PASSPHRASE`. The plugin asks Maven Central for each pom, which needs no credentials, and
|
|
268
|
+
names no repository:
|
|
269
|
+
|
|
270
|
+
```js norun
|
|
271
|
+
// release.config.mjs
|
|
272
|
+
export const maven = [
|
|
273
|
+
'@wtf/semantic-release-maven',
|
|
274
|
+
{ lookup: 'https://repo1.maven.org/maven2', args: ['-s', 'ci_settings.xml', '-P', 'release'] }
|
|
275
|
+
]
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
A deploy to the Portal is asynchronous: it is validated, then published, and only then served by
|
|
279
|
+
`repo1.maven.org`. `waitUntil` `published` makes each deploy wait for it, so the next module finds
|
|
280
|
+
the one before. A retry of a release before Maven Central serves a module deploys it again, and the
|
|
281
|
+
Portal refuses a version it has: wait for the module to show, then retry. The OSSRH Staging API of
|
|
282
|
+
the Portal, for builds on `maven-deploy-plugin`, is a `repository` of the plugin too, but it needs a
|
|
283
|
+
call of its own after the deploys to move them to the Portal, which the plugin does not make.
|
|
284
|
+
|
|
285
|
+
## A release that stopped
|
|
286
|
+
|
|
287
|
+
A release version on a repository stays: Maven Central takes none twice, and a registry that takes
|
|
288
|
+
one again gives two of the same version. The plugin asks the repository for the pom of each module
|
|
289
|
+
before the first deploy (a `HEAD` request: a 2xx has it, a 404 lacks it), and skips each it has, so
|
|
290
|
+
retrying the job of the tag deploys what is missing. A deploy that fails stops the run, with the code
|
|
291
|
+
`EMAVENDEPLOY` and the tail of Maven's output; the modules before it are deployed. A repository that
|
|
292
|
+
cannot be asked, or answers anything else, as a 401, stops the run before anything is deployed
|
|
293
|
+
(`EMAVENREPOSITORY`): give `lookupAuth`, or a `lookup` that serves the poms to anyone.
|
package/guides/publishing.md
CHANGED
|
@@ -74,11 +74,12 @@ Of a publish in the release run itself, as below, semantic-release pushes the re
|
|
|
74
74
|
publish that fails part way leaves both, and a run again
|
|
75
75
|
finds that version released and does nothing. To finish it, delete the tag, on the remote and in the
|
|
76
76
|
clone that runs again (a tag of the clone is a release done too), and run the release again at the release commit, the tip of the branch: semantic-release releases nothing
|
|
77
|
-
of a commit behind the tip. The run computes the same version
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
again
|
|
77
|
+
of a commit behind the tip. The run computes the same version, tags the release commit, skips each
|
|
78
|
+
package that the registry already has, publishes the rest, and makes the release of the host. A
|
|
79
|
+
changelog plugin the trains plugin wraps finds the section of the release in the changelog already
|
|
80
|
+
and skips its `prepare`, so `@semantic-release/git` finds nothing to commit. Listed unwrapped,
|
|
81
|
+
`@semantic-release/changelog` writes the section again: wrap it, or remove the second section
|
|
82
|
+
before the run.
|
|
82
83
|
|
|
83
84
|
A retry of a job that runs at the commit of its pipeline, as a job of to-be-continuous does, runs
|
|
84
85
|
behind the release commit. Check the tip out first, where it is the pipeline's commit with release
|