@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.
Files changed (606) hide show
  1. package/README.md +12 -4
  2. package/api/.generated +155 -29
  3. package/api/@wtf/release-cargo/auth/functions/mask.md +1 -1
  4. package/api/@wtf/release-cargo/auth/functions/tokenVariableOf.md +1 -1
  5. package/api/@wtf/release-cargo/auth/functions/trustedPublishing.md +1 -1
  6. package/api/@wtf/release-cargo/auth/interfaces/HttpResponse.md +5 -5
  7. package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishing.md +5 -5
  8. package/api/@wtf/release-cargo/auth/interfaces/TrustedPublishingOptions.md +6 -6
  9. package/api/@wtf/release-cargo/auth/type-aliases/HttpFetch.md +1 -1
  10. package/api/@wtf/release-cargo/auth/variables/CRATES_IO_API.md +1 -1
  11. package/api/@wtf/release-cargo/auth/variables/ID_TOKEN_VARIABLE.md +1 -1
  12. package/api/@wtf/release-cargo/auth/variables/USER_AGENT.md +1 -1
  13. package/api/@wtf/release-cargo/crates/functions/publishOrder.md +1 -1
  14. package/api/@wtf/release-cargo/crates/functions/publishable.md +1 -1
  15. package/api/@wtf/release-cargo/crates/functions/readWorkspace.md +1 -1
  16. package/api/@wtf/release-cargo/crates/functions/selectCrates.md +5 -4
  17. package/api/@wtf/release-cargo/crates/interfaces/Selection.md +5 -5
  18. package/api/@wtf/release-cargo/ecosystem/functions/packagesAt.md +1 -1
  19. package/api/@wtf/release-cargo/ecosystem/functions/packagesOfTree.md +1 -1
  20. package/api/@wtf/release-cargo/ecosystem/functions/packagesOfWorkspace.md +1 -1
  21. package/api/@wtf/release-cargo/ecosystem/functions/resolveRequirement.md +1 -1
  22. package/api/@wtf/release-cargo/ecosystem/functions/satisfiesRequirement.md +1 -1
  23. package/api/@wtf/release-cargo/ecosystem/functions/semverRange.md +1 -1
  24. package/api/@wtf/release-cargo/ecosystem/interfaces/CargoPackage.md +7 -7
  25. package/api/@wtf/release-cargo/ecosystem/variables/cargoEcosystem.md +1 -1
  26. package/api/@wtf/release-cargo/errors/classes/CargoError.md +5 -5
  27. package/api/@wtf/release-cargo/errors/type-aliases/CargoErrorCode.md +1 -1
  28. package/api/@wtf/release-cargo/errors/variables/CARGO_ERRORS.md +2 -2
  29. package/api/@wtf/release-cargo/interfaces/Crate.md +6 -6
  30. package/api/@wtf/release-cargo/interfaces/CrateDependency.md +6 -6
  31. package/api/@wtf/release-cargo/interfaces/Workspace.md +3 -3
  32. package/api/@wtf/release-cargo/publish/functions/publishCrates.md +1 -1
  33. package/api/@wtf/release-cargo/publish/interfaces/PublishCratesOptions.md +11 -11
  34. package/api/@wtf/release-cargo/publish/interfaces/PublishedCrate.md +5 -5
  35. package/api/@wtf/release-cargo/publish/type-aliases/CrateStatus.md +1 -1
  36. package/api/@wtf/release-cargo/publish/variables/RECHECK_WAITS.md +1 -1
  37. package/api/@wtf/release-cargo/registry/functions/crateUrl.md +1 -1
  38. package/api/@wtf/release-cargo/registry/functions/indexHasVersion.md +1 -1
  39. package/api/@wtf/release-cargo/registry/functions/indexPath.md +1 -1
  40. package/api/@wtf/release-cargo/registry/variables/CRATES_IO_INDEX.md +1 -1
  41. package/api/@wtf/release-cargo/stamp/functions/checkVersions.md +1 -1
  42. package/api/@wtf/release-cargo/stamp/functions/inheritsVersion.md +1 -1
  43. package/api/@wtf/release-cargo/stamp/functions/stampManifest.md +1 -1
  44. package/api/@wtf/release-cargo/stamp/functions/stampWorkspace.md +1 -1
  45. package/api/@wtf/release-cargo/stamp/interfaces/StampOptions.md +4 -4
  46. package/api/@wtf/release-cargo/stamp/interfaces/Stamped.md +3 -3
  47. package/api/@wtf/release-cargo/stamp/interfaces/StampedWorkspace.md +3 -3
  48. package/api/@wtf/release-cargo/type-aliases/DependencyKind.md +1 -1
  49. package/api/@wtf/release-go/README.md +34 -0
  50. package/api/@wtf/release-go/ecosystem/README.md +40 -0
  51. package/api/@wtf/release-go/ecosystem/functions/packagesOfModules.md +30 -0
  52. package/api/@wtf/release-go/ecosystem/functions/packagesOfRepo.md +32 -0
  53. package/api/@wtf/release-go/ecosystem/functions/resolveVersion.md +35 -0
  54. package/api/@wtf/release-go/ecosystem/functions/satisfiesVersion.md +35 -0
  55. package/api/@wtf/release-go/ecosystem/interfaces/GoPackage.md +97 -0
  56. package/api/@wtf/release-go/ecosystem/variables/goEcosystem.md +15 -0
  57. package/api/@wtf/release-go/errors/README.md +25 -0
  58. package/api/@wtf/release-go/errors/classes/GoError.md +268 -0
  59. package/api/@wtf/release-go/errors/type-aliases/GoErrorCode.md +13 -0
  60. package/api/@wtf/release-go/errors/variables/GO_ERRORS.md +47 -0
  61. package/api/@wtf/release-go/gomod/README.md +39 -0
  62. package/api/@wtf/release-go/gomod/functions/entriesOf.md +29 -0
  63. package/api/@wtf/release-go/gomod/functions/linesOf.md +27 -0
  64. package/api/@wtf/release-go/gomod/functions/readGoMod.md +28 -0
  65. package/api/@wtf/release-go/gomod/functions/tokensOf.md +29 -0
  66. package/api/@wtf/release-go/gomod/interfaces/Entry.md +41 -0
  67. package/api/@wtf/release-go/gomod/interfaces/GoMod.md +41 -0
  68. package/api/@wtf/release-go/gomod/interfaces/GoReplace.md +61 -0
  69. package/api/@wtf/release-go/gomod/interfaces/GoRequire.md +41 -0
  70. package/api/@wtf/release-go/gomod/interfaces/Token.md +51 -0
  71. package/api/@wtf/release-go/interfaces/GoModule.md +61 -0
  72. package/api/@wtf/release-go/modules/README.md +39 -0
  73. package/api/@wtf/release-go/modules/functions/isFetchable.md +28 -0
  74. package/api/@wtf/release-go/modules/functions/isGoMod.md +28 -0
  75. package/api/@wtf/release-go/modules/functions/majorErrors.md +37 -0
  76. package/api/@wtf/release-go/modules/functions/majorOfPath.md +28 -0
  77. package/api/@wtf/release-go/modules/functions/modulesAt.md +39 -0
  78. package/api/@wtf/release-go/modules/functions/modulesOf.md +29 -0
  79. package/api/@wtf/release-go/modules/functions/readModules.md +33 -0
  80. package/api/@wtf/release-go/modules/functions/selectModules.md +44 -0
  81. package/api/@wtf/release-go/modules/interfaces/Selection.md +43 -0
  82. package/api/@wtf/release-go/stamp/README.md +44 -0
  83. package/api/@wtf/release-go/stamp/functions/checkVersions.md +38 -0
  84. package/api/@wtf/release-go/stamp/functions/stampGoMod.md +35 -0
  85. package/api/@wtf/release-go/stamp/functions/stampModules.md +42 -0
  86. package/api/@wtf/release-go/stamp/interfaces/Stamped.md +31 -0
  87. package/api/@wtf/release-go/stamp/interfaces/StampedModules.md +31 -0
  88. package/api/@wtf/release-go/tags/README.md +48 -0
  89. package/api/@wtf/release-go/tags/functions/askProxy.md +44 -0
  90. package/api/@wtf/release-go/tags/functions/maskCredentials.md +28 -0
  91. package/api/@wtf/release-go/tags/functions/releaseCommit.md +48 -0
  92. package/api/@wtf/release-go/tags/functions/remoteTags.md +43 -0
  93. package/api/@wtf/release-go/tags/functions/tagModules.md +36 -0
  94. package/api/@wtf/release-go/tags/functions/tagOfModule.md +34 -0
  95. package/api/@wtf/release-go/tags/functions/tagPrefix.md +29 -0
  96. package/api/@wtf/release-go/tags/interfaces/TagModulesOptions.md +93 -0
  97. package/api/@wtf/release-go/tags/interfaces/TaggedModule.md +51 -0
  98. package/api/@wtf/release-go/tags/type-aliases/ModuleStatus.md +13 -0
  99. package/api/@wtf/release-go/tags/variables/RELEASE_AUTHOR.md +23 -0
  100. package/api/@wtf/release-maven/README.md +33 -0
  101. package/api/@wtf/release-maven/artifacts/README.md +41 -0
  102. package/api/@wtf/release-maven/artifacts/functions/groupIdOf.md +33 -0
  103. package/api/@wtf/release-maven/artifacts/functions/installsOf.md +44 -0
  104. package/api/@wtf/release-maven/artifacts/functions/isPomFile.md +28 -0
  105. package/api/@wtf/release-maven/artifacts/functions/isRange.md +27 -0
  106. package/api/@wtf/release-maven/artifacts/functions/modulesOf.md +44 -0
  107. package/api/@wtf/release-maven/artifacts/functions/nameOf.md +33 -0
  108. package/api/@wtf/release-maven/artifacts/functions/publishOrder.md +34 -0
  109. package/api/@wtf/release-maven/artifacts/functions/readModules.md +31 -0
  110. package/api/@wtf/release-maven/artifacts/functions/readPoms.md +32 -0
  111. package/api/@wtf/release-maven/artifacts/functions/selectArtifacts.md +44 -0
  112. package/api/@wtf/release-maven/artifacts/interfaces/Selection.md +42 -0
  113. package/api/@wtf/release-maven/ecosystem/README.md +41 -0
  114. package/api/@wtf/release-maven/ecosystem/functions/compareVersions.md +38 -0
  115. package/api/@wtf/release-maven/ecosystem/functions/parseRange.md +28 -0
  116. package/api/@wtf/release-maven/ecosystem/functions/resolveVersion.md +36 -0
  117. package/api/@wtf/release-maven/ecosystem/functions/satisfiesVersion.md +36 -0
  118. package/api/@wtf/release-maven/ecosystem/interfaces/Bound.md +31 -0
  119. package/api/@wtf/release-maven/ecosystem/interfaces/Restriction.md +31 -0
  120. package/api/@wtf/release-maven/ecosystem/variables/mavenEcosystem.md +15 -0
  121. package/api/@wtf/release-maven/errors/README.md +25 -0
  122. package/api/@wtf/release-maven/errors/classes/MavenError.md +268 -0
  123. package/api/@wtf/release-maven/errors/type-aliases/MavenErrorCode.md +13 -0
  124. package/api/@wtf/release-maven/errors/variables/MAVEN_ERRORS.md +51 -0
  125. package/api/@wtf/release-maven/interfaces/MavenModule.md +169 -0
  126. package/api/@wtf/release-maven/pom/README.md +48 -0
  127. package/api/@wtf/release-maven/pom/functions/childOf.md +33 -0
  128. package/api/@wtf/release-maven/pom/functions/childrenOf.md +33 -0
  129. package/api/@wtf/release-maven/pom/functions/dependencyOf.md +27 -0
  130. package/api/@wtf/release-maven/pom/functions/escapeXml.md +27 -0
  131. package/api/@wtf/release-maven/pom/functions/parseXml.md +39 -0
  132. package/api/@wtf/release-maven/pom/functions/readPom.md +39 -0
  133. package/api/@wtf/release-maven/pom/functions/textAt.md +34 -0
  134. package/api/@wtf/release-maven/pom/interfaces/Pom.md +151 -0
  135. package/api/@wtf/release-maven/pom/interfaces/PomDependency.md +51 -0
  136. package/api/@wtf/release-maven/pom/interfaces/PomParent.md +41 -0
  137. package/api/@wtf/release-maven/pom/interfaces/PomPlugin.md +51 -0
  138. package/api/@wtf/release-maven/pom/interfaces/PomRepository.md +31 -0
  139. package/api/@wtf/release-maven/pom/interfaces/Span.md +35 -0
  140. package/api/@wtf/release-maven/pom/interfaces/XmlElement.md +83 -0
  141. package/api/@wtf/release-maven/pom/variables/PLUGIN_GROUP.md +13 -0
  142. package/api/@wtf/release-maven/publish/README.md +45 -0
  143. package/api/@wtf/release-maven/publish/functions/deployModules.md +35 -0
  144. package/api/@wtf/release-maven/publish/interfaces/DeployModulesOptions.md +146 -0
  145. package/api/@wtf/release-maven/publish/interfaces/DeployedModule.md +42 -0
  146. package/api/@wtf/release-maven/publish/type-aliases/ModuleStatus.md +13 -0
  147. package/api/@wtf/release-maven/repository/README.md +38 -0
  148. package/api/@wtf/release-maven/repository/functions/deployTargets.md +46 -0
  149. package/api/@wtf/release-maven/repository/functions/expandValues.md +42 -0
  150. package/api/@wtf/release-maven/repository/functions/hasPom.md +38 -0
  151. package/api/@wtf/release-maven/repository/functions/pomPath.md +40 -0
  152. package/api/@wtf/release-maven/repository/functions/pomUrl.md +45 -0
  153. package/api/@wtf/release-maven/repository/interfaces/Repository.md +31 -0
  154. package/api/@wtf/release-maven/repository/interfaces/ValuesOf.md +31 -0
  155. package/api/@wtf/release-maven/repository/variables/MAVEN_CENTRAL.md +13 -0
  156. package/api/@wtf/release-maven/stamp/README.md +50 -0
  157. package/api/@wtf/release-maven/stamp/functions/checkVersions.md +36 -0
  158. package/api/@wtf/release-maven/stamp/functions/stampModules.md +55 -0
  159. package/api/@wtf/release-maven/stamp/functions/stampPom.md +45 -0
  160. package/api/@wtf/release-maven/stamp/interfaces/PomStampOptions.md +51 -0
  161. package/api/@wtf/release-maven/stamp/interfaces/Stamped.md +31 -0
  162. package/api/@wtf/release-maven/stamp/interfaces/StampedModules.md +31 -0
  163. package/api/@wtf/release-npm/check/functions/checkPackages.md +1 -1
  164. package/api/@wtf/release-npm/check/functions/formatIssue.md +1 -1
  165. package/api/@wtf/release-npm/check/interfaces/CheckOptions.md +6 -6
  166. package/api/@wtf/release-npm/check/interfaces/Issue.md +5 -5
  167. package/api/@wtf/release-npm/check/type-aliases/CheckedPackage.md +1 -1
  168. package/api/@wtf/release-npm/check/type-aliases/IssueCode.md +1 -1
  169. package/api/@wtf/release-npm/ecosystem/variables/npmEcosystem.md +1 -1
  170. package/api/@wtf/release-npm/errors/type-aliases/NpmErrorCode.md +1 -1
  171. package/api/@wtf/release-npm/errors/variables/NPM_ERRORS.md +1 -1
  172. package/api/@wtf/release-npm/interfaces/Lookup.md +3 -3
  173. package/api/@wtf/release-npm/interfaces/PublishOptions.md +6 -6
  174. package/api/@wtf/release-npm/interfaces/PublishPackage.md +5 -5
  175. package/api/@wtf/release-npm/interfaces/PublishTrainOptions.md +13 -13
  176. package/api/@wtf/release-npm/interfaces/Publisher.md +7 -7
  177. package/api/@wtf/release-npm/interfaces/PublisherContext.md +7 -7
  178. package/api/@wtf/release-npm/manifests/functions/concreteRange.md +1 -1
  179. package/api/@wtf/release-npm/manifests/functions/manifestsAt.md +1 -1
  180. package/api/@wtf/release-npm/manifests/functions/packageOf.md +1 -1
  181. package/api/@wtf/release-npm/manifests/functions/packagesOfManifests.md +1 -1
  182. package/api/@wtf/release-npm/manifests/functions/readManifests.md +1 -1
  183. package/api/@wtf/release-npm/manifests/functions/resolveSpecifier.md +1 -1
  184. package/api/@wtf/release-npm/manifests/functions/runtimeDependenciesOf.md +1 -1
  185. package/api/@wtf/release-npm/manifests/functions/satisfiesRange.md +1 -1
  186. package/api/@wtf/release-npm/manifests/interfaces/Manifest.md +5 -5
  187. package/api/@wtf/release-npm/manifests/interfaces/NpmPackage.md +7 -7
  188. package/api/@wtf/release-npm/manifests/type-aliases/DependencyField.md +1 -1
  189. package/api/@wtf/release-npm/manifests/variables/DEPENDENCY_FIELDS.md +1 -1
  190. package/api/@wtf/release-npm/manifests/variables/FIELD_KINDS.md +1 -1
  191. package/api/@wtf/release-npm/manifests/variables/RUNTIME_FIELDS.md +1 -1
  192. package/api/@wtf/release-npm/prepare/functions/isTypeScriptSource.md +1 -1
  193. package/api/@wtf/release-npm/prepare/functions/prepareManifest.md +1 -1
  194. package/api/@wtf/release-npm/prepare/functions/stripSourceConditions.md +1 -1
  195. package/api/@wtf/release-npm/prepare/interfaces/PrepareOptions.md +5 -5
  196. package/api/@wtf/release-npm/prepare/interfaces/PreparedManifest.md +6 -6
  197. package/api/@wtf/release-npm/prepare/variables/SOURCE_CONDITIONS.md +1 -1
  198. package/api/@wtf/release-npm/publishers/functions/builtInPublisher.md +1 -1
  199. package/api/@wtf/release-npm/publishers/functions/isPublisher.md +1 -1
  200. package/api/@wtf/release-npm/publishers/variables/NPM_REGISTRY.md +1 -1
  201. package/api/@wtf/release-npm/publishers/variables/PUBLISHERS.md +1 -1
  202. package/api/@wtf/release-npm/publishers/variables/npmPublisher.md +1 -1
  203. package/api/@wtf/release-npm/publishers/variables/pnpmPublisher.md +1 -1
  204. package/api/@wtf/release-npm/release/functions/checkTrain.md +1 -1
  205. package/api/@wtf/release-npm/release/functions/distTagOf.md +1 -1
  206. package/api/@wtf/release-npm/release/functions/packTrain.md +1 -1
  207. package/api/@wtf/release-npm/release/functions/publishPacked.md +1 -1
  208. package/api/@wtf/release-npm/release/functions/publishTrain.md +1 -1
  209. package/api/@wtf/release-npm/release/functions/publishedOf.md +1 -1
  210. package/api/@wtf/release-npm/release/functions/publishedOfResolved.md +1 -1
  211. package/api/@wtf/release-npm/release/functions/releaseTrain.md +1 -1
  212. package/api/@wtf/release-npm/release/functions/resolveManifests.md +1 -1
  213. package/api/@wtf/release-npm/release/functions/tagTrain.md +1 -1
  214. package/api/@wtf/release-npm/release/interfaces/CheckRelease.md +16 -16
  215. package/api/@wtf/release-npm/release/interfaces/PackOptions.md +8 -8
  216. package/api/@wtf/release-npm/release/interfaces/PackedTrain.md +12 -12
  217. package/api/@wtf/release-npm/release/interfaces/PublishRun.md +11 -11
  218. package/api/@wtf/release-npm/release/interfaces/PublishedOf.md +4 -4
  219. package/api/@wtf/release-npm/release/interfaces/PublishedPackage.md +7 -7
  220. package/api/@wtf/release-npm/release/interfaces/PublishedTrain.md +5 -5
  221. package/api/@wtf/release-npm/release/interfaces/ResolveRelease.md +17 -17
  222. package/api/@wtf/release-npm/release/interfaces/ResolvedPackage.md +4 -4
  223. package/api/@wtf/release-npm/release/interfaces/ResolvedTrain.md +6 -6
  224. package/api/@wtf/release-npm/release/interfaces/TagRelease.md +14 -14
  225. package/api/@wtf/release-npm/release/type-aliases/LookedUpTrain.md +1 -1
  226. package/api/@wtf/release-npm/release/type-aliases/ReleaseRun.md +1 -1
  227. package/api/@wtf/release-npm/release/variables/ID_TOKENS.md +1 -1
  228. package/api/@wtf/release-npm/release/variables/RUNNER_ENVIRONMENTS.md +1 -1
  229. package/api/@wtf/release-npm/workspace/functions/pnpmWorkspaceGlobs.md +1 -1
  230. package/api/@wtf/release-npm/workspace/functions/publishableOf.md +1 -1
  231. package/api/@wtf/release-npm/workspace/functions/readWorkspace.md +1 -1
  232. package/api/@wtf/release-npm/workspace/functions/workspaceFolders.md +1 -1
  233. package/api/@wtf/release-npm/workspace/functions/workspaceGlobs.md +1 -1
  234. package/api/@wtf/release-npm/workspace/interfaces/WorkspaceGlobs.md +3 -3
  235. package/api/@wtf/release-npm/workspace/interfaces/WorkspaceOptions.md +2 -2
  236. package/api/@wtf/release-replace/errors/classes/ReplaceError.md +5 -5
  237. package/api/@wtf/release-replace/errors/type-aliases/ReplaceErrorCode.md +1 -1
  238. package/api/@wtf/release-replace/errors/variables/REPLACE_ERRORS.md +1 -1
  239. package/api/@wtf/release-replace/files/functions/filesMatcher.md +1 -1
  240. package/api/@wtf/release-replace/interfaces/ReplaceMatch.md +5 -5
  241. package/api/@wtf/release-replace/interfaces/ReplacementOf.md +5 -5
  242. package/api/@wtf/release-replace/replace/functions/regExpOf.md +1 -1
  243. package/api/@wtf/release-replace/replace/functions/replaceFiles.md +1 -1
  244. package/api/@wtf/release-replace/replace/functions/replaceText.md +1 -1
  245. package/api/@wtf/release-replace/replace/interfaces/ReplaceOptions.md +10 -10
  246. package/api/@wtf/release-replace/replace/interfaces/TextOptions.md +5 -5
  247. package/api/@wtf/release-replace/replace/type-aliases/To.md +1 -1
  248. package/api/@wtf/release-replace/templates/functions/mergeTemplates.md +1 -1
  249. package/api/@wtf/release-replace/templates/functions/resolveReplacement.md +1 -1
  250. package/api/@wtf/release-replace/templates/functions/resolveReplacements.md +1 -1
  251. package/api/@wtf/release-replace/type-aliases/Escape.md +1 -1
  252. package/api/@wtf/release-replace/type-aliases/ReplaceFunction.md +1 -1
  253. package/api/@wtf/release-replace/type-aliases/Replacement.md +1 -1
  254. package/api/@wtf/release-replace/type-aliases/ReplacementSpec.md +1 -1
  255. package/api/@wtf/release-replace/type-aliases/TemplateUse.md +1 -1
  256. package/api/@wtf/release-replace/type-aliases/Templates.md +1 -1
  257. package/api/@wtf/release-replace/values/functions/escapeValue.md +1 -1
  258. package/api/@wtf/release-replace/values/functions/textOf.md +1 -1
  259. package/api/@wtf/release-replace/values/functions/valueAt.md +1 -1
  260. package/api/@wtf/release-replace/values/variables/ESCAPES.md +1 -1
  261. package/api/@wtf/release-replace/values/variables/VALUE.md +1 -1
  262. package/api/@wtf/release-system/errors/classes/ReleaseError.md +7 -5
  263. package/api/@wtf/release-system/errors/functions/throwAll.md +1 -1
  264. package/api/@wtf/release-system/errors/type-aliases/ErrorClass.md +1 -1
  265. package/api/@wtf/release-system/errors/type-aliases/SystemErrorCode.md +1 -1
  266. package/api/@wtf/release-system/errors/variables/SYSTEM_ERRORS.md +1 -1
  267. package/api/@wtf/release-system/git/functions/commitsSince.md +1 -1
  268. package/api/@wtf/release-system/git/functions/filesOfCommits.md +1 -1
  269. package/api/@wtf/release-system/git/functions/git.md +1 -1
  270. package/api/@wtf/release-system/git/functions/gitOf.md +1 -1
  271. package/api/@wtf/release-system/git/functions/trackedFiles.md +1 -1
  272. package/api/@wtf/release-system/git/interfaces/GitContext.md +4 -4
  273. package/api/@wtf/release-system/git/interfaces/LogCommit.md +5 -5
  274. package/api/@wtf/release-system/node/functions/nodeSystem.md +1 -1
  275. package/api/@wtf/release-system/node/functions/realPathOf.md +1 -1
  276. package/api/@wtf/release-system/node/functions/systemOf.md +1 -1
  277. package/api/@wtf/release-system/paths/functions/normalizePath.md +1 -1
  278. package/api/@wtf/release-system/paths/functions/pathMatcher.md +1 -1
  279. package/api/@wtf/release-system/paths/type-aliases/PathMatcher.md +1 -1
  280. package/api/@wtf/release-system/posix/functions/basenameOf.md +1 -1
  281. package/api/@wtf/release-system/posix/functions/dirnameOf.md +1 -1
  282. package/api/@wtf/release-system/posix/functions/joinPath.md +1 -1
  283. package/api/@wtf/release-system/posix/functions/relativePath.md +1 -1
  284. package/api/@wtf/release-system/posix/functions/resolvePath.md +1 -1
  285. package/api/@wtf/release-system/system/interfaces/DirEntry.md +3 -3
  286. package/api/@wtf/release-system/system/interfaces/ExecOptions.md +4 -4
  287. package/api/@wtf/release-system/system/interfaces/ExecResult.md +4 -4
  288. package/api/@wtf/release-system/system/interfaces/System.md +7 -7
  289. package/api/@wtf/release-system/system/interfaces/SystemFs.md +8 -8
  290. package/api/@wtf/release-system/system/type-aliases/Exec.md +1 -1
  291. package/api/@wtf/release-system/system/type-aliases/SystemInput.md +1 -1
  292. package/api/@wtf/release-system/validator/functions/allOf.md +1 -1
  293. package/api/@wtf/release-system/validator/functions/anyObject.md +1 -1
  294. package/api/@wtf/release-system/validator/functions/anyOf.md +1 -1
  295. package/api/@wtf/release-system/validator/functions/arrayOf.md +1 -1
  296. package/api/@wtf/release-system/validator/functions/booleanOf.md +1 -1
  297. package/api/@wtf/release-system/validator/functions/errorOf.md +1 -1
  298. package/api/@wtf/release-system/validator/functions/errorsOf.md +1 -1
  299. package/api/@wtf/release-system/validator/functions/exclusive.md +1 -1
  300. package/api/@wtf/release-system/validator/functions/issuesOf.md +1 -1
  301. package/api/@wtf/release-system/validator/functions/objectOf.md +1 -1
  302. package/api/@wtf/release-system/validator/functions/oneOf.md +1 -1
  303. package/api/@wtf/release-system/validator/functions/orFunction.md +1 -1
  304. package/api/@wtf/release-system/validator/functions/pathText.md +1 -1
  305. package/api/@wtf/release-system/validator/functions/pluginEntriesOf.md +1 -1
  306. package/api/@wtf/release-system/validator/functions/recordOf.md +1 -1
  307. package/api/@wtf/release-system/validator/functions/refined.md +1 -1
  308. package/api/@wtf/release-system/validator/functions/stringOf.md +1 -1
  309. package/api/@wtf/release-system/validator/functions/tupleOf.md +1 -1
  310. package/api/@wtf/release-system/validator/interfaces/ArrayOptions.md +5 -5
  311. package/api/@wtf/release-system/validator/interfaces/IssueOptions.md +4 -4
  312. package/api/@wtf/release-system/validator/interfaces/ObjectOptions.md +5 -5
  313. package/api/@wtf/release-system/validator/interfaces/OptionIssue.md +4 -4
  314. package/api/@wtf/release-system/validator/interfaces/Property.md +4 -4
  315. package/api/@wtf/release-system/validator/interfaces/RecordOptions.md +6 -6
  316. package/api/@wtf/release-system/validator/interfaces/StringOptions.md +6 -6
  317. package/api/@wtf/release-system/validator/interfaces/Validator.md +4 -4
  318. package/api/@wtf/release-system/validator/type-aliases/JsonSchema.md +1 -1
  319. package/api/@wtf/release-system/validator/type-aliases/Path.md +1 -1
  320. package/api/@wtf/release-trains/cascade/functions/cascadeNotes.md +1 -1
  321. package/api/@wtf/release-trains/cascade/functions/cascadeText.md +1 -1
  322. package/api/@wtf/release-trains/cascade/functions/cascadeType.md +1 -1
  323. package/api/@wtf/release-trains/cascade/functions/cascadesOf.md +1 -1
  324. package/api/@wtf/release-trains/cascade/functions/higherType.md +1 -1
  325. package/api/@wtf/release-trains/cascade/interfaces/Cascade.md +11 -11
  326. package/api/@wtf/release-trains/cascade/interfaces/CascadeCheck.md +8 -8
  327. package/api/@wtf/release-trains/cascade/type-aliases/CascadeKind.md +1 -1
  328. package/api/@wtf/release-trains/cascade/type-aliases/ReleaseType.md +1 -1
  329. package/api/@wtf/release-trains/cascade/variables/RELEASE_TYPES.md +1 -1
  330. package/api/@wtf/release-trains/ecosystem/functions/isEcosystem.md +1 -1
  331. package/api/@wtf/release-trains/ecosystem/functions/loadEcosystems.md +1 -1
  332. package/api/@wtf/release-trains/ecosystem/functions/readPackages.md +1 -1
  333. package/api/@wtf/release-trains/ecosystem/interfaces/Dependency.md +4 -4
  334. package/api/@wtf/release-trains/ecosystem/interfaces/Ecosystem.md +5 -5
  335. package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemContext.md +5 -5
  336. package/api/@wtf/release-trains/ecosystem/interfaces/EcosystemPackages.md +3 -3
  337. package/api/@wtf/release-trains/ecosystem/interfaces/Package.md +8 -6
  338. package/api/@wtf/release-trains/ecosystem/type-aliases/DependencyKind.md +1 -1
  339. package/api/@wtf/release-trains/ecosystem/type-aliases/ModuleLoader.md +1 -1
  340. package/api/@wtf/release-trains/ecosystem/variables/DEPENDENCY_KINDS.md +1 -1
  341. package/api/@wtf/release-trains/errors/classes/TrainsError.md +5 -5
  342. package/api/@wtf/release-trains/errors/type-aliases/TrainsErrorCode.md +1 -1
  343. package/api/@wtf/release-trains/errors/variables/TRAINS_ERRORS.md +1 -1
  344. package/api/@wtf/release-trains/generated/functions/filesIn.md +1 -1
  345. package/api/@wtf/release-trains/generated/functions/formatGenerated.md +1 -1
  346. package/api/@wtf/release-trains/generated/functions/listGenerated.md +1 -1
  347. package/api/@wtf/release-trains/generated/functions/parseGenerated.md +1 -1
  348. package/api/@wtf/release-trains/generated/functions/readGenerated.md +1 -1
  349. package/api/@wtf/release-trains/generated/functions/stageGenerated.md +1 -1
  350. package/api/@wtf/release-trains/generated/functions/stageGeneratedFolders.md +1 -1
  351. package/api/@wtf/release-trains/generated/functions/unlistedIn.md +1 -1
  352. package/api/@wtf/release-trains/generated/interfaces/GeneratedOptions.md +2 -2
  353. package/api/@wtf/release-trains/generated/interfaces/StageOptions.md +6 -6
  354. package/api/@wtf/release-trains/generated/variables/GENERATED.md +1 -1
  355. package/api/@wtf/release-trains/git/functions/tagOf.md +1 -1
  356. package/api/@wtf/release-trains/git/functions/tagsOf.md +1 -1
  357. package/api/@wtf/release-trains/git/functions/versionOfTag.md +1 -1
  358. package/api/@wtf/release-trains/git/interfaces/TrainTag.md +3 -3
  359. package/api/@wtf/release-trains/interfaces/Train.md +7 -7
  360. package/api/@wtf/release-trains/packages/functions/dependencyEdges.md +1 -1
  361. package/api/@wtf/release-trains/packages/functions/dependencyText.md +1 -1
  362. package/api/@wtf/release-trains/packages/functions/dependsOnErrors.md +1 -1
  363. package/api/@wtf/release-trains/packages/functions/normalizeDir.md +1 -1
  364. package/api/@wtf/release-trains/packages/functions/ownersOf.md +1 -1
  365. package/api/@wtf/release-trains/packages/functions/packagesOf.md +1 -1
  366. package/api/@wtf/release-trains/packages/functions/publishOrder.md +1 -1
  367. package/api/@wtf/release-trains/packages/functions/releasedVersions.md +1 -1
  368. package/api/@wtf/release-trains/packages/functions/trainDependencies.md +1 -1
  369. package/api/@wtf/release-trains/packages/functions/trainOrder.md +1 -1
  370. package/api/@wtf/release-trains/packages/functions/unsatisfiedErrors.md +1 -1
  371. package/api/@wtf/release-trains/packages/interfaces/DependencyEdge.md +6 -6
  372. package/api/@wtf/release-trains/packages/interfaces/OrderFault.md +4 -4
  373. package/api/@wtf/release-trains/packages/interfaces/OrderPins.md +3 -3
  374. package/api/@wtf/release-trains/packages/interfaces/PublishOrder.md +3 -3
  375. package/api/@wtf/release-trains/packages/interfaces/TrainDependency.md +3 -3
  376. package/api/@wtf/release-trains/packages/interfaces/VersionsRelease.md +7 -7
  377. package/api/@wtf/release-trains/paths/functions/filterCommits.md +1 -1
  378. package/api/@wtf/release-trains/paths/functions/gitFilesOf.md +1 -1
  379. package/api/@wtf/release-trains/paths/functions/overlapError.md +1 -1
  380. package/api/@wtf/release-trains/paths/functions/trainOfPath.md +1 -1
  381. package/api/@wtf/release-trains/paths/functions/trainsOfCommit.md +1 -1
  382. package/api/@wtf/release-trains/paths/functions/trainsOfPath.md +1 -1
  383. package/api/@wtf/release-trains/paths/type-aliases/FilesOf.md +1 -1
  384. package/api/@wtf/release-trains/schema/interfaces/ConfigPart.md +6 -6
  385. package/api/@wtf/release-trains/schema/interfaces/RootOptions.md +7 -7
  386. package/api/@wtf/release-trains/schema/type-aliases/DependencyRule.md +1 -1
  387. package/api/@wtf/release-trains/schema/variables/DEPENDENCY_RULES.md +1 -1
  388. package/api/@wtf/release-trains/schema/variables/TAG_FORMAT_PATTERN.md +1 -1
  389. package/api/@wtf/release-trains/schema/variables/TRAIN_NAME_PATTERN.md +1 -1
  390. package/api/@wtf/release-trains/schema/variables/configSchema.md +1 -1
  391. package/api/@wtf/release-trains/schema/variables/jsonSchema.md +1 -1
  392. package/api/@wtf/release-trains/schema/variables/rootOptionsSchema.md +1 -1
  393. package/api/@wtf/release-trains/schema/variables/trainSchema.md +1 -1
  394. package/api/@wtf/release-trains/schema/variables/trainsSchema.md +1 -1
  395. package/api/@wtf/release-trains/trains/functions/changelogOf.md +1 -1
  396. package/api/@wtf/release-trains/trains/functions/matchersOf.md +1 -1
  397. package/api/@wtf/release-trains/trains/functions/overlapErrors.md +1 -1
  398. package/api/@wtf/release-trains/trains/functions/selectTrain.md +1 -1
  399. package/api/@wtf/release-trains/trains/functions/tagFormatOf.md +1 -1
  400. package/api/@wtf/release-trains/trains/functions/trainHeadedNotes.md +1 -1
  401. package/api/@wtf/release-trains/trains/functions/trainOfRun.md +1 -1
  402. package/api/@wtf/release-trains/trains/functions/trainOfTag.md +1 -1
  403. package/api/@wtf/release-trains/trains/functions/trainsErrors.md +1 -1
  404. package/api/@wtf/release-trains/trains/functions/trainsOfOptions.md +1 -1
  405. package/api/@wtf/release-trains/trains/variables/TRAIN_VARIABLE.md +1 -1
  406. package/api/@wtf/release-trains/trains/variables/VERSION.md +1 -1
  407. package/api/@wtf/release-trains/type-aliases/BranchSpec.md +1 -1
  408. package/api/@wtf/release-trains/type-aliases/Trains.md +1 -1
  409. package/api/@wtf/release-trains/verify/functions/unreleasedDependencies.md +1 -1
  410. package/api/@wtf/release-trains/verify/functions/verifyTrain.md +1 -1
  411. package/api/@wtf/release-trains/verify/interfaces/UnreleasedDependencies.md +10 -10
  412. package/api/@wtf/release-trains/verify/interfaces/VerifiedTrain.md +5 -5
  413. package/api/@wtf/release-trains/verify/interfaces/VerifyRelease.md +8 -8
  414. package/api/@wtf/release-validate/errors/classes/ValidateError.md +5 -5
  415. package/api/@wtf/release-validate/errors/type-aliases/ValidateErrorCode.md +1 -1
  416. package/api/@wtf/release-validate/errors/variables/VALIDATE_ERRORS.md +1 -1
  417. package/api/@wtf/release-validate/interfaces/ConfigIssue.md +4 -4
  418. package/api/@wtf/release-validate/json-schema/functions/fromJsonSchema.md +1 -1
  419. package/api/@wtf/release-validate/json-schema/functions/pathOfPointer.md +1 -1
  420. package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaError.md +3 -3
  421. package/api/@wtf/release-validate/json-schema/interfaces/JsonSchemaValidator.md +3 -3
  422. package/api/@wtf/release-validate/validate/functions/configErrors.md +1 -1
  423. package/api/@wtf/release-validate/validate/functions/isStandardSchema.md +1 -1
  424. package/api/@wtf/release-validate/validate/functions/pathText.md +1 -1
  425. package/api/@wtf/release-validate/validate/functions/validateConfig.md +1 -1
  426. package/api/@wtf/semantic-release-cargo/functions/indexLookup.md +1 -1
  427. package/api/@wtf/semantic-release-cargo/functions/prepare.md +1 -1
  428. package/api/@wtf/semantic-release-cargo/functions/publish.md +1 -1
  429. package/api/@wtf/semantic-release-cargo/functions/verifyConditions.md +1 -1
  430. package/api/@wtf/semantic-release-cargo/interfaces/CargoPluginOptions.md +12 -12
  431. package/api/@wtf/semantic-release-cargo/interfaces/CargoRelease.md +3 -3
  432. package/api/@wtf/semantic-release-cargo/schema/type-aliases/CargoOptions.md +1 -1
  433. package/api/@wtf/semantic-release-cargo/schema/variables/cargoOptionsSchema.md +1 -1
  434. package/api/@wtf/semantic-release-cargo/schema/variables/cargoSchema.md +1 -1
  435. package/api/@wtf/semantic-release-cargo/schema/variables/configSchema.md +1 -1
  436. package/api/@wtf/semantic-release-cargo/schema/variables/jsonSchema.md +1 -1
  437. package/api/@wtf/semantic-release-cargo/variables/default.md +1 -1
  438. package/api/@wtf/semantic-release-go/README.md +73 -0
  439. package/api/@wtf/semantic-release-go/functions/prepare.md +41 -0
  440. package/api/@wtf/semantic-release-go/functions/publish.md +43 -0
  441. package/api/@wtf/semantic-release-go/functions/verifyConditions.md +37 -0
  442. package/api/@wtf/semantic-release-go/functions/verifyRelease.md +38 -0
  443. package/api/@wtf/semantic-release-go/interfaces/GoPluginOptions.md +84 -0
  444. package/api/@wtf/semantic-release-go/interfaces/GoRelease.md +31 -0
  445. package/api/@wtf/semantic-release-go/schema/README.md +37 -0
  446. package/api/@wtf/semantic-release-go/schema/type-aliases/GoOptions.md +13 -0
  447. package/api/@wtf/{semantic-release-trains-changelog → semantic-release-go}/schema/variables/configSchema.md +2 -2
  448. package/api/@wtf/semantic-release-go/schema/variables/goOptionsSchema.md +13 -0
  449. package/api/@wtf/semantic-release-go/schema/variables/goSchema.md +14 -0
  450. package/api/@wtf/{semantic-release-trains-changelog → semantic-release-go}/schema/variables/jsonSchema.md +2 -2
  451. package/api/@wtf/semantic-release-go/variables/default.md +144 -0
  452. package/api/@wtf/semantic-release-maven/README.md +74 -0
  453. package/api/@wtf/semantic-release-maven/functions/pomLookup.md +38 -0
  454. package/api/@wtf/semantic-release-maven/functions/prepare.md +41 -0
  455. package/api/@wtf/semantic-release-maven/functions/publish.md +43 -0
  456. package/api/@wtf/semantic-release-maven/functions/verifyConditions.md +40 -0
  457. package/api/@wtf/semantic-release-maven/interfaces/LookupAuth.md +32 -0
  458. package/api/@wtf/semantic-release-maven/interfaces/MavenPluginOptions.md +129 -0
  459. package/api/@wtf/semantic-release-maven/interfaces/MavenRelease.md +21 -0
  460. package/api/@wtf/semantic-release-maven/schema/README.md +38 -0
  461. package/api/@wtf/semantic-release-maven/schema/type-aliases/MavenOptions.md +13 -0
  462. package/api/@wtf/semantic-release-maven/schema/variables/configSchema.md +13 -0
  463. package/api/@wtf/semantic-release-maven/schema/variables/jsonSchema.md +13 -0
  464. package/api/@wtf/semantic-release-maven/schema/variables/mavenOptionsSchema.md +13 -0
  465. package/api/@wtf/semantic-release-maven/schema/variables/mavenSchema.md +14 -0
  466. package/api/@wtf/semantic-release-maven/variables/default.md +116 -0
  467. package/api/@wtf/semantic-release-npm/functions/addChannel.md +1 -1
  468. package/api/@wtf/semantic-release-npm/functions/fail.md +1 -1
  469. package/api/@wtf/semantic-release-npm/functions/loadPublisher.md +1 -1
  470. package/api/@wtf/semantic-release-npm/functions/prepare.md +1 -1
  471. package/api/@wtf/semantic-release-npm/functions/publish.md +1 -1
  472. package/api/@wtf/semantic-release-npm/functions/verifyConditions.md +1 -1
  473. package/api/@wtf/semantic-release-npm/interfaces/PublishPluginOptions.md +18 -18
  474. package/api/@wtf/semantic-release-npm/interfaces/PublishedRelease.md +4 -4
  475. package/api/@wtf/semantic-release-npm/interfaces/SmokeOption.md +2 -2
  476. package/api/@wtf/semantic-release-npm/schema/type-aliases/PublishOptions.md +1 -1
  477. package/api/@wtf/semantic-release-npm/schema/variables/configSchema.md +1 -1
  478. package/api/@wtf/semantic-release-npm/schema/variables/jsonSchema.md +1 -1
  479. package/api/@wtf/semantic-release-npm/schema/variables/publishOptionsSchema.md +1 -1
  480. package/api/@wtf/semantic-release-npm/schema/variables/publishSchema.md +1 -1
  481. package/api/@wtf/semantic-release-npm/type-aliases/PublisherSpec.md +1 -1
  482. package/api/@wtf/semantic-release-npm/variables/default.md +1 -1
  483. package/api/@wtf/semantic-release-replace/functions/functionOf.md +1 -1
  484. package/api/@wtf/semantic-release-replace/functions/prepare.md +1 -1
  485. package/api/@wtf/semantic-release-replace/functions/templatesOf.md +1 -1
  486. package/api/@wtf/semantic-release-replace/functions/verifyConditions.md +1 -1
  487. package/api/@wtf/semantic-release-replace/interfaces/ReplacePluginOptions.md +5 -5
  488. package/api/@wtf/semantic-release-replace/schema/interfaces/ModuleExport.md +3 -3
  489. package/api/@wtf/semantic-release-replace/schema/interfaces/ReplaceOptions.md +4 -4
  490. package/api/@wtf/semantic-release-replace/schema/interfaces/RootTemplates.md +2 -2
  491. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacement.md +1 -1
  492. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginReplacementSpec.md +1 -1
  493. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTemplates.md +1 -1
  494. package/api/@wtf/semantic-release-replace/schema/type-aliases/PluginTo.md +1 -1
  495. package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplateSet.md +1 -1
  496. package/api/@wtf/semantic-release-replace/schema/type-aliases/TemplatesOption.md +1 -1
  497. package/api/@wtf/semantic-release-replace/schema/variables/configSchema.md +1 -1
  498. package/api/@wtf/semantic-release-replace/schema/variables/exportedSetSchema.md +1 -1
  499. package/api/@wtf/semantic-release-replace/schema/variables/jsonSchema.md +1 -1
  500. package/api/@wtf/semantic-release-replace/schema/variables/replaceOptionsSchema.md +1 -1
  501. package/api/@wtf/semantic-release-replace/schema/variables/replacementSchema.md +1 -1
  502. package/api/@wtf/semantic-release-replace/schema/variables/rootTemplatesSchema.md +1 -1
  503. package/api/@wtf/semantic-release-replace/schema/variables/templateSchema.md +1 -1
  504. package/api/@wtf/semantic-release-replace/schema/variables/templatesSchema.md +1 -1
  505. package/api/@wtf/semantic-release-replace/variables/default.md +1 -1
  506. package/api/@wtf/semantic-release-trains/config/README.md +11 -3
  507. package/api/@wtf/semantic-release-trains/config/functions/skipPlugins.md +1 -1
  508. package/api/@wtf/semantic-release-trains/config/functions/stepId.md +1 -1
  509. package/api/@wtf/semantic-release-trains/config/functions/trainAssets.md +1 -1
  510. package/api/@wtf/semantic-release-trains/config/functions/trainChangelog.md +3 -4
  511. package/api/@wtf/semantic-release-trains/config/functions/trainOfTag.md +1 -1
  512. package/api/@wtf/semantic-release-trains/config/functions/trainTagFormat.md +1 -1
  513. package/api/@wtf/semantic-release-trains/config/interfaces/AssetsOptions.md +4 -4
  514. package/api/@wtf/semantic-release-trains/config/interfaces/SkipOptions.md +3 -3
  515. package/api/@wtf/semantic-release-trains/config/variables/BRANCHES.md +1 -1
  516. package/api/@wtf/semantic-release-trains/config/variables/BREAKING.md +1 -1
  517. package/api/@wtf/semantic-release-trains/config/variables/TITLE.md +14 -0
  518. package/api/@wtf/semantic-release-trains/defaults/README.md +42 -0
  519. package/api/@wtf/semantic-release-trains/defaults/functions/skipRuleOf.md +40 -0
  520. package/api/@wtf/semantic-release-trains/defaults/functions/skips.md +42 -0
  521. package/api/@wtf/semantic-release-trains/defaults/functions/trainOptionsOf.md +40 -0
  522. package/api/@wtf/semantic-release-trains/defaults/interfaces/SkipContext.md +59 -0
  523. package/api/@wtf/semantic-release-trains/defaults/type-aliases/SkipCheck.md +35 -0
  524. package/api/@wtf/semantic-release-trains/defaults/type-aliases/TrainOptions.md +33 -0
  525. package/api/@wtf/semantic-release-trains/defaults/variables/SKIP_RULES.md +13 -0
  526. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_OPTIONS.md +19 -0
  527. package/api/@wtf/semantic-release-trains/defaults/variables/TRAIN_SKIP.md +17 -0
  528. package/api/@wtf/semantic-release-trains/errors/type-aliases/PluginErrorCode.md +1 -1
  529. package/api/@wtf/semantic-release-trains/errors/variables/PLUGIN_ERRORS.md +1 -1
  530. package/api/@wtf/semantic-release-trains/info/functions/decideTrain.md +1 -1
  531. package/api/@wtf/semantic-release-trains/info/functions/dotenvOf.md +1 -1
  532. package/api/@wtf/semantic-release-trains/info/functions/infoOf.md +1 -1
  533. package/api/@wtf/semantic-release-trains/info/interfaces/DecideRun.md +4 -4
  534. package/api/@wtf/semantic-release-trains/info/interfaces/InfoRun.md +8 -8
  535. package/api/@wtf/semantic-release-trains/info/interfaces/TrainDecision.md +5 -5
  536. package/api/@wtf/semantic-release-trains/info/interfaces/TrainInfo.md +5 -5
  537. package/api/@wtf/semantic-release-trains/interfaces/TrainsEntryOptions.md +15 -8
  538. package/api/@wtf/semantic-release-trains/interfaces/TrainsOptions.md +7 -7
  539. package/api/@wtf/semantic-release-trains/schema/README.md +1 -0
  540. package/api/@wtf/semantic-release-trains/schema/variables/configSchema.md +1 -1
  541. package/api/@wtf/semantic-release-trains/schema/variables/jsonSchema.md +1 -1
  542. package/api/@wtf/semantic-release-trains/schema/variables/pluginSpecSchema.md +1 -1
  543. package/api/@wtf/semantic-release-trains/schema/variables/skipRuleSchema.md +13 -0
  544. package/api/@wtf/semantic-release-trains/schema/variables/trainsEntrySchema.md +1 -1
  545. package/api/@wtf/semantic-release-trains/schema/variables/trainsPluginSchema.md +1 -1
  546. package/api/@wtf/semantic-release-trains/type-aliases/PluginSpec.md +1 -1
  547. package/api/@wtf/semantic-release-trains/type-aliases/TrainsPluginOptions.md +1 -1
  548. package/api/@wtf/semantic-release-trains/variables/addChannel.md +1 -1
  549. package/api/@wtf/semantic-release-trains/variables/analyzeCommits.md +1 -1
  550. package/api/@wtf/semantic-release-trains/variables/default.md +1 -1
  551. package/api/@wtf/semantic-release-trains/variables/fail.md +1 -1
  552. package/api/@wtf/semantic-release-trains/variables/generateNotes.md +1 -1
  553. package/api/@wtf/semantic-release-trains/variables/prepare.md +1 -1
  554. package/api/@wtf/semantic-release-trains/variables/publish.md +1 -1
  555. package/api/@wtf/semantic-release-trains/variables/success.md +1 -1
  556. package/api/@wtf/semantic-release-trains/variables/verifyConditions.md +1 -1
  557. package/api/@wtf/semantic-release-trains/variables/verifyRelease.md +1 -1
  558. package/api/@wtf/semantic-release-validate/functions/configOf.md +1 -1
  559. package/api/@wtf/semantic-release-validate/functions/loadSchema.md +1 -1
  560. package/api/@wtf/semantic-release-validate/functions/verifyConditions.md +1 -1
  561. package/api/@wtf/semantic-release-validate/interfaces/ValidatePluginOptions.md +2 -2
  562. package/api/@wtf/semantic-release-validate/schema/interfaces/Validator.md +2 -2
  563. package/api/@wtf/semantic-release-validate/schema/variables/configSchema.md +1 -1
  564. package/api/@wtf/semantic-release-validate/schema/variables/jsonSchema.md +1 -1
  565. package/api/@wtf/semantic-release-validate/schema/variables/validateOptionsSchema.md +1 -1
  566. package/api/@wtf/semantic-release-validate/variables/default.md +1 -1
  567. package/api/README.md +20 -5
  568. package/api/trains.json +9 -3
  569. package/guides/changelogs.md +30 -123
  570. package/guides/ci-recipes.md +16 -13
  571. package/guides/configuring-trains.md +7 -4
  572. package/guides/ecosystems.md +46 -23
  573. package/guides/getting-started.md +4 -6
  574. package/guides/publishing-go-modules.md +208 -0
  575. package/guides/publishing-maven.md +293 -0
  576. package/guides/publishing.md +6 -5
  577. package/guides/system.md +2 -2
  578. package/guides/validating-a-config.md +7 -9
  579. package/package.json +12 -10
  580. package/api/@wtf/release-trains-changelog/README.md +0 -58
  581. package/api/@wtf/release-trains-changelog/render/README.md +0 -44
  582. package/api/@wtf/release-trains-changelog/render/functions/changelogSection.md +0 -35
  583. package/api/@wtf/release-trains-changelog/render/functions/parseCommit.md +0 -28
  584. package/api/@wtf/release-trains-changelog/render/functions/prependSection.md +0 -40
  585. package/api/@wtf/release-trains-changelog/render/functions/renderSection.md +0 -37
  586. package/api/@wtf/release-trains-changelog/render/interfaces/ChangelogCommit.md +0 -27
  587. package/api/@wtf/release-trains-changelog/render/interfaces/ParsedCommit.md +0 -53
  588. package/api/@wtf/release-trains-changelog/render/interfaces/RenderOptions.md +0 -65
  589. package/api/@wtf/release-trains-changelog/render/variables/DEFAULT_TYPES.md +0 -13
  590. package/api/@wtf/release-trains-changelog/render/variables/TITLE.md +0 -13
  591. package/api/@wtf/release-trains-changelog/write/README.md +0 -48
  592. package/api/@wtf/release-trains-changelog/write/functions/changelogErrors.md +0 -33
  593. package/api/@wtf/release-trains-changelog/write/functions/commitUrlOf.md +0 -29
  594. package/api/@wtf/release-trains-changelog/write/functions/writeChangelogs.md +0 -35
  595. package/api/@wtf/release-trains-changelog/write/interfaces/ChangelogOptions.md +0 -68
  596. package/api/@wtf/release-trains-changelog/write/interfaces/ChangelogRelease.md +0 -176
  597. package/api/@wtf/release-trains-changelog/write/interfaces/ChangelogTarget.md +0 -146
  598. package/api/@wtf/release-trains-changelog/write/interfaces/WrittenChangelog.md +0 -37
  599. package/api/@wtf/semantic-release-trains-changelog/README.md +0 -47
  600. package/api/@wtf/semantic-release-trains-changelog/functions/prepare.md +0 -33
  601. package/api/@wtf/semantic-release-trains-changelog/functions/verifyConditions.md +0 -36
  602. package/api/@wtf/semantic-release-trains-changelog/interfaces/ChangelogPluginOptions.md +0 -126
  603. package/api/@wtf/semantic-release-trains-changelog/schema/README.md +0 -24
  604. package/api/@wtf/semantic-release-trains-changelog/schema/variables/changelogOptionsSchema.md +0 -13
  605. package/api/@wtf/semantic-release-trains-changelog/schema/variables/changelogSchema.md +0 -13
  606. package/api/@wtf/semantic-release-trains-changelog/variables/default.md +0 -68
