@fairgarden/distribution 0.1.0-alpha.1 → 0.1.0-alpha.3

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 (63) hide show
  1. package/Readme.md +3 -3
  2. package/dist/add-module.d.ts +4 -0
  3. package/dist/add-module.d.ts.map +1 -1
  4. package/dist/add-module.js +29 -0
  5. package/dist/add-module.js.map +1 -1
  6. package/dist/calver.d.ts +65 -0
  7. package/dist/calver.d.ts.map +1 -0
  8. package/dist/calver.js +115 -0
  9. package/dist/calver.js.map +1 -0
  10. package/dist/canary.d.ts.map +1 -1
  11. package/dist/canary.js +15 -2
  12. package/dist/canary.js.map +1 -1
  13. package/dist/changelog.d.ts +153 -0
  14. package/dist/changelog.d.ts.map +1 -0
  15. package/dist/changelog.js +359 -0
  16. package/dist/changelog.js.map +1 -0
  17. package/dist/cli.js +356 -12
  18. package/dist/cli.js.map +1 -1
  19. package/dist/extends.d.ts +3 -2
  20. package/dist/extends.d.ts.map +1 -1
  21. package/dist/extends.js +12 -2
  22. package/dist/extends.js.map +1 -1
  23. package/dist/forks.d.ts +116 -0
  24. package/dist/forks.d.ts.map +1 -0
  25. package/dist/forks.js +357 -0
  26. package/dist/forks.js.map +1 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/inherit.d.ts +18 -0
  32. package/dist/inherit.d.ts.map +1 -0
  33. package/dist/inherit.js +84 -0
  34. package/dist/inherit.js.map +1 -0
  35. package/dist/manifest.d.ts +43 -0
  36. package/dist/manifest.d.ts.map +1 -0
  37. package/dist/manifest.js +64 -0
  38. package/dist/manifest.js.map +1 -0
  39. package/dist/policy.d.ts +5 -1
  40. package/dist/policy.d.ts.map +1 -1
  41. package/dist/policy.js +14 -6
  42. package/dist/policy.js.map +1 -1
  43. package/dist/readme.d.ts +2 -0
  44. package/dist/readme.d.ts.map +1 -1
  45. package/dist/readme.js +6 -1
  46. package/dist/readme.js.map +1 -1
  47. package/dist/release.d.ts +37 -1
  48. package/dist/release.d.ts.map +1 -1
  49. package/dist/release.js +107 -7
  50. package/dist/release.js.map +1 -1
  51. package/dist/scaffold.d.ts +3 -5
  52. package/dist/scaffold.d.ts.map +1 -1
  53. package/dist/scaffold.js +116 -64
  54. package/dist/scaffold.js.map +1 -1
  55. package/dist/submodules.d.ts +49 -0
  56. package/dist/submodules.d.ts.map +1 -1
  57. package/dist/submodules.js +94 -4
  58. package/dist/submodules.js.map +1 -1
  59. package/dist/workflows.d.ts +46 -1
  60. package/dist/workflows.d.ts.map +1 -1
  61. package/dist/workflows.js +401 -20
  62. package/dist/workflows.js.map +1 -1
  63. package/package.json +14 -12
@@ -8,6 +8,28 @@ import type { Files } from './scaffold.ts';
8
8
  * with a trusted publisher pointing at this repository and this file.
9
9
  */
10
10
  export declare const publishWorkflow: (packageName: string) => Files;
