@storm-software/workspace-tools 1.269.0 → 1.270.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 (274) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +2 -1
  3. package/dist/chunk-A7JGVU4P.js +468 -0
  4. package/dist/chunk-SRN4D7WO.mjs +468 -0
  5. package/dist/executors.js +2 -2
  6. package/dist/executors.mjs +1 -1
  7. package/dist/index.js +2 -2
  8. package/dist/index.mjs +1 -1
  9. package/dist/src/executors/npm-publish/executor.js +2 -2
  10. package/dist/src/executors/npm-publish/executor.mjs +1 -1
  11. package/docs/executors/rollup.md +88 -0
  12. package/executors.ts +23 -0
  13. package/generators.ts +14 -0
  14. package/index.ts +5 -0
  15. package/package.json +4 -4
  16. package/project.json +58 -0
  17. package/src/base/base-executor.ts +200 -0
  18. package/src/base/base-executor.untyped.ts +18 -0
  19. package/src/base/base-generator.ts +130 -0
  20. package/src/base/base-generator.untyped.ts +16 -0
  21. package/src/base/cargo-base-executor.untyped.ts +73 -0
  22. package/src/base/index.ts +8 -0
  23. package/src/base/typescript-build-executor.untyped.ts +153 -0
  24. package/src/base/typescript-library-generator.ts +415 -0
  25. package/src/base/typescript-library-generator.untyped.ts +106 -0
  26. package/src/executors/cargo-build/executor.spec.ts +18 -0
  27. package/src/executors/cargo-build/executor.ts +28 -0
  28. package/src/executors/cargo-build/untyped.ts +18 -0
  29. package/src/executors/cargo-check/executor.spec.ts +18 -0
  30. package/src/executors/cargo-check/executor.ts +27 -0
  31. package/src/executors/cargo-check/untyped.ts +11 -0
  32. package/src/executors/cargo-clippy/executor.spec.ts +18 -0
  33. package/src/executors/cargo-clippy/executor.ts +28 -0
  34. package/src/executors/cargo-clippy/untyped.ts +18 -0
  35. package/src/executors/cargo-doc/executor.spec.ts +18 -0
  36. package/src/executors/cargo-doc/executor.ts +39 -0
  37. package/src/executors/cargo-doc/untyped.ts +44 -0
  38. package/src/executors/cargo-format/executor.spec.ts +18 -0
  39. package/src/executors/cargo-format/executor.ts +28 -0
  40. package/src/executors/cargo-format/untyped.ts +11 -0
  41. package/src/executors/cargo-publish/executor.spec.ts +11 -0
  42. package/src/executors/cargo-publish/executor.ts +139 -0
  43. package/src/executors/cargo-publish/untyped.ts +33 -0
  44. package/src/executors/clean-package/constants.ts +99 -0
  45. package/src/executors/clean-package/executor.spec.ts +18 -0
  46. package/src/executors/clean-package/executor.ts +214 -0
  47. package/src/executors/clean-package/types.ts +6 -0
  48. package/src/executors/clean-package/untyped.ts +60 -0
  49. package/src/executors/clean-package/utils.ts +85 -0
  50. package/src/executors/esbuild/executor.spec.ts +11 -0
  51. package/src/executors/esbuild/executor.ts +67 -0
  52. package/src/executors/esbuild/untyped.ts +20 -0
  53. package/src/executors/npm-publish/executor.spec.ts +11 -0
  54. package/src/executors/npm-publish/executor.ts +681 -0
  55. package/src/executors/npm-publish/untyped.ts +56 -0
  56. package/src/executors/size-limit/executor.spec.ts +18 -0
  57. package/src/executors/size-limit/executor.ts +88 -0
  58. package/src/executors/size-limit/untyped.ts +22 -0
  59. package/src/executors/typia/executor.ts +54 -0
  60. package/src/executors/typia/untyped.ts +48 -0
  61. package/src/executors/unbuild/executor.spec.ts +11 -0
  62. package/src/executors/unbuild/executor.ts +136 -0
  63. package/src/executors/unbuild/untyped.ts +152 -0
  64. package/src/generators/browser-library/generator.spec.ts +20 -0
  65. package/src/generators/browser-library/generator.ts +109 -0
  66. package/src/generators/browser-library/untyped.ts +29 -0
  67. package/src/generators/config-schema/generator.spec.ts +20 -0
  68. package/src/generators/config-schema/generator.ts +90 -0
  69. package/src/generators/config-schema/untyped.ts +19 -0
  70. package/src/generators/init/init.ts +32 -0
  71. package/src/generators/init/untyped.ts +16 -0
  72. package/src/generators/neutral-library/generator.spec.ts +20 -0
  73. package/src/generators/neutral-library/generator.ts +81 -0
  74. package/src/generators/neutral-library/untyped.ts +29 -0
  75. package/src/generators/node-library/generator.spec.ts +20 -0
  76. package/src/generators/node-library/generator.ts +84 -0
  77. package/src/generators/node-library/untyped.ts +29 -0
  78. package/src/generators/preset/files/.all-contributorsrc.template +48 -0
  79. package/src/generators/preset/files/.editorconfig +454 -0
  80. package/src/generators/preset/files/.env.template +38 -0
  81. package/src/generators/preset/files/.gitattributes +52 -0
  82. package/src/generators/preset/files/.github/.nvmrc +1 -0
  83. package/src/generators/preset/files/.github/CODEOWNERS +3 -0
  84. package/src/generators/preset/files/.github/CODE_OF_CONDUCT.md +125 -0
  85. package/src/generators/preset/files/.github/CONTRIBUTING.md.template +15 -0
  86. package/src/generators/preset/files/.github/FUNDING.yml +3 -0
  87. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/bug-report.yml.template +102 -0
  88. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/documentation.yml.template +56 -0
  89. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/feature-request.yml.template +60 -0
  90. package/src/generators/preset/files/.github/PULL_REQUEST_TEMPLATE.md.template +39 -0
  91. package/src/generators/preset/files/.github/SECURITY.md +9 -0
  92. package/src/generators/preset/files/.github/codecov.yml +29 -0
  93. package/src/generators/preset/files/.github/dependabot.yml +64 -0
  94. package/src/generators/preset/files/.github/labels.yml +84 -0
  95. package/src/generators/preset/files/.github/renovate.json +4 -0
  96. package/src/generators/preset/files/.github/renovate.json.template +63 -0
  97. package/src/generators/preset/files/.github/stale.yml +55 -0
  98. package/src/generators/preset/files/.github/workflows/build-release.yml.template +25 -0
  99. package/src/generators/preset/files/.github/workflows/code-review.yml +18 -0
  100. package/src/generators/preset/files/.github/workflows/codeql.yml +84 -0
  101. package/src/generators/preset/files/.github/workflows/dependabot-update.yml +32 -0
  102. package/src/generators/preset/files/.github/workflows/git-guardian.yml +23 -0
  103. package/src/generators/preset/files/.github/workflows/greetings.yml +31 -0
  104. package/src/generators/preset/files/.github/workflows/labels.yml +31 -0
  105. package/src/generators/preset/files/.github/workflows/lock.yml +26 -0
  106. package/src/generators/preset/files/.log4brains.yml.template +5 -0
  107. package/src/generators/preset/files/.markdownlint.json +155 -0
  108. package/src/generators/preset/files/.verdaccio/config.yml.template +40 -0
  109. package/src/generators/preset/files/.vscode/README.md +32 -0
  110. package/src/generators/preset/files/.vscode/cspell.json +3 -0
  111. package/src/generators/preset/files/.vscode/extensions.json +14 -0
  112. package/src/generators/preset/files/.vscode/launch.json +37 -0
  113. package/src/generators/preset/files/.vscode/settings.json +401 -0
  114. package/src/generators/preset/files/.vscode/tasks.json +4 -0
  115. package/src/generators/preset/files/.whitesource +14 -0
  116. package/src/generators/preset/files/assets/diagrams/.gitkeep +0 -0
  117. package/src/generators/preset/files/assets/icons/dark/.gitkeep +0 -0
  118. package/src/generators/preset/files/assets/icons/light/.gitkeep +0 -0
  119. package/src/generators/preset/files/assets/logos/.gitkeep +0 -0
  120. package/src/generators/preset/files/docs/api-reference/.gitkeep +0 -0
  121. package/src/generators/preset/generator.spec.ts +20 -0
  122. package/src/generators/preset/generator.ts +315 -0
  123. package/src/generators/preset/untyped.ts +88 -0
  124. package/src/generators/release-version/generator.spec.ts +20 -0
  125. package/src/generators/release-version/generator.ts +920 -0
  126. package/src/generators/release-version/untyped.ts +156 -0
  127. package/src/plugins/rust/cargo-toml.ts +434 -0
  128. package/src/plugins/rust/index.ts +1 -0
  129. package/src/plugins/typescript/index.ts +1 -0
  130. package/src/plugins/typescript/project-config.ts +564 -0
  131. package/src/plugins/typescript/tsup.ts +198 -0
  132. package/src/types.ts +130 -0
  133. package/src/utils/apply-workspace-tokens.ts +73 -0
  134. package/src/utils/cargo.ts +219 -0
  135. package/src/utils/create-cli-options.ts +23 -0
  136. package/src/utils/get-project-configurations.ts +27 -0
  137. package/src/utils/index.ts +12 -0
  138. package/src/utils/lock-file.ts +159 -0
  139. package/src/utils/package-helpers.ts +54 -0
  140. package/src/utils/plugin-helpers.ts +112 -0
  141. package/src/utils/pnpm-deps-update.ts +111 -0
  142. package/src/utils/project-tags.ts +162 -0
  143. package/src/utils/toml.ts +204 -0
  144. package/src/utils/typia-transform.ts +8 -0
  145. package/src/utils/versions.ts +19 -0
  146. package/tsconfig.json +30 -0
  147. package/tsup.config.ts +36 -0
  148. package/dist/chunk-62LQXZNY.js +0 -282
  149. package/dist/chunk-F3VG4R53.mjs +0 -282
  150. package/dist/src/generators/preset/files/LICENSE +0 -201
  151. package/docs/api/base/base-executor.schema.md +0 -16
  152. package/docs/api/base/base-generator.schema.md +0 -15
  153. package/docs/api/base/cargo-base-executor.schema.md +0 -90
  154. package/docs/api/base/typescript-build-executor.schema.md +0 -126
  155. package/docs/api/base/typescript-library-generator.schema.md +0 -129
  156. package/docs/api/executors/cargo-build/schema.md +0 -89
  157. package/docs/api/executors/cargo-check/schema.md +0 -90
  158. package/docs/api/executors/cargo-clippy/schema.md +0 -99
  159. package/docs/api/executors/cargo-doc/schema.md +0 -130
  160. package/docs/api/executors/cargo-format/schema.md +0 -90
  161. package/docs/api/executors/cargo-publish/schema.md +0 -117
  162. package/docs/api/executors/clean-package/schema.md +0 -65
  163. package/docs/api/executors/esbuild/schema.md +0 -126
  164. package/docs/api/executors/npm-publish/schema.md +0 -64
  165. package/docs/api/executors/size-limit/schema.md +0 -25
  166. package/docs/api/executors/typia/schema.md +0 -46
  167. package/docs/api/executors/unbuild/schema.md +0 -222
  168. package/docs/api/generators/browser-library/files/README.md +0 -58
  169. package/docs/api/generators/browser-library/schema.md +0 -129
  170. package/docs/api/generators/config-schema/schema.md +0 -25
  171. package/docs/api/generators/init/schema.md +0 -15
  172. package/docs/api/generators/neutral-library/files/README.md +0 -58
  173. package/docs/api/generators/neutral-library/schema.md +0 -129
  174. package/docs/api/generators/node-library/files/README.md +0 -63
  175. package/docs/api/generators/node-library/schema.md +0 -129
  176. package/docs/api/generators/preset/schema.md +0 -110
  177. package/docs/api/generators/release-version/schema.md +0 -160
  178. /package/{dist/src → src}/base/base-executor.schema.d.ts +0 -0
  179. /package/{dist/src → src}/base/base-executor.schema.json +0 -0
  180. /package/{dist/src → src}/base/base-executor.schema.md +0 -0
  181. /package/{dist/src → src}/base/base-generator.schema.d.ts +0 -0
  182. /package/{dist/src → src}/base/base-generator.schema.json +0 -0
  183. /package/{dist/src → src}/base/base-generator.schema.md +0 -0
  184. /package/{dist/src → src}/base/cargo-base-executor.schema.d.ts +0 -0
  185. /package/{dist/src → src}/base/cargo-base-executor.schema.json +0 -0
  186. /package/{dist/src → src}/base/cargo-base-executor.schema.md +0 -0
  187. /package/{dist/src → src}/base/typescript-build-executor.schema.d.ts +0 -0
  188. /package/{dist/src → src}/base/typescript-build-executor.schema.json +0 -0
  189. /package/{dist/src → src}/base/typescript-build-executor.schema.md +0 -0
  190. /package/{dist/src → src}/base/typescript-library-generator.schema.d.ts +0 -0
  191. /package/{dist/src → src}/base/typescript-library-generator.schema.json +0 -0
  192. /package/{dist/src → src}/base/typescript-library-generator.schema.md +0 -0
  193. /package/{dist/src → src}/executors/cargo-build/schema.d.ts +0 -0
  194. /package/{dist/src → src}/executors/cargo-build/schema.json +0 -0
  195. /package/{dist/src → src}/executors/cargo-build/schema.md +0 -0
  196. /package/{dist/src → src}/executors/cargo-check/schema.d.ts +0 -0
  197. /package/{dist/src → src}/executors/cargo-check/schema.json +0 -0
  198. /package/{dist/src → src}/executors/cargo-check/schema.md +0 -0
  199. /package/{dist/src → src}/executors/cargo-clippy/schema.d.ts +0 -0
  200. /package/{dist/src → src}/executors/cargo-clippy/schema.json +0 -0
  201. /package/{dist/src → src}/executors/cargo-clippy/schema.md +0 -0
  202. /package/{dist/src → src}/executors/cargo-doc/schema.d.ts +0 -0
  203. /package/{dist/src → src}/executors/cargo-doc/schema.json +0 -0
  204. /package/{dist/src → src}/executors/cargo-doc/schema.md +0 -0
  205. /package/{dist/src → src}/executors/cargo-format/schema.d.ts +0 -0
  206. /package/{dist/src → src}/executors/cargo-format/schema.json +0 -0
  207. /package/{dist/src → src}/executors/cargo-format/schema.md +0 -0
  208. /package/{dist/src → src}/executors/cargo-publish/schema.d.ts +0 -0
  209. /package/{dist/src → src}/executors/cargo-publish/schema.json +0 -0
  210. /package/{dist/src → src}/executors/cargo-publish/schema.md +0 -0
  211. /package/{dist/src → src}/executors/clean-package/schema.d.ts +0 -0
  212. /package/{dist/src → src}/executors/clean-package/schema.json +0 -0
  213. /package/{dist/src → src}/executors/clean-package/schema.md +0 -0
  214. /package/{dist/src → src}/executors/esbuild/schema.d.ts +0 -0
  215. /package/{dist/src → src}/executors/esbuild/schema.json +0 -0
  216. /package/{dist/src → src}/executors/esbuild/schema.md +0 -0
  217. /package/{dist/src → src}/executors/npm-publish/schema.d.ts +0 -0
  218. /package/{dist/src → src}/executors/npm-publish/schema.json +0 -0
  219. /package/{dist/src → src}/executors/npm-publish/schema.md +0 -0
  220. /package/{dist/src → src}/executors/size-limit/schema.d.ts +0 -0
  221. /package/{dist/src → src}/executors/size-limit/schema.json +0 -0
  222. /package/{dist/src → src}/executors/size-limit/schema.md +0 -0
  223. /package/{dist/src → src}/executors/typia/schema.d.ts +0 -0
  224. /package/{dist/src → src}/executors/typia/schema.json +0 -0
  225. /package/{dist/src → src}/executors/typia/schema.md +0 -0
  226. /package/{dist/src → src}/executors/unbuild/schema.d.ts +0 -0
  227. /package/{dist/src → src}/executors/unbuild/schema.json +0 -0
  228. /package/{dist/src → src}/executors/unbuild/schema.md +0 -0
  229. /package/{dist/src → src}/generators/browser-library/files/README.md +0 -0
  230. /package/{dist/src → src}/generators/browser-library/files/jest.config.ts +0 -0
  231. /package/{dist/src → src}/generators/browser-library/files/src/index.ts.template +0 -0
  232. /package/{dist/src → src}/generators/browser-library/files/tsconfig.spec.json +0 -0
  233. /package/{dist/src → src}/generators/browser-library/schema.d.ts +0 -0
  234. /package/{dist/src → src}/generators/browser-library/schema.json +0 -0
  235. /package/{dist/src → src}/generators/browser-library/schema.md +0 -0
  236. /package/{dist/src → src}/generators/config-schema/schema.d.ts +0 -0
  237. /package/{dist/src → src}/generators/config-schema/schema.json +0 -0
  238. /package/{dist/src → src}/generators/config-schema/schema.md +0 -0
  239. /package/{dist/src → src}/generators/init/schema.d.ts +0 -0
  240. /package/{dist/src → src}/generators/init/schema.json +0 -0
  241. /package/{dist/src → src}/generators/init/schema.md +0 -0
  242. /package/{dist/src → src}/generators/neutral-library/files/README.md +0 -0
  243. /package/{dist/src → src}/generators/neutral-library/files/jest.config.ts +0 -0
  244. /package/{dist/src → src}/generators/neutral-library/files/src/index.ts.template +0 -0
  245. /package/{dist/src → src}/generators/neutral-library/files/tsconfig.spec.json +0 -0
  246. /package/{dist/src → src}/generators/neutral-library/schema.d.ts +0 -0
  247. /package/{dist/src → src}/generators/neutral-library/schema.json +0 -0
  248. /package/{dist/src → src}/generators/neutral-library/schema.md +0 -0
  249. /package/{dist/src → src}/generators/node-library/files/README.md +0 -0
  250. /package/{dist/src → src}/generators/node-library/files/jest.config.ts +0 -0
  251. /package/{dist/src → src}/generators/node-library/files/src/index.ts.template +0 -0
  252. /package/{dist/src → src}/generators/node-library/files/tsconfig.spec.json +0 -0
  253. /package/{dist/src → src}/generators/node-library/schema.d.ts +0 -0
  254. /package/{dist/src → src}/generators/node-library/schema.json +0 -0
  255. /package/{dist/src → src}/generators/node-library/schema.md +0 -0
  256. /package/{LICENSE → src/generators/preset/files/LICENSE} +0 -0
  257. /package/{dist/src → src}/generators/preset/files/README.md.template +0 -0
  258. /package/{dist/src → src}/generators/preset/files/docs/readme-templates/README.footer.md.template +0 -0
  259. /package/{dist/src → src}/generators/preset/files/docs/readme-templates/README.header.md.template +0 -0
  260. /package/{dist/src → src}/generators/preset/files/eslint.config.js.template +0 -0
  261. /package/{dist/src → src}/generators/preset/files/knip.json +0 -0
  262. /package/{dist/src → src}/generators/preset/files/lefthook.json +0 -0
  263. /package/{dist/src → src}/generators/preset/files/nx.json +0 -0
  264. /package/{dist/src → src}/generators/preset/files/pnpm-workspace.yaml +0 -0
  265. /package/{dist/src → src}/generators/preset/files/socket.yaml +0 -0
  266. /package/{dist/src → src}/generators/preset/files/storm.json.template +0 -0
  267. /package/{dist/src → src}/generators/preset/files/tsconfig.base.json.template +0 -0
  268. /package/{dist/src → src}/generators/preset/schema.d.ts +0 -0
  269. /package/{dist/src → src}/generators/preset/schema.json +0 -0
  270. /package/{dist/src → src}/generators/preset/schema.md +0 -0
  271. /package/{dist/src → src}/generators/release-version/schema.d.ts +0 -0
  272. /package/{dist/src → src}/generators/release-version/schema.json +0 -0
  273. /package/{dist/src → src}/generators/release-version/schema.md +0 -0
  274. /package/{dist/src → src}/plugins/typescript/untyped-schema.ts +0 -0