@@ -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/go.mjs`), or its `file:` URL. One that cannot be loaded, whose
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-cargo` are, reads `trains`, `ecosystems` and
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
- ## Sketches
212
+ ### Go
207
213
 
208
- Two ecosystems the trains could take, of the same interface: neither is a package yet.
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
- ### Go
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
- - **Packages:** the modules of `go.work`, each its `go.mod`; its folder is the module's.
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
- - **Packages:** the modules of the reactor, each its `pom.xml`; a dependency on an artifact of
225
- another module is one on a package of the repo.
226
- - **Kinds:** of its scope, `compile` and `runtime` are `runtime`, `provided` is `peer`, `test` is
227
- `dev`, and a plugin of the build is `build`.
228
- - **The stamp:** each `0.0.0-SNAPSHOT` the release's version, and each version of a dependency on a
229
- module of another train that train's last release.
230
- - **`resolve` and `satisfies`:** the version itself, of Maven's ranges (`[1.0,2.0)`) where an author
231
- writes one.
232
- - **Publishing:** to Maven Central, each module of the train, signed, in the order of the reactor.
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-trains-changelog`,
20
- `@wtf/semantic-release-npm` and `@wtf/semantic-release-replace`.
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-trains-changelog`,
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.
@@ -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; `@wtf/semantic-release-trains-changelog`
78
- writes no section a changelog has already, so `@semantic-release/git` finds nothing to commit; it
79
- tags the release commit, skips each package that the registry already has, publishes the rest, and
80
- makes the release of the host. The stock `@semantic-release/changelog` would write the section
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