11
+ /**
12
+ * The publishing workflow a distribution carries, for others to extend it.
13
+ *
14
+ * The same shape as a module's — a canary on every push to main, a release by
15
+ * hand — but checked out with its submodules, since `fg-dist canary` and
16
+ * `release --check` record every module's version, path, repository and
17
+ * commit in the manifest they publish. That is what an extension checks
18
+ * itself against and takes its own modules from.
19
+ */
20
+ export declare const distributionWorkflow: (packageName: string) => Files;
21
+ /**
22
+ * The pull request check that keeps a changelog current.
23
+ *
24
+ * Every pull request has to add a line linking itself under the version being
25
+ * worked on — or, in a distribution, every one that changes the
26
+ * organization's policy — so a release's notes are written, and committed,
27
+ * before it is released. A distribution is checked out with its submodules,
28
+ * without which its workspace does not install.
29
+ */
30
+ export declare const changelogWorkflow: ({ submodules }: {
31
+ submodules: boolean;
32
+ }) => Files;
11
33
  export interface WorkflowUpdate {
12
34
  relativePath: string;
13
35
  files: string[];
@@ -50,8 +72,31 @@ export declare const updateManifest: (moduleRoot: string, packageName: string, v
50
72
  * A module that already has one is left alone: it may have been changed on
51
73
  * purpose, and overwriting it would be the kind of help nobody asked for.
52
74
  */
53
- export declare const writeWorkflows: (root: string, { force, dryRun }?: {
75
+ export declare const writeWorkflows: (root: string, { force, dryRun, names, }?: {
54
76
  force?: boolean;
55
77
  dryRun?: boolean;
78
+ /** Only these modules, by name or path; every one when empty. */
79
+ names?: string[];
56
80
  }) => Promise<WorkflowUpdate[]>;
81
+ /**
82
+ * Give the distribution itself a publishing workflow, so others can extend it.
83
+ *
84
+ * Asked for rather than done by `writeWorkflows`: it makes the distribution
85
+ * public on npm, which a distribution only its owner deploys has no need to be.
86
+ * The tarball is the manifest and the organization's policy, which is what an
87
+ * extension builds its own on.
88
+ */
89
+ export declare const writeDistributionWorkflow: (root: string, { force, dryRun }?: {
90
+ force?: boolean;
91
+ dryRun?: boolean;
92
+ }) => Promise<WorkflowUpdate>;
93
+ /**
94
+ * Give the distribution itself the changelog check, for pull requests that
95
+ * change the organization's policy — what else changes in it, fg-dist notes
96
+ * itself. Unlike its publishing, this makes nothing public.
97
+ */
98
+ export declare const writeDistributionChangelogCheck: (root: string, { force, dryRun }?: {
99
+ force?: boolean;
100
+ dryRun?: boolean;
101
+ }) => Promise<WorkflowUpdate>;
57
102
  //# sourceMappingURL=workflows.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,KAmLpD,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,+EAA+E;IAC/E,UAAU,EAAE,OAAO,CAAA;IACnB,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAA;IACrB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAA;CACvB;AA2BD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAQzE,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,aAAa,MAAM,EACnB,SAAS,MAAM,GAAG,SAAS,EAC3B,gBAAgB,MAAM,GAAG,SAAS,EAClC,YAAkB;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KACzC,OAAO,CAAC,cAAc,CA8DxB,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,oBAAmC;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,KAC5E,OAAO,CAAC,cAAc,EAAE,CAiE1B,CAAA"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,KA+MpD,CAAA;AAsCF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM,KAAG,KAoHzD,CAAA;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,gBAAgB;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,KAAG,KAoD1E,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,+EAA+E;IAC/E,UAAU,EAAE,OAAO,CAAA;IACnB,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAA;IACrB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAA;CACvB;AA2BD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CASzE,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,aAAa,MAAM,EACnB,SAAS,MAAM,GAAG,SAAS,EAC3B,gBAAgB,MAAM,GAAG,SAAS,EAClC,YAAkB;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KACzC,OAAO,CAAC,cAAc,CAyExB,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,4BAIG;IACD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACZ,KACL,OAAO,CAAC,cAAc,EAAE,CA+D1B,CAAA;AAGD;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,MAAM,EACZ,oBAAmC;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,KAC5E,OAAO,CAAC,cAAc,CA4CxB,CAAA;AAeD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,GAC1C,MAAM,MAAM,EACZ,oBAAmC;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,KAC5E,OAAO,CAAC,cAAc,CAgDxB,CAAA"}
package/dist/workflows.js CHANGED
@@ -2,8 +2,10 @@ import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
3
  import { rm } from 'node:fs/promises';
4
4
  import path from 'node:path';
5
+ import semver from 'semver';
5
6
  import { fileURLToPath } from 'node:url';
6
7
  import { submodules } from "./submodules.js";
8
+ import { CHANGELOG, newChangelog } from "./changelog.js";
7
9
  /**
8
10
  * The publishing workflow a module carries.
9
11
  *
@@ -99,6 +101,8 @@ jobs:
99
101
  permissions:
100
102
  contents: write # Required for pushing the tag and creating the release
101
103
  id-token: write # Required for provenance and trusted publishing
104
+ actions: write # Required to run open pull requests' changelog check again
105
+ pull-requests: read # Required to find them
102
106
  environment:
103
107
  name: npm-publish
104
108
  steps:
@@ -137,14 +141,29 @@ jobs:
137
141
  run: |
138
142
  git tag "\$TAG"
139
143
  git push origin "\$TAG"
140
- gh release create "\$TAG" \\
141
- --title "\$TAG" \\
142
- --generate-notes \\
143
- --verify-tag
144
+ # The notes are the changelog's section for this version, written as
145
+ # each pull request merged; GitHub's own where there is none.
146
+ if pnpm run --silent changelog notes > "\$RUNNER_TEMP/notes.md"; then
147
+ notes="--notes-file \$RUNNER_TEMP/notes.md"
148
+ else
149
+ notes="--generate-notes"
150
+ fi
151
+ gh release create "\$TAG" --title "\$TAG" \$notes --verify-tag
152
+
153
+ - name: Hold pull requests until the next version
154
+ if: inputs.dry-run != true
155
+ env:
156
+ GH_TOKEN: \${{ secrets.GITHUB_TOKEN }}
157
+ # Anything merged now would be noted under a version already out. Each
158
+ # open pull request's changelog check runs again, sees the release and
159
+ # refuses it — until \`fg-dist release\` starts the next version and the
160
+ # branch catches up with it.
161
+ run: pnpm run changelog hold
144
162
 
145
163
  - name: Summary
146
164
  run: |
147
165
  echo "Published \\\`${packageName}@\${{ steps.version.outputs.version }}\\\` to the \\\`\${{ inputs.dist-tag }}\\\` tag." >> "\$GITHUB_STEP_SUMMARY"
166
+ echo "Pull requests are held until the next version starts: run \\\`fg-dist release\\\` and merge what it opens." >> "\$GITHUB_STEP_SUMMARY"
148
167
  `,
149
168
  '.github/actions/publish-prepare/action.yml': `name: Prepare for publishing
150
169
  description: Install dependencies and build, so the package is ready to publish.
@@ -170,7 +189,18 @@ runs:
170
189
  node-version: 22
171
190
  # No \`cache: pnpm\`: it needs a lockfile to hash, and a module developed
172
191
  # inside a distribution keeps its lockfile in the distribution.
173
- registry-url: https://registry.npmjs.org
192
+ #
193
+ # No \`registry-url\` either. Given one, setup-node writes an .npmrc
194
+ # with \`_authToken=\${NODE_AUTH_TOKEN}\` and, with no token to put
195
+ # there, exports a placeholder. npm then publishes with that instead of
196
+ # exchanging the Actions OIDC token, and the registry answers
197
+ # \`E404 Not Found - PUT\`. Trusted publishing needs npm to find no
198
+ # credentials at all; npmjs.org is the default registry anyway.
199
+
200
+ # Trusted publishing needs npm 11.5.1 or later, which Node 22 does not ship.
201
+ - name: Update npm
202
+ shell: bash
203
+ run: npm install -g npm@^11.5.1
174
204
 
175
205
  - name: Install
176
206
  shell: bash
@@ -190,6 +220,227 @@ runs:
190
220
  run: pnpm run --if-present build
191
221
  `,
192
222
  });
223
+ /** Steps both of a distribution's publishing jobs start with. */
224
+ const distributionSetup = (release) => ` - name: Checkout
225
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
226
+ with:
227
+ # What it publishes is read from its modules: their versions, and
228
+ # the commits it pins.
229
+ submodules: true${release
230
+ ? '\n fetch-depth: 0 # `gh release create --generate-notes` needs history' +
231
+ '\n # Kept, to push the tag and move main on.'
232
+ : '\n persist-credentials: false'}
233
+
234
+ # No build: what a distribution publishes is its manifest and its
235
+ # policy, not its apps.
236
+ - uses: pnpm/action-setup@v4
237
+
238
+ # No \`registry-url\`, and npm new enough for trusted publishing: see
239
+ # .github/actions/publish-prepare in any module for why.
240
+ - uses: actions/setup-node@v4
241
+ with:
242
+ node-version: 22
243
+
244
+ - name: Update npm
245
+ run: npm install -g npm@^11.5.1
246
+
247
+ - name: Install
248
+ run: pnpm install --frozen-lockfile
249
+
250
+ # Only where fg-dist is developed in this workspace, as a module of the
251
+ # distribution: then it is linked from its checkout, which is not built.
252
+ # Everywhere else it is installed from npm, and this matches nothing.
253
+ - name: Build fg-dist
254
+ run: pnpm --filter @fairgarden/distribution --include-workspace-root run --if-present build
255
+ `;
256
+ /**
257
+ * The publishing workflow a distribution carries, for others to extend it.
258
+ *
259
+ * The same shape as a module's — a canary on every push to main, a release by
260
+ * hand — but checked out with its submodules, since `fg-dist canary` and
261
+ * `release --check` record every module's version, path, repository and
262
+ * commit in the manifest they publish. That is what an extension checks
263
+ * itself against and takes its own modules from.
264
+ */
265
+ export const distributionWorkflow = (packageName) => ({
266
+ '.github/workflows/publish.yml': `name: Publish
267
+
268
+ # Publishes this distribution for others to extend. As for a module, npm
269
+ # trusted publishing is configured against this one workflow file, and there is
270
+ # no npm token: publish once from a workstation, then configure it on npmjs.com.
271
+
272
+ on:
273
+ push:
274
+ branches:
275
+ - main
276
+ workflow_dispatch:
277
+ inputs:
278
+ dist-tag:
279
+ description: 'npm dist tag to publish the release to'
280
+ required: false
281
+ type: string
282
+ default: 'latest'
283
+ dry-run:
284
+ description: 'Pack and validate without publishing'
285
+ required: false
286
+ type: boolean
287
+ default: false
288
+
289
+ permissions: {}
290
+
291
+ concurrency:
292
+ group: publish-\${{ github.ref }}
293
+ cancel-in-progress: false
294
+
295
+ jobs:
296
+ canary:
297
+ name: Publish canary
298
+ if: github.event_name == 'push' && github.event.head_commit.author.name != 'renovate[bot]'
299
+ runs-on: ubuntu-latest
300
+ permissions:
301
+ contents: read
302
+ id-token: write # Required for provenance and trusted publishing
303
+ steps:
304
+ ${distributionSetup(false)}
305
+ - name: Stamp the canary version and what it ships
306
+ id: canary
307
+ run: pnpm run canary
308
+
309
+ - name: Publish to npm
310
+ if: steps.canary.outputs.skip != 'true'
311
+ run: |
312
+ if [ "\${{ steps.canary.outputs.provenance }}" = "true" ]; then
313
+ npm publish --tag canary --provenance
314
+ else
315
+ npm publish --tag canary
316
+ fi
317
+
318
+ release:
319
+ name: Publish release
320
+ if: github.event_name == 'workflow_dispatch'
321
+ runs-on: ubuntu-latest
322
+ permissions:
323
+ contents: write # Required for pushing the tag and creating the release
324
+ id-token: write # Required for provenance and trusted publishing
325
+ actions: write # Required to run open pull requests' changelog check again
326
+ pull-requests: read # Required to find them
327
+ environment:
328
+ name: npm-publish
329
+ steps:
330
+ ${distributionSetup(true)}
331
+ - name: Stamp what it ships
332
+ id: version
333
+ # Refuses when this version is on npm already, or names a month that
334
+ # is over: \`fg-dist release\` moves the distribution on.
335
+ run: pnpm run release:check
336
+
337
+ - name: Publish to npm
338
+ env:
339
+ DIST_TAG: \${{ inputs.dist-tag }}
340
+ PROVENANCE: \${{ steps.version.outputs.provenance }}
341
+ DRY_RUN: \${{ inputs.dry-run }}
342
+ run: |
343
+ flags="--tag \$DIST_TAG"
344
+ [ "\$PROVENANCE" = "true" ] && flags="\$flags --provenance"
345
+ [ "\$DRY_RUN" = "true" ] && flags="\$flags --dry-run"
346
+ npm publish \$flags
347
+
348
+ - name: Tag and create the GitHub release
349
+ if: inputs.dry-run != true
350
+ env:
351
+ GH_TOKEN: \${{ secrets.GITHUB_TOKEN }}
352
+ TAG: \${{ steps.version.outputs.tag }}
353
+ run: |
354
+ git tag "\$TAG"
355
+ git push origin "\$TAG"
356
+ # The changelog's section for this version: the modules it moved,
357
+ # and what changed in the organization's policy.
358
+ if pnpm run --silent changelog notes > "\$RUNNER_TEMP/notes.md"; then
359
+ notes="--notes-file \$RUNNER_TEMP/notes.md"
360
+ else
361
+ notes="--generate-notes"
362
+ fi
363
+ gh release create "\$TAG" --title "\$TAG" \$notes --verify-tag
364
+
365
+ - name: Hold pull requests until the next version
366
+ if: inputs.dry-run != true
367
+ env:
368
+ GH_TOKEN: \${{ secrets.GITHUB_TOKEN }}
369
+ # Anything merged now would be noted under a version already out. Each
370
+ # open pull request's changelog check runs again, sees the release and
371
+ # refuses it — until \`fg-dist release\` starts the next version and the
372
+ # branch catches up with it.
373
+ run: pnpm run changelog hold
374
+
375
+ - name: Summary
376
+ run: |
377
+ echo "Published \\\`${packageName}@\${{ steps.version.outputs.version }}\\\`." >> "\$GITHUB_STEP_SUMMARY"
378
+ echo "Pull requests are held until the next version starts: run \\\`fg-dist release\\\` and merge what it opens." >> "\$GITHUB_STEP_SUMMARY"
379
+ `,
380
+ ...changelogWorkflow({ submodules: true }),
381
+ });
382
+ /**
383
+ * The pull request check that keeps a changelog current.
384
+ *
385
+ * Every pull request has to add a line linking itself under the version being
386
+ * worked on — or, in a distribution, every one that changes the
387
+ * organization's policy — so a release's notes are written, and committed,
388
+ * before it is released. A distribution is checked out with its submodules,
389
+ * without which its workspace does not install.
390
+ */
391
+ export const changelogWorkflow = ({ submodules }) => ({
392
+ '.github/workflows/changelog.yml': `name: Changelog
393
+
394
+ # Every pull request says what it changes in CHANGELOG.md, under the version
395
+ # being worked on, with a link to itself — so that version's notes are written,
396
+ # and committed, before it is released: whoever makes the change writes the
397
+ # line, and review sees it with the change. Make this job a required status
398
+ # check on main, or it only advises.
399
+ #
400
+ # A pull request that changes nothing anyone would read about — a lockfile
401
+ # bump — is labelled "skip changelog".
402
+
403
+ on:
404
+ pull_request:
405
+ types: [opened, synchronize, reopened, labeled, unlabeled]
406
+
407
+ permissions:
408
+ contents: read
409
+
410
+ jobs:
411
+ changelog:
412
+ name: Changelog entry
413
+ runs-on: ubuntu-latest
414
+ steps:
415
+ - name: Checkout
416
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
417
+ with:
418
+ persist-credentials: false
419
+ fetch-depth: 0 # to compare with what it merges into${submodules ? '\n submodules: true # a distribution does not install without them' : ''}
420
+
421
+ - uses: pnpm/action-setup@v4
422
+
423
+ - uses: actions/setup-node@v4
424
+ with:
425
+ node-version: 22
426
+
427
+ - name: Install
428
+ run: |
429
+ if [ -f pnpm-lock.yaml ]; then
430
+ pnpm install --frozen-lockfile
431
+ else
432
+ pnpm install --no-frozen-lockfile
433
+ fi
434
+
435
+ # Only where fg-dist is developed in this workspace — its own repository,
436
+ # where it is the root pnpm otherwise leaves out, or a distribution's.
437
+ - name: Build fg-dist
438
+ run: pnpm --filter @fairgarden/distribution --include-workspace-root run --if-present build
439
+
440
+ - name: Check for a line linking this pull request
441
+ run: pnpm run changelog check
442
+ `,
443
+ });
193
444
  const readManifest = async (root) => {
194
445
  try {
195
446
  return JSON.parse(await readFile(path.join(root, 'package.json'), 'utf8'));
@@ -225,6 +476,7 @@ export const releaseScripts = (packageName) => {
225
476
  canary: `${cli} canary`,
226
477
  release: `${cli} release`,
227
478
  'release:check': `${cli} release --check`,
479
+ changelog: `${cli} changelog`,
228
480
  };
229
481
  };
230
482
  /**
@@ -267,6 +519,17 @@ export const updateManifest = async (moduleRoot, packageName, version, packageMa
267
519
  if (packageName !== TOOL && !dependencies?.[TOOL] && !devDependencies?.[TOOL] && version) {
268
520
  updated.devDependencies = { ...devDependencies, [TOOL]: `^${version}` };
269
521
  }
522
+ // One that does is moved up to this version at least: the workflows written
523
+ // here call commands it has, and an older one — resolved from npm in the
524
+ // module's own CI — would not know them.
525
+ for (const key of ['dependencies', 'devDependencies']) {
526
+ const list = updated[key];
527
+ const range = list?.[TOOL];
528
+ const floor = range ? semver.minVersion(range, { loose: true }) : null;
529
+ if (packageName !== TOOL && version && floor && semver.lt(floor, version)) {
530
+ updated[key] = { ...list, [TOOL]: `^${version}` };
531
+ }
532
+ }
270
533
  const changed = JSON.stringify(updated) !== before;
271
534
  if (changed && write) {
272
535
  await writeFile(path.join(moduleRoot, 'package.json'), `${JSON.stringify(updated, null, 2)}\n`);
@@ -294,38 +557,38 @@ export const updateManifest = async (moduleRoot, packageName, version, packageMa
294
557
  * A module that already has one is left alone: it may have been changed on
295
558
  * purpose, and overwriting it would be the kind of help nobody asked for.
296
559
  */
297
- export const writeWorkflows = async (root, { force = false, dryRun = false } = {}) => {
560
+ export const writeWorkflows = async (root, { force = false, dryRun = false, names = [], } = {}) => {
298
561
  const updates = [];
299
562
  // What the distribution builds with, which is what its modules are developed
300
563
  // against whether or not they say so themselves.
301
564
  const packageManager = (await readManifest(root))?.packageManager;
302
565
  const spec = typeof packageManager === 'string' ? packageManager : undefined;
303
566
  const tool = await toolVersion();
567
+ const unknown = names.filter((name) => !submodules(root).some((submodule) => submodule.name === name || submodule.relativePath === name));
568
+ if (unknown.length > 0)
569
+ throw new Error(`No such module: ${unknown.join(', ')}.`);
304
570
  for (const submodule of submodules(root)) {
571
+ if (names.length > 0 && !names.includes(submodule.name) && !names.includes(submodule.relativePath))
572
+ continue;
305
573
  const name = (await readManifest(submodule.path))?.name;
306
574
  if (typeof name !== 'string')
307
575
  continue;
308
- const workflow = path.join(submodule.path, '.github/workflows/publish.yml');
309
- if (existsSync(workflow) && !force) {
310
- updates.push({
311
- relativePath: submodule.relativePath,
312
- files: [],
313
- skipped: true,
314
- unprivated: false,
315
- missingFiles: false,
316
- missingAccess: false,
317
- });
318
- continue;
319
- }
576
+ // File by file: a module that publishes already still gets the changelog
577
+ // check it lacks, and what it has is only replaced when forced.
320
578
  const written = [];
321
- for (const [relative, contents] of Object.entries(publishWorkflow(name))) {
579
+ const files = { ...publishWorkflow(name), ...changelogWorkflow({ submodules: false }) };
580
+ for (const [relative, contents] of Object.entries(files)) {
322
581
  const full = path.join(submodule.path, relative);
582
+ if (existsSync(full) && !force)
583
+ continue;
323
584
  if (!dryRun) {
324
585
  await mkdir(path.dirname(full), { recursive: true });
325
586
  await writeFile(full, contents);
326
587
  }
327
588
  written.push(relative);
328
589
  }
590
+ if (await startChangelog(submodule.path, dryRun))
591
+ written.push(CHANGELOG);
329
592
  // An earlier version of this command shipped the canary stamper as a file
330
593
  // in the module. It is a CLI command now, and a stale copy of it would go
331
594
  // on being the thing anyone reads.
@@ -347,7 +610,7 @@ export const writeWorkflows = async (root, { force = false, dryRun = false } = {
347
610
  updates.push({
348
611
  relativePath: submodule.relativePath,
349
612
  files: written.sort(),
350
- skipped: false,
613
+ skipped: written.length === 0,
351
614
  unprivated: manifest.unprivated,
352
615
  missingFiles: manifest.missingFiles,
353
616
  missingAccess: manifest.missingAccess,
@@ -355,4 +618,122 @@ export const writeWorkflows = async (root, { force = false, dryRun = false } = {
355
618
  }
356
619
  return updates;
357
620
  };
621
+ /**
622
+ * Give the distribution itself a publishing workflow, so others can extend it.
623
+ *
624
+ * Asked for rather than done by `writeWorkflows`: it makes the distribution
625
+ * public on npm, which a distribution only its owner deploys has no need to be.
626
+ * The tarball is the manifest and the organization's policy, which is what an
627
+ * extension builds its own on.
628
+ */
629
+ export const writeDistributionWorkflow = async (root, { force = false, dryRun = false } = {}) => {
630
+ const manifest = await readManifest(root);
631
+ const name = manifest?.name;
632
+ if (typeof name !== 'string')
633
+ throw new Error('The distribution needs a name in package.json to publish.');
634
+ const relativePath = '.';
635
+ const workflow = path.join(root, '.github/workflows/publish.yml');
636
+ if (existsSync(workflow) && !force) {
637
+ return { relativePath, files: [], skipped: true, unprivated: false, missingFiles: false, missingAccess: false };
638
+ }
639
+ const written = [];
640
+ for (const [relative, contents] of Object.entries(distributionWorkflow(name))) {
641
+ if (!dryRun) {
642
+ await mkdir(path.dirname(path.join(root, relative)), { recursive: true });
643
+ await writeFile(path.join(root, relative), contents);
644
+ }
645
+ written.push(relative);
646
+ }
647
+ if (await startChangelog(root, dryRun))
648
+ written.push(CHANGELOG);
649
+ const packageManager = typeof manifest?.packageManager === 'string' ? manifest.packageManager : undefined;
650
+ const change = await updateManifest(root, name, await toolVersion(), packageManager, { write: !dryRun });
651
+ if (change.changed)
652
+ written.push('package.json');
653
+ // Its policy is what an extension layers its own on; nothing else is needed.
654
+ let missingFiles = change.missingFiles;
655
+ if (missingFiles) {
656
+ const updated = (await readManifest(root)) ?? {};
657
+ const files = existsSync(path.join(root, 'policies')) ? ['policies'] : [];
658
+ if (!dryRun)
659
+ await writeFile(path.join(root, 'package.json'), `${JSON.stringify({ ...updated, files }, null, 2)}\n`);
660
+ if (!written.includes('package.json'))
661
+ written.push('package.json');
662
+ missingFiles = false;
663
+ }
664
+ return {
665
+ relativePath,
666
+ files: written.sort(),
667
+ skipped: false,
668
+ unprivated: change.unprivated,
669
+ missingFiles,
670
+ missingAccess: change.missingAccess,
671
+ };
672
+ };
673
+ /**
674
+ * Start a repository's changelog at the version it carries, unless it keeps one
675
+ * already: a changelog is history, and is never written over.
676
+ */
677
+ const startChangelog = async (root, dryRun) => {
678
+ const file = path.join(root, CHANGELOG);
679
+ if (existsSync(file))
680
+ return false;
681
+ const version = (await readManifest(root))?.version;
682
+ if (typeof version !== 'string')
683
+ return false;
684
+ if (!dryRun)
685
+ await writeFile(file, newChangelog(version));
686
+ return true;
687
+ };
688
+ /**
689
+ * Give the distribution itself the changelog check, for pull requests that
690
+ * change the organization's policy — what else changes in it, fg-dist notes
691
+ * itself. Unlike its publishing, this makes nothing public.
692
+ */
693
+ export const writeDistributionChangelogCheck = async (root, { force = false, dryRun = false } = {}) => {
694
+ const written = [];
695
+ for (const [relative, contents] of Object.entries(changelogWorkflow({ submodules: true }))) {
696
+ const full = path.join(root, relative);
697
+ if (existsSync(full) && !force)
698
+ continue;
699
+ if (!dryRun) {
700
+ await mkdir(path.dirname(full), { recursive: true });
701
+ await writeFile(full, contents);
702
+ }
703
+ written.push(relative);
704
+ }
705
+ if (await startChangelog(root, dryRun))
706
+ written.push(CHANGELOG);
707
+ // The script the check runs, and the tool it runs — nothing that publishes.
708
+ const manifest = await readManifest(root);
709
+ if (manifest) {
710
+ const scripts = { ...manifest.scripts };
711
+ const dev = { ...manifest.devDependencies };
712
+ const deps = manifest.dependencies;
713
+ const tool = await toolVersion();
714
+ let changed = false;
715
+ if (!scripts.changelog) {
716
+ scripts.changelog = releaseScripts(String(manifest.name ?? '')).changelog;
717
+ changed = true;
718
+ }
719
+ if (!dev[TOOL] && !deps?.[TOOL] && tool) {
720
+ dev[TOOL] = `^${tool}`;
721
+ changed = true;
722
+ }
723
+ if (changed) {
724
+ if (!dryRun) {
725
+ await writeFile(path.join(root, 'package.json'), `${JSON.stringify({ ...manifest, scripts, devDependencies: dev }, null, 2)}\n`);
726
+ }
727
+ written.push('package.json');
728
+ }
729
+ }
730
+ return {
731
+ relativePath: '.',
732
+ files: written.sort(),
733
+ skipped: written.length === 0,
734
+ unprivated: false,
735
+ missingFiles: false,
736
+ missingAccess: false,
737
+ };
738
+ };
358
739
  //# sourceMappingURL=workflows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fairgarden/distribution",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-alpha.3",
4
4
  "description": "Compose versioned modules into a distribution, and extend one distribution from another",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,11 +20,21 @@
20
20
  }
21
21
  },
22
22
  "bin": {
23
- "fg-dist": "./dist/cli.js"
23
+ "fg-dist": "dist/cli.js"
24
24
  },
25
25
  "files": [
26
26
  "dist"
27
27
  ],
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "dev": "tsc --watch --preserveWatchOutput",
31
+ "lint": "eslint",
32
+ "test": "node --test test/*.test.js",
33
+ "canary": "node dist/cli.js canary",
34
+ "release": "node dist/cli.js release",
35
+ "release:check": "node dist/cli.js release --check",
36
+ "changelog": "node dist/cli.js changelog"
37
+ },
28
38
  "dependencies": {
29
39
  "@babel/parser": "^7.29.9",
30
40
  "mdast-util-from-markdown": "^2.0.3",
@@ -39,13 +49,5 @@
39
49
  "eslint": "^9.39.5",
40
50
  "typescript": "^6.0.3"
41
51
  },
42
- "scripts": {
43
- "build": "tsc",
44
- "dev": "tsc --watch --preserveWatchOutput",
45
- "lint": "eslint",
46
- "test": "node --test test/*.test.js",
47
- "canary": "node dist/cli.js canary",
48
- "release": "node dist/cli.js release",
49
- "release:check": "node dist/cli.js release --check"
50
- }
51
- }
52
+ "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48"
53
+ }