@@ -0,0 +1,28 @@
1
+ import { ExecutorContext, PromiseExecutor } from "@nx/devkit";
2
+ import { withRunExecutor } from "../../base/base-executor";
3
+ import { buildCargoCommand, cargoCommand } from "../../utils/cargo";
4
+ import { CargoBuildExecutorSchema } from "./schema.d";
5
+
6
+ export async function cargoBuildExecutor(
7
+ options: CargoBuildExecutorSchema,
8
+ context: ExecutorContext,
9
+ ) {
10
+ const command = buildCargoCommand("build", options, context);
11
+ return await cargoCommand(...command);
12
+ }
13
+
14
+ export default withRunExecutor<CargoBuildExecutorSchema>(
15
+ "Cargo Build",
16
+ cargoBuildExecutor,
17
+ {
18
+ skipReadingConfig: false,
19
+ hooks: {
20
+ applyDefaultOptions: (options: CargoBuildExecutorSchema) => {
21
+ options.outputPath ??= "dist/target/{projectRoot}";
22
+ options.toolchain ??= "stable";
23
+
24
+ return options as CargoBuildExecutorSchema;
25
+ },
26
+ },
27
+ },
28
+ ) as PromiseExecutor<CargoBuildExecutorSchema>;
@@ -0,0 +1,18 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import cargoBaseExecutorSchema from "../../base/cargo-base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...cargoBaseExecutorSchema,
6
+ $schema: {
7
+ id: "CargoBuildExecutorSchema",
8
+ title: "Cargo Build Executor",
9
+ description: "A type definition for a Cargo/rust build executor schema",
10
+ },
11
+ outputPath: {
12
+ $schema: {
13
+ title: "Output Path",
14
+ type: "string",
15
+ description: "The path to the output directory",
16
+ },
17
+ },
18
+ });
@@ -0,0 +1,18 @@
1
+ import { ExecutorContext } from "@nx/devkit";
2
+
3
+ import executor from "./executor";
4
+ import { CargoCheckExecutorSchema } from "./schema.d";
5
+
6
+ const options: CargoCheckExecutorSchema = {};
7
+ const context: ExecutorContext = {
8
+ root: "",
9
+ cwd: process.cwd(),
10
+ isVerbose: false,
11
+ };
12
+
13
+ describe("CargoCheck Executor", () => {
14
+ it("can run", async () => {
15
+ const output = await executor(options, context);
16
+ expect(output.success).toBe(true);
17
+ });
18
+ });
@@ -0,0 +1,27 @@
1
+ import { ExecutorContext, PromiseExecutor } from "@nx/devkit";
2
+ import { withRunExecutor } from "../../base/base-executor";
3
+ import { buildCargoCommand, cargoCommand } from "../../utils/cargo";
4
+ import { CargoCheckExecutorSchema } from "./schema.d";
5
+
6
+ export async function cargoCheckExecutor(
7
+ options: CargoCheckExecutorSchema,
8
+ context: ExecutorContext,
9
+ ) {
10
+ const command = buildCargoCommand("check", options, context);
11
+ return await cargoCommand(...command);
12
+ }
13
+
14
+ export default withRunExecutor<CargoCheckExecutorSchema>(
15
+ "Cargo Check",
16
+ cargoCheckExecutor,
17
+ {
18
+ skipReadingConfig: false,
19
+ hooks: {
20
+ applyDefaultOptions: (options: CargoCheckExecutorSchema) => {
21
+ options.toolchain ??= "stable";
22
+
23
+ return options as CargoCheckExecutorSchema;
24
+ },
25
+ },
26
+ },
27
+ ) as PromiseExecutor<CargoCheckExecutorSchema>;
@@ -0,0 +1,11 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import cargoBaseExecutorSchema from "../../base/cargo-base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...cargoBaseExecutorSchema,
6
+ $schema: {
7
+ id: "CargoCheckExecutorSchema",
8
+ title: "Cargo Check Executor",
9
+ description: "A type definition for a Cargo/rust check executor schema",
10
+ },
11
+ });
@@ -0,0 +1,18 @@
1
+ import { ExecutorContext } from "@nx/devkit";
2
+
3
+ import executor from "./executor";
4
+ import { CargoCheckExecutorSchema } from "./schema.d";
5
+
6
+ const options: CargoCheckExecutorSchema = {};
7
+ const context: ExecutorContext = {
8
+ root: "",
9
+ cwd: process.cwd(),
10
+ isVerbose: false,
11
+ };
12
+
13
+ describe("CargoCheck Executor", () => {
14
+ it("can run", async () => {
15
+ const output = await executor(options, context);
16
+ expect(output.success).toBe(true);
17
+ });
18
+ });
@@ -0,0 +1,28 @@
1
+ import { ExecutorContext, PromiseExecutor } from "@nx/devkit";
2
+ import { withRunExecutor } from "../../base/base-executor";
3
+ import { buildCargoCommand, cargoCommand } from "../../utils/cargo";
4
+ import { CargoClippyExecutorSchema } from "./schema.d";
5
+
6
+ export async function cargoClippyExecutor(
7
+ options: CargoClippyExecutorSchema,
8
+ context: ExecutorContext,
9
+ ) {
10
+ const command = buildCargoCommand("clippy", options, context);
11
+ return await cargoCommand(...command);
12
+ }
13
+
14
+ export default withRunExecutor<CargoClippyExecutorSchema>(
15
+ "Cargo Clippy",
16
+ cargoClippyExecutor,
17
+ {
18
+ skipReadingConfig: false,
19
+ hooks: {
20
+ applyDefaultOptions: (options: CargoClippyExecutorSchema) => {
21
+ options.toolchain ??= "stable";
22
+ options.fix ??= false;
23
+
24
+ return options as CargoClippyExecutorSchema;
25
+ },
26
+ },
27
+ },
28
+ ) as PromiseExecutor<CargoClippyExecutorSchema>;
@@ -0,0 +1,18 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import cargoBaseExecutorSchema from "../../base/cargo-base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...cargoBaseExecutorSchema,
6
+ $schema: {
7
+ id: "CargoClippyExecutorSchema",
8
+ title: "Cargo Clippy Executor",
9
+ description: "A type definition for a Cargo/rust clippy executor schema",
10
+ },
11
+ fix: {
12
+ $schema: {
13
+ title: "Fix",
14
+ type: "boolean",
15
+ description: "Automatically fix issues",
16
+ },
17
+ },
18
+ });
@@ -0,0 +1,18 @@
1
+ import { ExecutorContext } from "@nx/devkit";
2
+
3
+ import executor from "./executor";
4
+ import { CargoDocExecutorSchema } from "./schema.d";
5
+
6
+ const options: CargoDocExecutorSchema = {};
7
+ const context: ExecutorContext = {
8
+ root: "",
9
+ cwd: process.cwd(),
10
+ isVerbose: false,
11
+ };
12
+
13
+ describe("CargoDoc Executor", () => {
14
+ it("can run", async () => {
15
+ const output = await executor(options, context);
16
+ expect(output.success).toBe(true);
17
+ });
18
+ });
@@ -0,0 +1,39 @@
1
+ import { ExecutorContext, PromiseExecutor } from "@nx/devkit";
2
+ import { withRunExecutor } from "../../base/base-executor";
3
+ import { buildCargoCommand, cargoCommand } from "../../utils/cargo";
4
+ import { CargoDocExecutorSchema } from "./schema.d";
5
+
6
+ export async function cargoDocExecutor(
7
+ options: CargoDocExecutorSchema,
8
+ context: ExecutorContext,
9
+ ) {
10
+ const opts = { ...options };
11
+
12
+ opts["no-deps"] = opts.noDeps;
13
+ delete opts.noDeps;
14
+
15
+ const command = buildCargoCommand("doc", options, context);
16
+ return await cargoCommand(...command);
17
+ }
18
+
19
+ export default withRunExecutor<CargoDocExecutorSchema>(
20
+ "Cargo Doc",
21
+ cargoDocExecutor,
22
+ {
23
+ skipReadingConfig: false,
24
+ hooks: {
25
+ applyDefaultOptions: (options: CargoDocExecutorSchema) => {
26
+ options.outputPath ??= "dist/docs/{projectRoot}";
27
+ options.toolchain ??= "stable";
28
+ options.release ??= options.profile ? false : true;
29
+ options.allFeatures ??= true;
30
+ options.lib ??= true;
31
+ options.bins ??= true;
32
+ options.examples ??= true;
33
+ options.noDeps ??= false;
34
+
35
+ return options as CargoDocExecutorSchema;
36
+ },
37
+ },
38
+ },
39
+ ) as PromiseExecutor<CargoDocExecutorSchema>;
@@ -0,0 +1,44 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import cargoBaseExecutorSchema from "../../base/cargo-base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...cargoBaseExecutorSchema,
6
+ $schema: {
7
+ id: "CargoDocExecutorSchema",
8
+ title: "Cargo Doc Executor",
9
+ description:
10
+ "A type definition for a Cargo/rust documentation executor schema",
11
+ },
12
+ lib: {
13
+ $schema: {
14
+ title: "Library",
15
+ type: "boolean",
16
+ description: "Generate documentation for the library",
17
+ },
18
+ default: true,
19
+ },
20
+ bins: {
21
+ $schema: {
22
+ title: "Bins",
23
+ type: "boolean",
24
+ description: "Generate documentation for the bins",
25
+ },
26
+ default: true,
27
+ },
28
+ examples: {
29
+ $schema: {
30
+ title: "Examples",
31
+ type: "boolean",
32
+ description: "Generate documentation for the examples",
33
+ },
34
+ default: true,
35
+ },
36
+ noDeps: {
37
+ $schema: {
38
+ title: "No Dependencies",
39
+ type: "boolean",
40
+ description: "Do not generate documentation for dependencies",
41
+ },
42
+ default: false,
43
+ },
44
+ });
@@ -0,0 +1,18 @@
1
+ import { ExecutorContext } from "@nx/devkit";
2
+
3
+ import executor from "./executor";
4
+ import { CargoCheckExecutorSchema } from "./schema.d";
5
+
6
+ const options: CargoCheckExecutorSchema = {};
7
+ const context: ExecutorContext = {
8
+ root: "",
9
+ cwd: process.cwd(),
10
+ isVerbose: false,
11
+ };
12
+
13
+ describe("CargoCheck Executor", () => {
14
+ it("can run", async () => {
15
+ const output = await executor(options, context);
16
+ expect(output.success).toBe(true);
17
+ });
18
+ });
@@ -0,0 +1,28 @@
1
+ import { ExecutorContext, PromiseExecutor } from "@nx/devkit";
2
+ import { withRunExecutor } from "../../base/base-executor";
3
+ import { buildCargoCommand, cargoCommand } from "../../utils/cargo";
4
+ import { CargoFormatExecutorSchema } from "./schema.d";
5
+
6
+ export async function cargoFormatExecutor(
7
+ options: CargoFormatExecutorSchema,
8
+ context: ExecutorContext,
9
+ ) {
10
+ const command = buildCargoCommand("fmt", options, context);
11
+ return await cargoCommand(...command);
12
+ }
13
+
14
+ export default withRunExecutor<CargoFormatExecutorSchema>(
15
+ "Cargo Format",
16
+ cargoFormatExecutor,
17
+ {
18
+ skipReadingConfig: false,
19
+ hooks: {
20
+ applyDefaultOptions: (options: CargoFormatExecutorSchema) => {
21
+ options.outputPath ??= "dist/target/{projectRoot}";
22
+ options.toolchain ??= "stable";
23
+
24
+ return options as CargoFormatExecutorSchema;
25
+ },
26
+ },
27
+ },
28
+ ) as PromiseExecutor<CargoFormatExecutorSchema>;
@@ -0,0 +1,11 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import cargoBaseExecutorSchema from "../../base/cargo-base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...cargoBaseExecutorSchema,
6
+ $schema: {
7
+ id: "CargoFormatExecutorSchema",
8
+ title: "Cargo Format Executor",
9
+ description: "A type definition for a Cargo/rust format executor schema",
10
+ },
11
+ });
@@ -0,0 +1,11 @@
1
+ // import { CargoReleasePublishExecutorSchema } from "./schema.d";
2
+ // import executor from "./executor";
3
+
4
+ // const options: CargoReleasePublishExecutorSchema = {};
5
+
6
+ // describe("CargoReleasePublish Executor", () => {
7
+ // it("can run", async () => {
8
+ // const output = await executor(options);
9
+ // expect(output.success).toBe(true);
10
+ // });
11
+ // });
@@ -0,0 +1,139 @@
1
+ import { type ExecutorContext, joinPathFragments } from "@nx/devkit";
2
+ import { execSync } from "node:child_process";
3
+ import { readFileSync } from "node:fs";
4
+ import https from "node:https";
5
+ import { parseCargoToml } from "../../utils/toml";
6
+ import type { CargoPublishExecutorSchema } from "./schema.d";
7
+
8
+ const LARGE_BUFFER = 1024 * 1000000;
9
+
10
+ export default async function runExecutor(
11
+ options: CargoPublishExecutorSchema,
12
+ context: ExecutorContext,
13
+ ) {
14
+ /**
15
+ * We need to check both the env var and the option because the executor may have been triggered
16
+ * indirectly via dependsOn, in which case the env var will be set, but the option will not.
17
+ */
18
+ const isDryRun = process.env.NX_DRY_RUN === "true" || options.dryRun || false;
19
+
20
+ if (!context.projectName) {
21
+ throw new Error("The executor requires a projectName.");
22
+ }
23
+
24
+ console.info(
25
+ `🚀 Running Storm Cargo Publish executor on the ${context.projectName} crate`,
26
+ );
27
+
28
+ if (
29
+ !context.projectName ||
30
+ !context.projectsConfigurations?.projects ||
31
+ !context.projectsConfigurations.projects[context.projectName] ||
32
+ !context.projectsConfigurations.projects[context.projectName]?.root
33
+ ) {
34
+ throw new Error("The executor requires projectsConfigurations.");
35
+ }
36
+
37
+ const registry = options.registry
38
+ ? options.registry
39
+ : process.env.STORM_REGISTRY_CARGO
40
+ ? process.env.STORM_REGISTRY_CARGO
41
+ : "https://crates.io";
42
+
43
+ const root =
44
+ context.projectsConfigurations.projects[context.projectName]?.root;
45
+ const packageRoot = joinPathFragments(
46
+ context.root,
47
+ (options.packageRoot ? options.packageRoot : root) as string,
48
+ );
49
+
50
+ const cargoToml = parseCargoToml(
51
+ readFileSync(joinPathFragments(packageRoot, "Cargo.toml"), "utf-8"),
52
+ );
53
+
54
+ try {
55
+ const result = await getRegistryVersion(
56
+ cargoToml.package.name,
57
+ cargoToml.package.version,
58
+ registry,
59
+ );
60
+ if (result) {
61
+ console.warn(
62
+ `Skipped package "${cargoToml.package.name}" from project "${context.projectName}" because v${cargoToml.package.version} already exists in ${registry} with tag "latest"`,
63
+ );
64
+
65
+ return {
66
+ success: true,
67
+ };
68
+ }
69
+ } catch (_: any) {
70
+ // Do nothing
71
+ }
72
+
73
+ const cargoPublishCommandSegments = [
74
+ `cargo publish --allow-dirty -p ${cargoToml.package.name}`,
75
+ ];
76
+ if (isDryRun) {
77
+ cargoPublishCommandSegments.push("--dry-run");
78
+ }
79
+
80
+ try {
81
+ const cargoPublishCommand = cargoPublishCommandSegments.join(" ");
82
+ console.log("");
83
+ console.log(`Running "${cargoPublishCommand}"...`);
84
+ console.log("");
85
+
86
+ execSync(cargoPublishCommand, {
87
+ maxBuffer: LARGE_BUFFER,
88
+ env: {
89
+ ...process.env,
90
+ FORCE_COLOR: "true",
91
+ },
92
+ cwd: packageRoot,
93
+ stdio: ["ignore", "pipe", "pipe"],
94
+ });
95
+
96
+ console.log("");
97
+
98
+ if (isDryRun) {
99
+ console.log(`Would publish to ${registry}, but [dry-run] was set`);
100
+ } else {
101
+ console.log(`Published to ${registry}`);
102
+ }
103
+
104
+ return {
105
+ success: true,
106
+ };
107
+ } catch (error: any) {
108
+ console.error(`Failed to publish to ${registry}`);
109
+ console.error(error);
110
+ console.log("");
111
+
112
+ return {
113
+ success: false,
114
+ };
115
+ }
116
+ }
117
+
118
+ export const getRegistryVersion = (
119
+ name: string,
120
+ version: string,
121
+ registry: string,
122
+ ): Promise<string> => {
123
+ return new Promise((resolve: (value: string) => void) =>
124
+ https
125
+ .get(
126
+ `${registry}/api/v1/crates/${encodeURIComponent(name)}/${encodeURIComponent(
127
+ version,
128
+ )}`,
129
+ (res) => {
130
+ res.on("data", (d) => {
131
+ resolve(d);
132
+ });
133
+ },
134
+ )
135
+ .on("error", (e) => {
136
+ throw e;
137
+ }),
138
+ );
139
+ };
@@ -0,0 +1,33 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import cargoBaseExecutorSchema from "../../base/cargo-base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...cargoBaseExecutorSchema,
6
+ $schema: {
7
+ id: "CargoPublishExecutorSchema",
8
+ title: "Cargo Publish Executor",
9
+ description: "A type definition for a Cargo/rust Publish executor schema",
10
+ },
11
+ registry: {
12
+ $schema: {
13
+ title: "Registry",
14
+ type: "string",
15
+ description: "The registry to publish to",
16
+ },
17
+ },
18
+ packageRoot: {
19
+ $schema: {
20
+ title: "Package Root",
21
+ type: "string",
22
+ format: "path",
23
+ description: "The path to the package root",
24
+ },
25
+ },
26
+ dryRun: {
27
+ $schema: {
28
+ title: "Dry Run",
29
+ type: "boolean",
30
+ description: "Perform a dry run",
31
+ },
32
+ },
33
+ });
@@ -0,0 +1,99 @@
1
+ export const IGNORE_FILES = [
2
+ ".circleci",
3
+ ".DS_Store",
4
+ ".editorconfig",
5
+ ".eslintignore",
6
+ ".flowconfig",
7
+ ".git",
8
+ ".github",
9
+ ".travis.yml",
10
+ ".vscode",
11
+ ".watchmanconfig",
12
+ ".yarnrc",
13
+ "appveyor.yml",
14
+ "karma.conf.js",
15
+ "node_modules",
16
+ "package-lock.json",
17
+ "pnpm-debug.log",
18
+ "pnpm-lock.yaml",
19
+ ".devcontainer.json",
20
+ "test",
21
+ "yarn-error.log",
22
+ "yarn.lock",
23
+ /^(babel|commitlint|jest|vitest)\.config\.[cm]?(j|t)s$/,
24
+ /^\.?nano-staged\.(c|m)?js(on)?$/,
25
+ /^\.?simple-git-hooks.js(on)?$/,
26
+ /^\.?simple-pre-commit.js(on)?$/,
27
+ /^\.babelrc/,
28
+ /^\.clean-publish/,
29
+ /^\.commitlintrc/,
30
+ /^\.eslintrc/,
31
+ /^\.jsconfig/,
32
+ /^\.jsdocrc/,
33
+ /^\.lintstagedrc/,
34
+ /^\.nanostagedrc/,
35
+ /^\.prettierrc/,
36
+ /^\.remarkrc/,
37
+ /^\.renovaterc/,
38
+ /^\.size-limit/,
39
+ /^\.yaspellerrc/,
40
+ /^changelog/i,
41
+ /eslint.config.(c|m)?js/,
42
+ /README\.[\w-]+\.md/,
43
+ ];
44
+
45
+ export const IGNORE_FIELDS = [
46
+ "babel",
47
+ "browserslist",
48
+ "c8",
49
+ "clean-publish",
50
+ "commitlint",
51
+ "devDependencies",
52
+ "eslintConfig",
53
+ "eslintIgnore",
54
+ "husky",
55
+ "jest",
56
+ "lint-staged",
57
+ "nano-staged",
58
+ "pre-commit",
59
+ "prettier",
60
+ "pwmetrics",
61
+ "remarkConfig",
62
+ "renovate",
63
+ "resolutions",
64
+ "sharec",
65
+ "simple-git-hooks",
66
+ "simple-pre-commit",
67
+ "size-limit",
68
+ "typeCoverage",
69
+ "yaspeller",
70
+ ];
71
+
72
+ export const NPM_SCRIPTS = [
73
+ "postinstall",
74
+ "postpack",
75
+ "postpublish",
76
+ "postversion",
77
+ "prepublish",
78
+ "publish",
79
+ "uninstall",
80
+ "version",
81
+ ];
82
+
83
+ // https://pnpm.io/package_json#publishconfig
84
+ export const PUBLISH_CONFIG_FIELDS = [
85
+ "bin",
86
+ "main",
87
+ "exports",
88
+ "types",
89
+ "typings",
90
+ "module",
91
+ "browser",
92
+ "esnext",
93
+ "es2015",
94
+ "unpkg",
95
+ "umd:main",
96
+ "typesVersions",
97
+ "cpu",
98
+ "os",
99
+ ];
@@ -0,0 +1,18 @@
1
+ import { ExecutorContext } from "@nx/devkit";
2
+
3
+ import executor from "./executor";
4
+ import { CleanPublishExecutorSchema } from "./schema.d";
5
+
6
+ const options: CleanPublishExecutorSchema = {};
7
+ const context: ExecutorContext = {
8
+ root: "",
9
+ cwd: process.cwd(),
10
+ isVerbose: false,
11
+ };
12
+
13
+ describe("CleanPublish Executor", () => {
14
+ it("can run", async () => {
15
+ const output = await executor(options, context);
16
+ expect(output.success).toBe(true);
17
+ });
18
+ });