@wtf/release-docs 8.2.0 → 8.2.2
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 +56 -44
- 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 +1 -1
- 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 +1 -1
- 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/ecosystem/functions/packagesOfModules.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +1 -1
- package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +1 -1
- package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +7 -7
- package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +1 -1
- package/api/@wtf/release-go/errors/classes/GoError.md +5 -5
- package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +1 -1
- package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +1 -1
- 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/GoModule.md +6 -6
- 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 +1 -1
- package/api/@wtf/release-go/modules/functions/modulesOf.md +1 -1
- package/api/@wtf/release-go/modules/functions/readModules.md +1 -1
- package/api/@wtf/release-go/modules/functions/selectModules.md +1 -1
- package/api/@wtf/release-go/modules/interfaces/Selection.md +4 -4
- 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 +1 -1
- package/api/@wtf/release-go/stamp/interfaces/Stamped.md +3 -3
- package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +3 -3
- package/api/@wtf/release-go/tags/functions/askProxy.md +1 -1
- package/api/@wtf/release-go/tags/functions/maskCredentials.md +1 -1
- package/api/@wtf/release-go/tags/functions/releaseCommit.md +1 -1
- package/api/@wtf/release-go/tags/functions/remoteTags.md +1 -1
- package/api/@wtf/release-go/tags/functions/tagModules.md +1 -1
- 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/TagModulesOptions.md +8 -8
- package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +5 -5
- package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +1 -1
- package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +1 -1
- 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 +1 -1
- package/api/@wtf/release-maven/artifacts/functions/readPoms.md +1 -1
- package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +1 -1
- package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +4 -4
- 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/Restriction.md +3 -3
- package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +1 -1
- package/api/@wtf/release-maven/errors/classes/MavenError.md +5 -5
- package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +1 -1
- package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +1 -1
- package/api/@wtf/release-maven/interfaces/MavenModule.md +14 -14
- 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/functions/deployModules.md +1 -1
- package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +11 -11
- package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +4 -4
- package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +1 -1
- 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/pomPath.md +1 -1
- package/api/@wtf/release-maven/repository/functions/pomUrl.md +1 -1
- 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/functions/checkVersions.md +1 -1
- package/api/@wtf/release-maven/stamp/functions/stampModules.md +1 -1
- 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 +3 -3
- 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 +5 -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 +6 -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/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-go/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-go/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-go/functions/verifyRelease.md +1 -1
- package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +8 -8
- package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +3 -3
- package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +1 -1
- package/api/@wtf/semantic-release-go/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-go/variables/default.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/pomLookup.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/prepare.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/publish.md +1 -1
- package/api/@wtf/semantic-release-maven/functions/verifyConditions.md +1 -1
- package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +3 -3
- package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +12 -12
- package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +2 -2
- package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +1 -1
- package/api/@wtf/semantic-release-maven/variables/default.md +1 -1
- 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/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/skipRuleOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +1 -1
- package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +5 -5
- package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.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 +4 -3
- package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +1 -1
- 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 +5 -5
- package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -7
- 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 +1 -1
- 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/guides/changelogs.md +39 -28
- package/guides/ci-recipes.md +393 -271
- package/guides/configuring-trains.md +291 -203
- package/guides/dependency-rules.md +171 -113
- package/guides/ecosystems.md +222 -156
- package/guides/getting-started.md +135 -69
- package/guides/publishing-crates.md +208 -143
- package/guides/publishing-go-modules.md +170 -110
- package/guides/publishing-maven.md +197 -123
- package/guides/publishing.md +278 -191
- package/guides/system.md +50 -34
- package/guides/troubleshooting.md +358 -92
- package/guides/validating-a-config.md +68 -49
- package/package.json +3 -3
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Configure trains
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This page covers every option of a train, how the trains decide which commits count, and how to
|
|
4
|
+
write the config that runs them. If you are new to trains, read
|
|
5
|
+
[Getting started](getting-started.md) first.
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
## Declare a train
|
|
8
|
+
|
|
9
|
+
Each key of the `trains` object declares a train. The key is the train's name, and it is part of
|
|
10
|
+
the train's tags:
|
|
7
11
|
|
|
8
12
|
```ts
|
|
9
13
|
import type { Trains } from '@wtf/release-trains'
|
|
@@ -42,73 +46,87 @@ export const trains: Trains = {
|
|
|
42
46
|
}
|
|
43
47
|
```
|
|
44
48
|
|
|
45
|
-
| Field | Default | What it
|
|
46
|
-
| ----------- | --------------------------- |
|
|
47
|
-
| `paths` | (required) | Folders or globs. A file
|
|
48
|
-
| `shared` | none | Files or folders outside the train that count for it
|
|
49
|
-
| `tagFormat` | `<train>-v${version}` | The tags
|
|
50
|
-
| `changelog` | `<first path>/CHANGELOG.md` | The changelog
|
|
51
|
-
| `generated` | none | Folders that the build writes
|
|
52
|
-
| `dependsOn` | none | Trains this train releases after, besides
|
|
49
|
+
| Field | Default | What it does |
|
|
50
|
+
| ----------- | --------------------------- | --------------------------------------------------------------------------------- |
|
|
51
|
+
| `paths` | (required) | Folders or globs. A file belongs to the train when it is under one of them. |
|
|
52
|
+
| `shared` | none | Files or folders outside the train that also count for it. See below. |
|
|
53
|
+
| `tagFormat` | `<train>-v${version}` | The train's tags. It must contain `${version}` exactly once. |
|
|
54
|
+
| `changelog` | `<first path>/CHANGELOG.md` | The train's changelog, or `false` for none. |
|
|
55
|
+
| `generated` | none | Folders that the build writes. The release commits them. |
|
|
56
|
+
| `dependsOn` | none | Trains that this train releases after, besides the trains its packages depend on. |
|
|
53
57
|
|
|
54
|
-
The
|
|
58
|
+
The `Trains` type comes from the library `@wtf/release-trains`, which does not depend on
|
|
55
59
|
semantic-release.
|
|
56
60
|
|
|
57
|
-
###
|
|
61
|
+
### Order trains by their dependencies
|
|
62
|
+
|
|
63
|
+
A train depends on another train when one of its packages depends on a package in the other train.
|
|
64
|
+
Every kind of dependency counts except a dev dependency:
|
|
65
|
+
|
|
66
|
+
- In a `package.json`: `dependencies`, `peerDependencies` and `optionalDependencies`.
|
|
67
|
+
- In a `Cargo.toml`: normal dependencies and build dependencies.
|
|
68
|
+
|
|
69
|
+
A dev dependency does not order trains, because no user installs it.
|
|
70
|
+
|
|
71
|
+
Let the manifests order the trains whenever a train installs a package of the other train. Name a
|
|
72
|
+
train in `dependsOn` when your train must release after it but installs none of its packages. A
|
|
73
|
+
docs train is an example: its reference shows the release of the trains it documents, but it lists
|
|
74
|
+
their packages only in its `devDependencies`.
|
|
75
|
+
|
|
76
|
+
A manifest dependency and a `dependsOn` entry count the same, both for the `dependencies` rule and
|
|
77
|
+
for the order of the trains. Only a range in a manifest requires a version.
|
|
78
|
+
|
|
79
|
+
A train also releases when a dependency train releases a version outside a range that the train's
|
|
80
|
+
last release published. The root option `cascade` controls this, and it is `true` by default. See
|
|
81
|
+
[Trains that depend on other trains](dependency-rules.md).
|
|
58
82
|
|
|
59
|
-
|
|
60
|
-
by any kind but `dev`: a `dependency`, a `peerDependency` or an `optionalDependency` of its
|
|
61
|
-
`package.json`, or a normal or a build dependency of its `Cargo.toml`. A devDependency orders no
|
|
62
|
-
train, as no user installs it. Use that whenever the train installs the other train's package. Name
|
|
63
|
-
a train in `dependsOn` when the train must release after it, and installs none of its packages, as a
|
|
64
|
-
docs train whose reference shows the release of the trains it documents and lists their packages of
|
|
65
|
-
its devDependencies alone. Both count the same for the rule `dependencies` and for the order of the
|
|
66
|
-
trains. Only a range of a manifest requires a version. A train also releases when a dependency train releases a version outside a range that its
|
|
67
|
-
last release published, by the option `cascade` of the root, `true` by default. See
|
|
68
|
-
[Dependency rules](dependency-rules.md).
|
|
83
|
+
### Choose the files of a train
|
|
69
84
|
|
|
70
|
-
|
|
85
|
+
A folder holds every file under it. `packages/release-trains` holds
|
|
86
|
+
`packages/release-trains/src/index.ts`, but not `packages/release-npm/src/index.ts`.
|
|
71
87
|
|
|
72
|
-
A
|
|
73
|
-
`packages/release-trains
|
|
74
|
-
|
|
75
|
-
`packages/release-trains-*` holds `packages/release-npm/src/index.ts`. `.` holds every
|
|
76
|
-
file of the repo.
|
|
88
|
+
A glob holds each file that it matches, and every file under each folder that it matches.
|
|
89
|
+
`packages/release-trains-*` holds `packages/release-trains-extra/src/index.ts`. `.` holds every
|
|
90
|
+
file in the repo.
|
|
77
91
|
|
|
78
|
-
A file belongs to one train only.
|
|
79
|
-
|
|
80
|
-
`shared` of each of those trains.
|
|
92
|
+
A file belongs to one train only. When the paths of two trains hold the same file, the run fails
|
|
93
|
+
with `ETRAINOVERLAP`. If several trains build with one file, such as the lockfile, put that file in
|
|
94
|
+
the `shared` of each of those trains.
|
|
81
95
|
|
|
82
96
|
### Which commits count
|
|
83
97
|
|
|
84
|
-
The trains plugin reads the files of each commit with `git diff-tree`. A file under
|
|
85
|
-
|
|
98
|
+
The trains plugin reads the files of each commit with `git diff-tree`. A file under a train's
|
|
99
|
+
`paths` is one of that train's own files. A commit counts for a train by the files it changes:
|
|
86
100
|
|
|
87
|
-
-
|
|
88
|
-
for each train whose `shared` holds one of those files, as a docs train that
|
|
89
|
-
the trains it documents. The other files
|
|
90
|
-
`package.json`,
|
|
91
|
-
-
|
|
101
|
+
- If the commit changes the own files of one or more trains, it counts for each of those trains. It
|
|
102
|
+
also counts for each train whose `shared` holds one of those files, such as a docs train that
|
|
103
|
+
shares the paths of the trains it documents. The other files it changes, such as the lockfile or
|
|
104
|
+
the root `package.json`, add no further train.
|
|
105
|
+
- If the commit changes no train's own files, such as a commit of the lockfile alone, it counts for
|
|
92
106
|
each train whose `shared` holds one of its files.
|
|
93
107
|
|
|
94
108
|
A commit that changes the files of two trains counts for both, and appears in the notes of both. A
|
|
95
|
-
merge commit counts for the files
|
|
109
|
+
merge commit counts for the files it brings into its branch, which are its changes against its
|
|
96
110
|
first parent.
|
|
97
111
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
Some examples:
|
|
113
|
+
|
|
114
|
+
- A breaking change in train `trains` makes a major release of `trains` only.
|
|
115
|
+
- A `feat` in train `replace` that adds a dependency also changes the lockfile. It releases
|
|
116
|
+
`replace`, but not each train that lists the lockfile in its `shared`.
|
|
117
|
+
- A `fix` of the lockfile alone releases each train that lists the lockfile in its `shared`, and no
|
|
118
|
+
other train.
|
|
102
119
|
|
|
103
120
|
### Generated folders
|
|
104
121
|
|
|
105
|
-
|
|
106
|
-
release, and a page that the build no longer writes leaves git.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
122
|
+
Use `generated` when a build writes a folder that the release must commit, such as an API
|
|
123
|
+
reference. The release commits the folder, and a page that the build no longer writes leaves git.
|
|
124
|
+
|
|
125
|
+
This matters when the release job gets its build from another job. Unpacking that build over the
|
|
126
|
+
checkout adds the new pages, but it also leaves the pages of the last release in place.
|
|
127
|
+
|
|
128
|
+
So the build lists what it wrote, in the folder's `.generated` file. Call `listGenerated` at the end
|
|
129
|
+
of the build, after the build has written the folder in full:
|
|
112
130
|
|
|
113
131
|
```ts
|
|
114
132
|
import { nodeSystem } from '@wtf/release-system/node'
|
|
@@ -118,8 +136,15 @@ const system = nodeSystem()
|
|
|
118
136
|
await listGenerated(system.cwd, 'packages/docs/api', { system })
|
|
119
137
|
```
|
|
120
138
|
|
|
121
|
-
|
|
122
|
-
|
|
139
|
+
In `prepare`, an entry of `@wtf/semantic-release-trains` with `generated: true` stages the folder
|
|
140
|
+
from that list:
|
|
141
|
+
|
|
142
|
+
1. It unstages every file in the folder.
|
|
143
|
+
2. It stages each file that the list names, even when git ignores the folder.
|
|
144
|
+
3. It removes every other file.
|
|
145
|
+
|
|
146
|
+
Without a list, the entry stages the folder as it is, deletions included. The entry stages the
|
|
147
|
+
`generated` folders of the run's train:
|
|
123
148
|
|
|
124
149
|
```js train=docs
|
|
125
150
|
// release.config.mjs
|
|
@@ -137,36 +162,52 @@ export default {
|
|
|
137
162
|
}
|
|
138
163
|
```
|
|
139
164
|
|
|
140
|
-
List
|
|
141
|
-
commits what
|
|
165
|
+
List the entry after the build that writes the folders, and before `@semantic-release/git`, which
|
|
166
|
+
then commits what the entry staged. Each entry has one role: `generated` together with `wrap` fails
|
|
167
|
+
with `EOPTIONS`.
|
|
142
168
|
|
|
143
169
|
### Replacements
|
|
144
170
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
| `
|
|
155
|
-
|
|
156
|
-
`
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
171
|
+
Use `@wtf/semantic-release-replace` to keep a version that is written in a file up to date, such as
|
|
172
|
+
the version in a shields.io badge of a README. Without it, that version is wrong from the next
|
|
173
|
+
release on, and nothing fails.
|
|
174
|
+
|
|
175
|
+
The plugin replaces text in files in `prepare`. It does not depend on the train. It replaces each
|
|
176
|
+
match of each of its `replacements` in each file of its `files`. All of its options are JSON:
|
|
177
|
+
|
|
178
|
+
| Option | What it does |
|
|
179
|
+
| -------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
180
|
+
| `files` | Required. Paths, globs and negations, applied in order, from the root, to the files that git tracks. |
|
|
181
|
+
| `replacements` | Required. Each one is `{ from, flags, to, escape }`, or a template: `{ template, … }`, or the template's name alone. |
|
|
182
|
+
| `templates` | Replacements by name: one set, or several sets merged in order. Also allowed at the root of the config. |
|
|
183
|
+
|
|
184
|
+
Each entry of `files` selects files:
|
|
185
|
+
|
|
186
|
+
- A path selects the file, or each file under the folder.
|
|
187
|
+
- A glob selects each file it matches. `*` and `?` match within a name, `**` matches across
|
|
188
|
+
folders, `[…]` matches one character of a class, `[^…]` one character outside it, and `{a,b}`
|
|
189
|
+
each item of a list.
|
|
190
|
+
- An entry that starts with `!` leaves out what it matches from what the entries before it
|
|
191
|
+
selected.
|
|
192
|
+
|
|
193
|
+
A replacement replaces each match of `from` by `to`:
|
|
194
|
+
|
|
195
|
+
- `from` is the source of a RegExp. `flags` holds its flags; the plugin always adds `g`, so leave
|
|
196
|
+
`g` out.
|
|
197
|
+
- In `to`, `$1` stands for a group of the match. `${nextRelease.version}` stands for a value of the
|
|
198
|
+
release context, by its dotted path, in the same syntax as the message of `@semantic-release/git`.
|
|
199
|
+
- `escape` sets how each context value is written: `none` (the default) as it is, `shields` with
|
|
200
|
+
each `-` and `_` doubled as a shields.io badge needs them, or `url`.
|
|
201
|
+
- `to` can also name the function of a module instead of a text: `{ module, export }`.
|
|
202
|
+
|
|
203
|
+
A template is a replacement with a name. You define it once in `templates`, either at the root of
|
|
204
|
+
the config, which semantic-release gives every plugin, or in an entry. An entry's own templates
|
|
205
|
+
override the root's templates of the same name.
|
|
206
|
+
|
|
207
|
+
A replacement names a template alone, as `"badge"`, or with options that override the template's
|
|
208
|
+
own, as `{ "template": "badge", "escape": "none" }`. A name that no template has fails the run with
|
|
209
|
+
`ETEMPLATE` before it releases, and the error lists the templates that exist. This config defines
|
|
210
|
+
the version badge:
|
|
170
211
|
|
|
171
212
|
```json
|
|
172
213
|
{
|
|
@@ -193,12 +234,17 @@ with `ETEMPLATE`, naming those there are. The badge of the version, as a config
|
|
|
193
234
|
}
|
|
194
235
|
```
|
|
195
236
|
|
|
196
|
-
A package
|
|
197
|
-
`templates` is
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
237
|
+
A package can share templates, such as the version badge, so that each repo does not write them
|
|
238
|
+
again. `templates` is one set, or an array of sets merged in order. Each set overrides the sets
|
|
239
|
+
before it by name. A set can be:
|
|
240
|
+
|
|
241
|
+
- A map of templates by name. Each template is a replacement, or the export of a module that is
|
|
242
|
+
one.
|
|
243
|
+
- The export of a module that is a set. Each of its templates keeps its own name.
|
|
244
|
+
|
|
245
|
+
You name a module the same way as a function: `{ module, export }`, where `export` is `default` by
|
|
246
|
+
default. This example uses `@wtf/replace-shields`, a package of templates that this repo does not
|
|
247
|
+
have:
|
|
202
248
|
|
|
203
249
|
```json
|
|
204
250
|
{
|
|
@@ -216,28 +262,37 @@ repo does not have, `@wtf/replace-shields`:
|
|
|
216
262
|
}
|
|
217
263
|
```
|
|
218
264
|
|
|
219
|
-
The plugin imports each in `verifyConditions
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
265
|
+
The plugin imports each module in `verifyConditions`. It fails with:
|
|
266
|
+
|
|
267
|
+
- `EREPLACEMODULE` when it cannot load a module, or the module has no such export.
|
|
268
|
+
- `ETEMPLATE` when an export is not a replacement, or not a set.
|
|
269
|
+
|
|
270
|
+
It loads a package that the repo installs, as a devDependency. Otherwise it loads one that is
|
|
271
|
+
installed beside the plugin, as in a global install of semantic-release. The semantic-release
|
|
272
|
+
component of to-be-continuous makes such an install: list the package in its
|
|
273
|
+
`semrel-required-plugins.txt` (see [Run releases in CI](ci-recipes.md)).
|
|
274
|
+
|
|
275
|
+
List the plugin before `@semantic-release/git`, and put the files it replaces in the git plugin's
|
|
276
|
+
`assets`. `trainAssets(trains, train, { replaced: 'README.md' })` lists the README.md of each
|
|
277
|
+
folder of the train. In [a config of literals](#a-config-of-literals) of these trains,
|
|
278
|
+
`` `packages/*-${train}/README.md` `` does the same. The release commit then commits each README,
|
|
279
|
+
and the packages are packed with their replaced READMEs. See
|
|
230
280
|
[`@wtf/semantic-release-replace`](../../semantic-release-replace/README.md).
|
|
231
281
|
|
|
232
|
-
##
|
|
282
|
+
## Write the config
|
|
233
283
|
|
|
234
|
-
`release.config.mjs` is yours: the plugins, their options and their order. The
|
|
235
|
-
read
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
284
|
+
`release.config.mjs` is yours: you choose the plugins, their options and their order. The trains
|
|
285
|
+
plugins read these values:
|
|
286
|
+
|
|
287
|
+
- `trains` and `ecosystems` from the root of the config, which semantic-release gives every plugin.
|
|
288
|
+
- The run's train from `RELEASE_TRAIN` in the run's environment, the same way any semantic-release
|
|
289
|
+
plugin reads a variable of its own.
|
|
290
|
+
|
|
291
|
+
`ecosystems` is required. It names the module of each ecosystem in the repo, and the trains read
|
|
292
|
+
the packages through it. For example, `@wtf/release-npm` reads each `package.json`. Each module is
|
|
293
|
+
loaded from the repo, the same way a `wrap` entry loads the plugin it wraps: by its name, its path
|
|
294
|
+
from the repo, or its `file:` URL. A module that cannot be loaded, or whose default export is not
|
|
295
|
+
an ecosystem, fails with `EECOSYSTEM`:
|
|
241
296
|
|
|
242
297
|
```js train=trains
|
|
243
298
|
// release.config.mjs
|
|
@@ -298,58 +353,70 @@ export default {
|
|
|
298
353
|
}
|
|
299
354
|
```
|
|
300
355
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
| Value | What it
|
|
304
|
-
| ------------------------------------- |
|
|
305
|
-
| `trainTagFormat(trains, train)` | The tag format
|
|
306
|
-
| `trainChangelog(trains, train)` | The changelog
|
|
307
|
-
| `trainAssets(trains, train, options)` | The `assets` of `@semantic-release/git`: the changelogs, the files
|
|
308
|
-
| `trainOfTag(trains, tag)` | The train whose tag format
|
|
309
|
-
| `skipPlugins(plugins, pattern, opts)` | The entries of `plugins`
|
|
310
|
-
| `BRANCHES` | `main`, and `rc`, `pre`, `beta` and `alpha` as prereleases.
|
|
311
|
-
| `BREAKING` | The parser options that read `type!:` as a breaking change
|
|
312
|
-
|
|
313
|
-
These values are for a config that imports them,
|
|
314
|
-
a global install of semantic-release reads, as the semantic-release component of
|
|
315
|
-
reads
|
|
316
|
-
|
|
317
|
-
The order of `plugins` is the order
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
356
|
+
`@wtf/semantic-release-trains/config` exports these values:
|
|
357
|
+
|
|
358
|
+
| Value | What it gives |
|
|
359
|
+
| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
360
|
+
| `trainTagFormat(trains, train)` | The train's tag format, for `tagFormat`. The trains plugin fails with `ETAGFORMAT` when `tagFormat` is any other. |
|
|
361
|
+
| `trainChangelog(trains, train)` | The train's changelog, for `changelogFile` of `@semantic-release/changelog`, or `undefined` for a train with no changelog. |
|
|
362
|
+
| `trainAssets(trains, train, options)` | The `assets` of `@semantic-release/git`: the changelogs, the replaced files (`replaced`), and the generated folders. |
|
|
363
|
+
| `trainOfTag(trains, tag)` | The train whose tag format matches a tag, such as `RELEASE_TAG` in a run on a tag. See [Run releases in CI](ci-recipes.md). |
|
|
364
|
+
| `skipPlugins(plugins, pattern, opts)` | The entries of `plugins` without those whose step ids match a pattern, so that a job can leave out a step. See [Run releases in CI](ci-recipes.md). |
|
|
365
|
+
| `BRANCHES` | `main`, and `rc`, `pre`, `beta` and `alpha` as prereleases. |
|
|
366
|
+
| `BREAKING` | The parser options that read `type!:` as a breaking change. Spread them at the root. |
|
|
367
|
+
|
|
368
|
+
These values are for a config that imports them, in a repo that installs the plugins. A config
|
|
369
|
+
that a global install of semantic-release reads, such as the one the semantic-release component of
|
|
370
|
+
to-be-continuous reads, imports nothing from them. See [A config of literals](#a-config-of-literals).
|
|
371
|
+
|
|
372
|
+
The order of `plugins` is the order within each step:
|
|
373
|
+
|
|
374
|
+
- In `prepare`: the changelogs, then the replaced files, then the packed packages, then the staged
|
|
375
|
+
generated folders, then the release commit.
|
|
376
|
+
- In `publish`, after the tag: the packages, then the release on the host, last.
|
|
377
|
+
|
|
378
|
+
The trains plugin is one package that you list once for each role. Put each entry where its role
|
|
379
|
+
runs:
|
|
380
|
+
|
|
381
|
+
- A `wrap` entry goes where the plugin it wraps would run.
|
|
382
|
+
- A `generated` entry goes after the build that writes the folders.
|
|
383
|
+
- Every entry checks the trains, once a run.
|
|
384
|
+
|
|
385
|
+
The plugin needs all the trains, not only the run's train, so that it can find overlapping paths
|
|
386
|
+
and dependencies. With one train, a config needs no `wrap` entry: the stock analyzer and notes
|
|
387
|
+
generator read every commit.
|
|
388
|
+
|
|
389
|
+
### Choose the train of a run
|
|
390
|
+
|
|
391
|
+
Each trains plugin reads the run's train from its option `train`. Without that option, it reads
|
|
392
|
+
`RELEASE_TRAIN` from the run's environment, never from its own process. The option wins over the
|
|
393
|
+
variable. With neither, the run fails with `ETRAINNOTSELECTED`.
|
|
394
|
+
|
|
395
|
+
The environment is the simpler way, as above: the config declares the trains, and each job names
|
|
396
|
+
its train. A config that sets `train: process.env.RELEASE_TRAIN` at its root does the same.
|
|
397
|
+
|
|
398
|
+
The tag format is semantic-release's own: `tagFormat` in the config, or `--tag-format` on the
|
|
399
|
+
command line. It must be the train's tag format, or the run would read the tags of another train.
|
|
400
|
+
The trains plugin fails with `ETAGFORMAT` when it is any other.
|
|
401
|
+
|
|
402
|
+
### Give each plugin only the train's commits
|
|
403
|
+
|
|
404
|
+
semantic-release gives each plugin its own copy of the run's context. That context holds every
|
|
405
|
+
commit in the repo since the train's last tag, so no plugin can filter the commits for another
|
|
406
|
+
plugin. semantic-release then:
|
|
407
|
+
|
|
408
|
+
- releases by the highest release type that any analyzer returns,
|
|
409
|
+
- joins the notes of every notes generator,
|
|
410
|
+
- lets the host plugin comment on the merge request of each commit when the release succeeds.
|
|
411
|
+
|
|
412
|
+
So wrap each plugin that reads the commits in a `wrap` entry of `@wtf/semantic-release-trains`. The
|
|
413
|
+
entry gives each step of the wrapped plugin only the train's commits. Wrap the commit analyzer, the
|
|
414
|
+
release notes generator, the host plugin, and any other plugin that reads commits. Do not list a
|
|
415
|
+
commit analyzer or a release notes generator unwrapped. It would bump the train for the commits of
|
|
416
|
+
every other train, or add their notes.
|
|
417
|
+
|
|
418
|
+
`wrap` names a plugin the same way an entry of `plugins` does. Use the array form, the plugin's
|
|
419
|
+
name and its options, to give that plugin options such as its `preset` or `releaseRules`:
|
|
353
420
|
|
|
354
421
|
```js fragment
|
|
355
422
|
;[
|
|
@@ -363,47 +430,65 @@ its options, is where the options of that plugin go, as its `preset` or `release
|
|
|
363
430
|
]
|
|
364
431
|
```
|
|
365
432
|
|
|
366
|
-
|
|
433
|
+
Use the name alone for a plugin with no options of its own:
|
|
367
434
|
|
|
368
435
|
```js fragment
|
|
369
436
|
;['@wtf/semantic-release-trains', { wrap: '@semantic-release/release-notes-generator' }]
|
|
370
437
|
```
|
|
371
438
|
|
|
372
|
-
The wrapped plugin
|
|
373
|
-
semantic-release gives any plugin its options
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
`
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
439
|
+
The wrapped plugin gets the root options of the config, with its own options over them, the same
|
|
440
|
+
way semantic-release gives any plugin its options. Any preset works, and so does any plugin.
|
|
441
|
+
|
|
442
|
+
The entry loads the wrapped plugin the same way semantic-release loads a plugin. It looks in these
|
|
443
|
+
places, in order:
|
|
444
|
+
|
|
445
|
+
1. For a plugin that semantic-release itself depends on, such as the commit analyzer and the
|
|
446
|
+
release notes generator: the node_modules of the semantic-release beside it, also in a global
|
|
447
|
+
install.
|
|
448
|
+
2. The repo, which installs any other plugin.
|
|
449
|
+
3. Beside the trains plugin, as in a global install of semantic-release and its plugins.
|
|
450
|
+
|
|
451
|
+
In a global install, such as the one the semantic-release component of to-be-continuous makes from
|
|
452
|
+
each name in `plugins`, a wrapped plugin that semantic-release does not depend on needs an install
|
|
453
|
+
of its own. `@semantic-release/gitlab` is an example: list it in the component's
|
|
454
|
+
`semrel-required-plugins.txt`.
|
|
455
|
+
|
|
456
|
+
A shared config (`extends`) that wraps a plugin the repo does not install must name that plugin by
|
|
457
|
+
its path. Or it can use the URL that `import.meta.resolve('@semantic-release/gitlab')` gives in the
|
|
458
|
+
shared config. semantic-release finds the plugins of a shared config in that config's folder, but
|
|
459
|
+
it does not give that folder to any plugin.
|
|
460
|
+
|
|
461
|
+
The entry fails with:
|
|
462
|
+
|
|
463
|
+
- `EOPTIONS` when `wrap` has any other shape, or wraps the trains plugin itself.
|
|
464
|
+
- `EPLUGINLOAD` when it cannot load the plugin.
|
|
465
|
+
|
|
466
|
+
The analyzer that an entry wraps also checks the trains that the train depends on, by the root
|
|
467
|
+
option `dependencies`. It also releases the train when they released outside a published range, by
|
|
468
|
+
the root option `cascade`, and the wrapped notes generator lists those releases. See
|
|
469
|
+
[Trains that depend on other trains](dependency-rules.md).
|
|
470
|
+
|
|
471
|
+
semantic-release calls every step of the plugin of every entry. Sometimes an entry has no role in a
|
|
472
|
+
step, or the plugin it wraps has no such step. Then the entry returns what semantic-release takes
|
|
473
|
+
as nothing: no release type, and empty notes (`''`, which semantic-release leaves out of the notes
|
|
474
|
+
it joins). For the release steps, `publish` and `addChannel`, it returns `false`. semantic-release
|
|
475
|
+
lists that as a release with no name from the trains plugin. The host plugins announce the releases
|
|
476
|
+
of a run by name, so they leave it out. The named releases are those of the plugins that published.
|
|
397
477
|
|
|
398
478
|
### A config of literals
|
|
399
479
|
|
|
400
|
-
Each entry of the plugin
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
480
|
+
Each entry of the trains plugin is JSON, so a config can write it as it is. A config of literals
|
|
481
|
+
imports nothing and awaits nothing. A global install of semantic-release can read it before
|
|
482
|
+
anything in the repo is installed.
|
|
483
|
+
|
|
484
|
+
The semantic-release component of to-be-continuous works this way:
|
|
485
|
+
|
|
486
|
+
1. It makes `.releaserc.json` from `release.config.mjs` with `require()`, which does not allow a
|
|
487
|
+
top-level `await`. It does this before it installs any plugin.
|
|
488
|
+
2. Then it installs each name in `plugins` with `npm install --global`.
|
|
489
|
+
|
|
490
|
+
So each plugin must be a package of its own, named in full, and each option of each plugin must be
|
|
491
|
+
JSON. Write out the values of `@wtf/semantic-release-trains/config`: the train's tag format as
|
|
407
492
|
`${train}-v\${version}`, and `BREAKING` as `parserOpts`.
|
|
408
493
|
|
|
409
494
|
```js train=replace
|
|
@@ -448,8 +533,8 @@ export default {
|
|
|
448
533
|
}
|
|
449
534
|
```
|
|
450
535
|
|
|
451
|
-
A JSON config, as `.releaserc.json`, writes the same
|
|
452
|
-
environment, and
|
|
536
|
+
A JSON config, such as `.releaserc.json`, writes the same without a train. Each job gives the train
|
|
537
|
+
in its environment, and passes the train's tag format on the command line:
|
|
453
538
|
|
|
454
539
|
```json
|
|
455
540
|
{
|
|
@@ -482,10 +567,10 @@ RELEASE_TRAIN=trains npx semantic-release --tag-format 'trains-v${version}'
|
|
|
482
567
|
|
|
483
568
|
### A preset, and `type!:`
|
|
484
569
|
|
|
485
|
-
|
|
486
|
-
`feat!: drop Node 20`. Spread `BREAKING`
|
|
487
|
-
config
|
|
488
|
-
|
|
570
|
+
semantic-release's default preset, `angular`, does not read a `!` after the type, as in
|
|
571
|
+
`feat!: drop Node 20`. Spread `BREAKING` from `@wtf/semantic-release-trains/config` at the root of
|
|
572
|
+
the config. It sets the parser's `breakingHeaderPattern` at the root, so that every plugin reads
|
|
573
|
+
`type!:` as a breaking change.
|
|
489
574
|
|
|
490
575
|
> **Caveat.** Do not trust `type!:` alone. A tool that reads the commits with other parser options
|
|
491
576
|
> (another analyzer, a CI job that keeps only some options, or a preset that ignores the pattern)
|
|
@@ -498,13 +583,16 @@ root of the config, so that every plugin reads `type!:` as a breaking change.
|
|
|
498
583
|
> BREAKING CHANGE: a train with no commits of its own releases too; set cascade: false for none.
|
|
499
584
|
> ```
|
|
500
585
|
|
|
501
|
-
##
|
|
586
|
+
## Use the libraries directly
|
|
587
|
+
|
|
588
|
+
`@wtf/release-trains` holds what the trains plugin runs, and it does not depend on semantic-release.
|
|
589
|
+
Each function takes the `system` it runs on, so a CLI can pass its own. The parts that know nothing
|
|
590
|
+
about trains (the system, paths and globs, git, validators and `ReleaseError`) live in
|
|
591
|
+
`@wtf/release-system`, which `@wtf/release-trains` builds on.
|
|
502
592
|
|
|
503
|
-
`@wtf/release-trains`
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
builds on. It reads no manifest: the packages of the repo are those its ecosystems give, as the
|
|
507
|
-
default export of `@wtf/release-npm` gives those of each `package.json`:
|
|
593
|
+
`@wtf/release-trains` reads no manifest itself. The repo's packages are the ones its ecosystems
|
|
594
|
+
give. For example, the default export of `@wtf/release-npm` gives the packages of each
|
|
595
|
+
`package.json`:
|
|
508
596
|
|
|
509
597
|
```ts
|
|
510
598
|
import npm from '@wtf/release-npm'
|