release-monorepo-semantically 1.6.2 → 1.7.1

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 (77) hide show
  1. package/README.md +18 -1
  2. package/dist/{MonorepoController.d.ts → Controller.d.ts} +3 -3
  3. package/dist/Controller.d.ts.map +1 -0
  4. package/dist/{MonorepoController.js → Controller.js} +5 -5
  5. package/dist/Controller.js.map +1 -0
  6. package/dist/Controller.spec.js +93 -31
  7. package/dist/Controller.spec.js.map +1 -1
  8. package/dist/index.d.ts +0 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +9 -60
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.spec.d.ts +2 -0
  13. package/dist/index.spec.d.ts.map +1 -0
  14. package/dist/{main.spec.js → index.spec.js} +11 -19
  15. package/dist/index.spec.js.map +1 -0
  16. package/dist/models/CliOptions.d.ts.map +1 -0
  17. package/dist/{CliOptions.js.map → models/CliOptions.js.map} +1 -1
  18. package/dist/models/NpmPackage.d.ts +1 -1
  19. package/dist/models/NpmPackage.d.ts.map +1 -1
  20. package/dist/plugins/GithubPlugin.d.ts +2 -0
  21. package/dist/plugins/GithubPlugin.d.ts.map +1 -1
  22. package/dist/plugins/GithubPlugin.js +20 -0
  23. package/dist/plugins/GithubPlugin.js.map +1 -1
  24. package/dist/plugins/GithubPlugin.spec.js +59 -0
  25. package/dist/plugins/GithubPlugin.spec.js.map +1 -1
  26. package/dist/services/CliOptionsService.d.ts +6 -0
  27. package/dist/services/CliOptionsService.d.ts.map +1 -0
  28. package/dist/services/CliOptionsService.js +50 -0
  29. package/dist/services/CliOptionsService.js.map +1 -0
  30. package/dist/services/CliOptionsService.spec.d.ts +2 -0
  31. package/dist/services/CliOptionsService.spec.d.ts.map +1 -0
  32. package/dist/services/CliOptionsService.spec.js +38 -0
  33. package/dist/services/CliOptionsService.spec.js.map +1 -0
  34. package/dist/services/NodeFileSystemService.js +1 -1
  35. package/dist/services/NodeFileSystemService.js.map +1 -1
  36. package/dist/services/ReleaseConfigService.d.ts +13 -0
  37. package/dist/services/ReleaseConfigService.d.ts.map +1 -0
  38. package/dist/services/ReleaseConfigService.js +52 -0
  39. package/dist/services/ReleaseConfigService.js.map +1 -0
  40. package/dist/services/ReleaseConfigService.spec.d.ts +2 -0
  41. package/dist/services/ReleaseConfigService.spec.d.ts.map +1 -0
  42. package/dist/services/ReleaseConfigService.spec.js +126 -0
  43. package/dist/services/ReleaseConfigService.spec.js.map +1 -0
  44. package/dist/utils/sortLessDependenciesFirst.d.ts.map +1 -0
  45. package/dist/utils/sortLessDependenciesFirst.js.map +1 -0
  46. package/dist/utils/sortLessDependenciesFirst.spec.d.ts +2 -0
  47. package/dist/utils/sortLessDependenciesFirst.spec.d.ts.map +1 -0
  48. package/dist/utils/sortLessDependenciesFirst.spec.js +41 -0
  49. package/dist/utils/sortLessDependenciesFirst.spec.js.map +1 -0
  50. package/dist/utils/utils.d.ts.map +1 -0
  51. package/dist/utils/utils.js.map +1 -0
  52. package/dist/{utils.spec.d.ts.map → utils/utils.spec.d.ts.map} +1 -1
  53. package/dist/utils/utils.spec.js.map +1 -0
  54. package/package.json +3 -2
  55. package/dist/CliOptions.d.ts.map +0 -1
  56. package/dist/MonorepoController.d.ts.map +0 -1
  57. package/dist/MonorepoController.js.map +0 -1
  58. package/dist/MonorepoController.spec.d.ts +0 -2
  59. package/dist/MonorepoController.spec.d.ts.map +0 -1
  60. package/dist/MonorepoController.spec.js +0 -103
  61. package/dist/MonorepoController.spec.js.map +0 -1
  62. package/dist/main.spec.d.ts +0 -2
  63. package/dist/main.spec.d.ts.map +0 -1
  64. package/dist/main.spec.js.map +0 -1
  65. package/dist/sortLessDependenciesFirst.d.ts.map +0 -1
  66. package/dist/sortLessDependenciesFirst.js.map +0 -1
  67. package/dist/utils.d.ts.map +0 -1
  68. package/dist/utils.js.map +0 -1
  69. package/dist/utils.spec.js.map +0 -1
  70. /package/dist/{CliOptions.d.ts → models/CliOptions.d.ts} +0 -0
  71. /package/dist/{CliOptions.js → models/CliOptions.js} +0 -0
  72. /package/dist/{sortLessDependenciesFirst.d.ts → utils/sortLessDependenciesFirst.d.ts} +0 -0
  73. /package/dist/{sortLessDependenciesFirst.js → utils/sortLessDependenciesFirst.js} +0 -0
  74. /package/dist/{utils.d.ts → utils/utils.d.ts} +0 -0
  75. /package/dist/{utils.js → utils/utils.js} +0 -0
  76. /package/dist/{utils.spec.d.ts → utils/utils.spec.d.ts} +0 -0
  77. /package/dist/{utils.spec.js → utils/utils.spec.js} +0 -0
package/README.md CHANGED
@@ -65,7 +65,22 @@ Options:
65
65
 
66
66
  ## Template overrides
67
67
 
68
- You can override templates via CLI options or root `package.json`:
68
+ You can override templates via CLI options, a root `package.json` section, or `.semantic-release.json`.
69
+
70
+ `package.json`:
71
+
72
+ ```json
73
+ {
74
+ "release": {
75
+ "releaseTemplates": {
76
+ "changelogTemplate": "templates/changelog.hbs",
77
+ "releaseCommitTemplate": "templates/release-commit-msg.hbs"
78
+ }
79
+ }
80
+ }
81
+ ```
82
+
83
+ `.semantic-release.json`:
69
84
 
70
85
  ```json
71
86
  {
@@ -76,6 +91,8 @@ You can override templates via CLI options or root `package.json`:
76
91
  }
77
92
  ```
78
93
 
94
+ Precedence (highest to lowest): CLI flags, `.semantic-release.json`, `package.json` config, built-in defaults.
95
+
79
96
  Built-in templates:
80
97
 
81
98
  - `templates/changelog.hbs`
@@ -1,10 +1,10 @@
1
1
  import { NodeFileSystemService } from './services/NodeFileSystemService';
2
2
  import { GitService } from './services/GitService';
3
3
  import { ConsoleLogger } from './services/ConsoleLogger';
4
- import { CliOptions } from './CliOptions';
4
+ import { CliOptions } from './models/CliOptions';
5
5
  import { ReleasePlugin } from './plugins/ReleasePlugin';
6
6
  type ReleaseOptions = Partial<Pick<CliOptions, 'dryRun' | 'noPush' | 'noPublish'>>;
7
- export declare class MonorepoController {
7
+ export declare class Controller {
8
8
  private readonly plugins;
9
9
  private fs;
10
10
  private vsc;
@@ -17,4 +17,4 @@ export declare class MonorepoController {
17
17
  private ensureWritableReleaseState;
18
18
  }
19
19
  export {};
20
- //# sourceMappingURL=MonorepoController.d.ts.map
20
+ //# sourceMappingURL=Controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../src/Controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAIxD,KAAK,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;AAEnF,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,iBAAiB,CAAoB;gBAG1B,OAAO,EAAE,aAAa,EAAE,EACjC,EAAE,EAAE,qBAAqB,EACzB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,aAAa;IAG/B,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ5C,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI;IAsD3C,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,0BAA0B;CASnC"}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MonorepoController = void 0;
3
+ exports.Controller = void 0;
4
4
  const NpmPackage_1 = require("./models/NpmPackage");
5
5
  const SemVerBumpType_1 = require("./models/SemVerBumpType");
6
- const sortLessDependenciesFirst_1 = require("./sortLessDependenciesFirst");
6
+ const sortLessDependenciesFirst_1 = require("./utils/sortLessDependenciesFirst");
7
7
  const DomainException_1 = require("./exceptions/DomainException");
8
- class MonorepoController {
8
+ class Controller {
9
9
  plugins;
10
10
  fs;
11
11
  vsc;
@@ -78,5 +78,5 @@ class MonorepoController {
78
78
  }
79
79
  }
80
80
  }
81
- exports.MonorepoController = MonorepoController;
82
- //# sourceMappingURL=MonorepoController.js.map
81
+ exports.Controller = Controller;
82
+ //# sourceMappingURL=Controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controller.js","sourceRoot":"","sources":["../src/Controller.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,103 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
+ const Controller_1 = require("./Controller");
4
5
  const NpmPackage_1 = require("./models/NpmPackage");
5
- const sortLessDependenciesFirst_1 = require("./sortLessDependenciesFirst");
6
- function createPkg(name, deps = {}) {
7
- return new NpmPackage_1.NpmPackage(name, `/${name}`, '1.0.0', false, deps, {});
8
- }
9
- (0, vitest_1.describe)('sortLessDependenciesFirst', () => {
10
- (0, vitest_1.it)('puts dependencies before dependents (simple pair)', () => {
11
- // A depends on B => order should be B, A
12
- const A = createPkg('A', { B: '1.0.0' });
13
- const B = createPkg('B');
14
- const result = (0, sortLessDependenciesFirst_1.sortLessDependenciesFirst)([A, B]).map((p) => p.name);
15
- (0, vitest_1.expect)(result).toEqual(['B', 'A']);
6
+ const ConventionalCommit_1 = require("./models/ConventionalCommit");
7
+ const DomainException_1 = require("./exceptions/DomainException");
8
+ (0, vitest_1.describe)('MonorepoController.discoverPackages', () => {
9
+ (0, vitest_1.it)('given workspace package json files when packages are discovered then private packages are excluded', () => {
10
+ const fs = {
11
+ readPackageJsonOrFail: vitest_1.vi.fn().mockReturnValue({ workspaces: ['packages/*'] }),
12
+ findManyPackageJsonByGlob: vitest_1.vi.fn().mockReturnValue([
13
+ ['/repo/packages/a/package.json', { name: 'pkg-a', version: '1.0.0' }],
14
+ ['/repo/packages/private/package.json', { name: 'pkg-private', version: '1.0.0', private: true }],
15
+ ]),
16
+ };
17
+ const controller = new Controller_1.Controller([], fs, {}, {});
18
+ controller.discoverPackages('/repo');
19
+ (0, vitest_1.expect)(fs.readPackageJsonOrFail).toHaveBeenCalledWith('/repo');
20
+ (0, vitest_1.expect)(fs.findManyPackageJsonByGlob).toHaveBeenCalledWith(['packages/*'], '/repo');
21
+ (0, vitest_1.expect)(controller.packageSortedList.map((pkg) => pkg.name)).toEqual(['pkg-a']);
16
22
  });
17
- (0, vitest_1.it)('handles dependency chains (C -> B -> A order)', () => {
18
- const A = createPkg('A', { B: '1.0.0' });
19
- const B = createPkg('B', { C: '1.0.0' });
20
- const C = createPkg('C');
21
- const result = (0, sortLessDependenciesFirst_1.sortLessDependenciesFirst)([A, B, C]).map((p) => p.name);
22
- (0, vitest_1.expect)(result).toEqual(['C', 'B', 'A']);
23
+ });
24
+ (0, vitest_1.describe)('MonorepoController.release', () => {
25
+ (0, vitest_1.it)('given no release-triggering commits when release runs then it logs skip and calls only finalize hook', () => {
26
+ const plugin = {
27
+ onPackageReleased: vitest_1.vi.fn(),
28
+ onReleaseComplete: vitest_1.vi.fn(),
29
+ };
30
+ const vsc = {
31
+ findManyCommitsSinceTag: vitest_1.vi.fn().mockReturnValue([]),
32
+ isWorkingTreeClean: vitest_1.vi.fn().mockReturnValue(true),
33
+ };
34
+ const logger = {
35
+ info: vitest_1.vi.fn(),
36
+ };
37
+ const controller = new Controller_1.Controller([plugin], {}, vsc, logger);
38
+ controller.packageSortedList = [
39
+ NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-a', version: '1.0.0' }, '/repo/packages/pkg-a/package.json'),
40
+ ];
41
+ controller.release();
42
+ (0, vitest_1.expect)(plugin.onPackageReleased).not.toHaveBeenCalled();
43
+ (0, vitest_1.expect)(plugin.onReleaseComplete).toHaveBeenCalledWith({
44
+ dryRun: false,
45
+ noPush: false,
46
+ noPublish: false,
47
+ releasedVersions: new Map(),
48
+ releasedPackages: [],
49
+ releasedCommits: new Map(),
50
+ });
51
+ (0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('SKIP pkg-a@1.0.0');
23
52
  });
24
- (0, vitest_1.it)('ignores external dependencies', () => {
25
- const A = createPkg('A', { react: '18.0.0' });
26
- const B = createPkg('B');
27
- const result = (0, sortLessDependenciesFirst_1.sortLessDependenciesFirst)([A, B]).map((p) => p.name);
28
- // No internal dependency between A and B, relative order can be [A,B] or [B,A].
29
- // But both must appear exactly once.
30
- (0, vitest_1.expect)(result.sort()).toEqual(['A', 'B'].sort());
53
+ (0, vitest_1.it)('given release-triggering commits when release runs then it calls package and finalize plugin hooks with released state', () => {
54
+ const plugin = {
55
+ onPackageReleased: vitest_1.vi.fn(),
56
+ onReleaseComplete: vitest_1.vi.fn(),
57
+ };
58
+ const vsc = {
59
+ findManyCommitsSinceTag: vitest_1.vi
60
+ .fn()
61
+ .mockImplementation((tag) => tag === 'pkg-a@1.0.0' ? [ConventionalCommit_1.ConventionalCommit.parse('feat(pkg-a): add feature')] : [ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-b): resolve bug')]),
62
+ isWorkingTreeClean: vitest_1.vi.fn().mockReturnValue(true),
63
+ };
64
+ const logger = {
65
+ info: vitest_1.vi.fn(),
66
+ };
67
+ const controller = new Controller_1.Controller([plugin], {}, vsc, logger);
68
+ const pkgA = NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-a', version: '1.0.0' }, '/repo/packages/pkg-a/package.json');
69
+ const pkgB = NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-b', version: '2.0.0' }, '/repo/packages/pkg-b/package.json');
70
+ controller.packageSortedList = [pkgA, pkgB];
71
+ controller.release({ noPush: true, noPublish: true });
72
+ (0, vitest_1.expect)(plugin.onPackageReleased).toHaveBeenCalledTimes(2);
73
+ (0, vitest_1.expect)(plugin.onReleaseComplete).toHaveBeenCalledTimes(1);
74
+ const finalizeArg = plugin.onReleaseComplete.mock.calls[0][0];
75
+ (0, vitest_1.expect)(finalizeArg.noPush).toBe(true);
76
+ (0, vitest_1.expect)(finalizeArg.noPublish).toBe(true);
77
+ (0, vitest_1.expect)(finalizeArg.releasedPackages.map((pkg) => pkg.name)).toEqual(['pkg-a', 'pkg-b']);
78
+ (0, vitest_1.expect)(finalizeArg.releasedVersions.get('pkg-a')).toBe('1.1.0');
79
+ (0, vitest_1.expect)(finalizeArg.releasedVersions.get('pkg-b')).toBe('2.0.1');
80
+ (0, vitest_1.expect)(finalizeArg.releasedCommits.get('pkg-a')).toHaveLength(1);
81
+ (0, vitest_1.expect)(finalizeArg.releasedCommits.get('pkg-b')).toHaveLength(1);
31
82
  });
32
- (0, vitest_1.it)('terminates and includes all packages even with cycles', () => {
33
- // A <-> B cycle
34
- const A = createPkg('A', { B: '1.0.0' });
35
- const B = createPkg('B', { A: '1.0.0' });
36
- const result = (0, sortLessDependenciesFirst_1.sortLessDependenciesFirst)([A, B]).map((p) => p.name);
37
- // In a cycle, exact order is undefined, but should include both once and terminate
38
- (0, vitest_1.expect)(result.sort()).toEqual(['A', 'B'].sort());
83
+ (0, vitest_1.it)('given dirty working tree when a non-dry-run release starts then it fails before plugin hooks mutate state', () => {
84
+ const plugin = {
85
+ onPackageReleased: vitest_1.vi.fn(),
86
+ onReleaseComplete: vitest_1.vi.fn(),
87
+ };
88
+ const vsc = {
89
+ findManyCommitsSinceTag: vitest_1.vi.fn().mockReturnValue([ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): patch')]),
90
+ isWorkingTreeClean: vitest_1.vi.fn().mockReturnValue(false),
91
+ };
92
+ const logger = {
93
+ info: vitest_1.vi.fn(),
94
+ };
95
+ const controller = new Controller_1.Controller([plugin], {}, vsc, logger);
96
+ const pkg = NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-a', version: '1.0.0' }, '/repo/packages/pkg-a/package.json');
97
+ controller.packageSortedList = [pkg];
98
+ (0, vitest_1.expect)(() => controller.release()).toThrow(DomainException_1.DirtyWorkingTreeException);
99
+ (0, vitest_1.expect)(plugin.onPackageReleased).not.toHaveBeenCalled();
100
+ (0, vitest_1.expect)(plugin.onReleaseComplete).not.toHaveBeenCalled();
39
101
  });
40
102
  });
41
103
  //# sourceMappingURL=Controller.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Controller.spec.js","sourceRoot":"","sources":["../src/Controller.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Controller.spec.js","sourceRoot":"","sources":["../src/Controller.spec.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import { CliOptions } from './CliOptions';
2
- export declare function parseCliOptions(args: string[]): CliOptions;
3
1
  export declare function runCli(cwd?: string, cliArgs?: string[]): number;
4
2
  export default runCli;
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AA2B7D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8B1D;AAYD,wBAAgB,MAAM,CAAC,GAAG,SAAgB,EAAE,OAAO,WAAwB,GAAG,MAAM,CA6CnF;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,wBAAgB,MAAM,CAAC,GAAG,SAAgB,EAAE,OAAO,WAAwB,GAAG,MAAM,CA0CnF;AAED,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -3,9 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseCliOptions = parseCliOptions;
7
6
  exports.runCli = runCli;
8
- const MonorepoController_1 = require("./MonorepoController");
7
+ const Controller_1 = require("./Controller");
9
8
  const NodeFileSystemService_1 = require("./services/NodeFileSystemService");
10
9
  const GitService_1 = require("./services/GitService");
11
10
  const ChangelogView_1 = require("./services/ChangelogView");
@@ -14,7 +13,6 @@ const ReleaseCommitView_1 = require("./services/ReleaseCommitView");
14
13
  const PackageManager_1 = require("./services/PackageManager");
15
14
  const ConsoleLogger_1 = require("./services/ConsoleLogger");
16
15
  const ExceptionHandler_1 = require("./services/ExceptionHandler");
17
- const commander_1 = require("commander");
18
16
  const node_path_1 = __importDefault(require("node:path"));
19
17
  const ChangelogPlugin_1 = require("./plugins/ChangelogPlugin");
20
18
  const GitPlugin_1 = require("./plugins/GitPlugin");
@@ -23,81 +21,32 @@ const PackageJsonPlugin_1 = require("./plugins/PackageJsonPlugin");
23
21
  const GithubPlugin_1 = require("./plugins/GithubPlugin");
24
22
  const GithubService_1 = require("./services/GithubService");
25
23
  const GithubReleaseView_1 = require("./services/GithubReleaseView");
26
- function createProgram() {
27
- return new commander_1.Command()
28
- .name('monorepo-semantic-release')
29
- .allowExcessArguments(false)
30
- .helpOption('-h, --help', 'Show this help message')
31
- .option('--dry-run', 'Preview release changes without mutating files, commits, or tags')
32
- .option('--no-push', 'Skip pushing the release commit and tags to the Git remote')
33
- .option('--no-publish', 'Skip publishing bumped packages')
34
- .option('--changelog-template <path>', `Override changelog template (default: ${ChangelogView_1.DEFAULT_CHANGELOG_TEMPLATE})`)
35
- .option('--release-commit-template <path>', `Override release commit template (default: ${ReleaseCommitView_1.DEFAULT_RELEASE_COMMIT_TEMPLATE})`);
36
- }
37
- function parseCliOptions(args) {
38
- const program = createProgram();
39
- try {
40
- program.exitOverride();
41
- program.parse(['node', 'monorepo-semantic-release', ...args], { from: 'node' });
42
- }
43
- catch (error) {
44
- const commanderError = error;
45
- if (commanderError.code === 'commander.helpDisplayed') {
46
- return {
47
- help: true,
48
- dryRun: false,
49
- noPush: false,
50
- noPublish: false,
51
- };
52
- }
53
- throw error;
54
- }
55
- const options = program.opts();
56
- const commanderOptions = options;
57
- return {
58
- help: false,
59
- dryRun: options.dryRun ?? false,
60
- noPush: commanderOptions.push === false,
61
- noPublish: commanderOptions.publish === false,
62
- changelogTemplate: options.changelogTemplate,
63
- releaseCommitTemplate: options.releaseCommitTemplate,
64
- };
65
- }
66
- function resolveTemplateOverrides(cwd, fsService, cliOptions) {
67
- const packageJson = fsService.readJson(node_path_1.default.resolve(cwd, 'package.json'));
68
- const packageTemplates = packageJson.releaseTemplates ?? {};
69
- return {
70
- releaseCommitTemplate: cliOptions.releaseCommitTemplate ?? packageTemplates.releaseCommitTemplate ?? ReleaseCommitView_1.DEFAULT_RELEASE_COMMIT_TEMPLATE,
71
- changelogTemplate: cliOptions.changelogTemplate ?? packageTemplates.changelogTemplate ?? ChangelogView_1.DEFAULT_CHANGELOG_TEMPLATE,
72
- };
73
- }
24
+ const ReleaseConfigService_1 = require("./services/ReleaseConfigService");
25
+ const CliOptionsService_1 = require("./services/CliOptionsService");
74
26
  function runCli(cwd = process.cwd(), cliArgs = process.argv.slice(2)) {
75
- const cliOptions = parseCliOptions(cliArgs);
27
+ const cliOptionsService = new CliOptionsService_1.CliOptionsService();
28
+ const cliOptions = cliOptionsService.parse(cliArgs);
76
29
  const fsService = new NodeFileSystemService_1.NodeFileSystemService();
77
30
  const vcsService = new GitService_1.GitService();
78
31
  const exceptionHandler = new ExceptionHandler_1.ExceptionHandler();
32
+ const releaseConfigService = new ReleaseConfigService_1.ReleaseConfigService(fsService);
79
33
  if (cliOptions.help) {
80
34
  return 0;
81
35
  }
82
36
  try {
83
37
  const logger = new ConsoleLogger_1.ConsoleLogger('Release');
84
- const templateOverrides = resolveTemplateOverrides(cwd, fsService, cliOptions);
38
+ const templateOverrides = releaseConfigService.resolveTemplateOverrides(cwd, cliOptions);
85
39
  const renderService = new HandlebarsRenderService_1.HandlebarsRenderService(cwd, node_path_1.default.resolve(__dirname, '..'));
86
40
  const changelogView = new ChangelogView_1.ChangelogView(templateOverrides.changelogTemplate, renderService);
87
41
  const releaseCommitView = new ReleaseCommitView_1.ReleaseCommitView(templateOverrides.releaseCommitTemplate, renderService);
88
42
  const githubReleaseView = new GithubReleaseView_1.GithubReleaseView(undefined, renderService);
89
43
  const packageManager = new PackageManager_1.PackageManager();
90
44
  const githubService = new GithubService_1.GithubService();
91
- const githubConfig = {
92
- isGithubActions: process.env.GITHUB_ACTIONS === 'true',
93
- repository: process.env.GITHUB_REPOSITORY,
94
- token: process.env.GITHUB_TOKEN,
95
- };
96
- const controller = new MonorepoController_1.MonorepoController([
45
+ const controller = new Controller_1.Controller([
97
46
  new PackageJsonPlugin_1.PackageJsonPlugin(fsService, logger),
98
47
  new ChangelogPlugin_1.ChangelogPlugin('CHANGELOG.md', changelogView, fsService, logger),
99
48
  new GitPlugin_1.GitPlugin(vcsService, releaseCommitView, logger),
100
- new GithubPlugin_1.GithubPlugin(githubService, logger, githubConfig, githubReleaseView),
49
+ GithubPlugin_1.GithubPlugin.createFromEnv(githubService, logger, githubReleaseView),
101
50
  new NpmPlugin_1.NpmPlugin(packageManager, logger),
102
51
  ], fsService, vcsService, logger);
103
52
  controller.discoverPackages(cwd);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAsCA,0CA8BC;AAYD,wBA6CC;AA7HD,6DAA0D;AAC1D,4EAAyE;AACzE,sDAAmD;AACnD,4DAAqF;AACrF,gFAA6E;AAC7E,oEAAkG;AAClG,8DAA2D;AAC3D,4DAAyD;AACzD,kEAA+D;AAC/D,yCAAoC;AACpC,0DAA6B;AAE7B,+DAA4D;AAC5D,mDAAgD;AAChD,mDAAgD;AAChD,mEAAgE;AAChE,yDAAsD;AACtD,4DAAyD;AACzD,oEAAiE;AAQjE,SAAS,aAAa;IACpB,OAAO,IAAI,mBAAO,EAAE;SACjB,IAAI,CAAC,2BAA2B,CAAC;SACjC,oBAAoB,CAAC,KAAK,CAAC;SAC3B,UAAU,CAAC,YAAY,EAAE,wBAAwB,CAAC;SAClD,MAAM,CAAC,WAAW,EAAE,kEAAkE,CAAC;SACvF,MAAM,CAAC,WAAW,EAAE,4DAA4D,CAAC;SACjF,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC;SACzD,MAAM,CAAC,6BAA6B,EAAE,yCAAyC,0CAA0B,GAAG,CAAC;SAC7G,MAAM,CAAC,kCAAkC,EAAE,8CAA8C,mDAA+B,GAAG,CAAC,CAAC;AAClI,CAAC;AAED,SAAgB,eAAe,CAAC,IAAc;IAC5C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,2BAA2B,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,GAAG,KAA0B,CAAC;QAClD,IAAI,cAAc,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAc,CAAC;IAC3C,MAAM,gBAAgB,GAAG,OAA6D,CAAC;IAEvF,OAAO;QACL,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,MAAM,EAAE,gBAAgB,CAAC,IAAI,KAAK,KAAK;QACvC,SAAS,EAAE,gBAAgB,CAAC,OAAO,KAAK,KAAK;QAC7C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW,EAAE,SAAgC,EAAE,UAAsB;IACrG,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAA2B,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;IACpG,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAE5D,OAAO;QACL,qBAAqB,EAAE,UAAU,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,qBAAqB,IAAI,mDAA+B;QACpI,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,IAAI,gBAAgB,CAAC,iBAAiB,IAAI,0CAA0B;KACpH,CAAC;AACJ,CAAC;AAED,SAAgB,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,6CAAqB,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,EAAE,CAAC;IAEhD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,6BAAa,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,IAAI,iDAAuB,CAAC,GAAG,EAAE,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACtF,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC5F,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;QACxG,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,IAAI,+BAAc,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,6BAAa,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG;YACnB,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;YACtD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;YACzC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;SAChC,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,uCAAkB,CACvC;YACE,IAAI,qCAAiB,CAAC,SAAS,EAAE,MAAM,CAAC;YACxC,IAAI,iCAAe,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;YACrE,IAAI,qBAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE,MAAM,CAAC;YACpD,IAAI,2BAAY,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC;YACxE,IAAI,qBAAS,CAAC,cAAc,EAAE,MAAM,CAAC;SACtC,EACD,SAAS,EACT,UAAU,EACV,MAAM,CACP,CAAC;QAEF,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACjC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;QAE9G,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,kBAAe,MAAM,CAAC;AAEtB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":""}
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
4
  const index_1 = require("./index");
5
- const MonorepoController_1 = require("./MonorepoController");
5
+ const Controller_1 = require("./Controller");
6
6
  const NodeFileSystemService_1 = require("./services/NodeFileSystemService");
7
7
  const ExceptionHandler_1 = require("./services/ExceptionHandler");
8
+ const CliOptionsService_1 = require("./services/CliOptionsService");
8
9
  (0, vitest_1.describe)('runCli', () => {
9
10
  (0, vitest_1.afterEach)(() => {
10
11
  vitest_1.vi.restoreAllMocks();
@@ -18,33 +19,24 @@ const ExceptionHandler_1 = require("./services/ExceptionHandler");
18
19
  (0, vitest_1.expect)(writeSpy).toHaveBeenCalledWith(vitest_1.expect.stringContaining('Usage: monorepo-semantic-release [options]'));
19
20
  });
20
21
  (0, vitest_1.it)('given --dry-run when the cli starts then release is executed in dry-run mode', () => {
21
- const releaseSpy = vitest_1.vi.spyOn(MonorepoController_1.MonorepoController.prototype, 'release').mockImplementation(() => undefined);
22
- vitest_1.vi.spyOn(MonorepoController_1.MonorepoController.prototype, 'discoverPackages').mockImplementation(() => undefined);
22
+ const releaseSpy = vitest_1.vi.spyOn(Controller_1.Controller.prototype, 'release').mockImplementation(() => undefined);
23
+ vitest_1.vi.spyOn(Controller_1.Controller.prototype, 'discoverPackages').mockImplementation(() => undefined);
23
24
  vitest_1.vi.spyOn(NodeFileSystemService_1.NodeFileSystemService.prototype, 'readJson').mockReturnValue({});
24
25
  vitest_1.vi.spyOn(console, 'error').mockImplementation(() => undefined);
25
26
  const exitCode = (0, index_1.runCli)('/repo', ['--dry-run']);
26
27
  (0, vitest_1.expect)(exitCode).toBe(0);
27
28
  (0, vitest_1.expect)(releaseSpy).toHaveBeenCalledWith({ dryRun: true, noPush: false, noPublish: false });
28
29
  });
29
- (0, vitest_1.it)('given no push or publish flags when cli options are parsed then git push and package publish are disabled', () => {
30
- (0, vitest_1.expect)((0, index_1.parseCliOptions)(['--no-push', '--no-publish'])).toEqual({
30
+ (0, vitest_1.it)('given cli starts when options are parsed then it delegates parsing to CliOptionsService', () => {
31
+ const parseSpy = vitest_1.vi.spyOn(CliOptionsService_1.CliOptionsService.prototype, 'parse').mockReturnValue({
32
+ help: true,
31
33
  dryRun: false,
32
- help: false,
33
- noPush: true,
34
- noPublish: true,
35
- changelogTemplate: undefined,
36
- releaseCommitTemplate: undefined,
37
- });
38
- });
39
- (0, vitest_1.it)('given template override flags when cli options are parsed then values are read from named options', () => {
40
- (0, vitest_1.expect)((0, index_1.parseCliOptions)(['--dry-run', '--changelog-template', 'templates/custom-changelog.hbs', '--release-commit-template=templates/custom-release.hbs'])).toEqual({
41
- dryRun: true,
42
- help: false,
43
34
  noPush: false,
44
35
  noPublish: false,
45
- changelogTemplate: 'templates/custom-changelog.hbs',
46
- releaseCommitTemplate: 'templates/custom-release.hbs',
47
36
  });
37
+ const exitCode = (0, index_1.runCli)('/repo', ['--help']);
38
+ (0, vitest_1.expect)(exitCode).toBe(0);
39
+ (0, vitest_1.expect)(parseSpy).toHaveBeenCalledWith(['--help']);
48
40
  });
49
41
  (0, vitest_1.it)('given a runtime error when the cli fails then it delegates error reporting to ExceptionHandler', () => {
50
42
  const expectedError = new Error('boom');
@@ -57,4 +49,4 @@ const ExceptionHandler_1 = require("./services/ExceptionHandler");
57
49
  (0, vitest_1.expect)(handleSpy).toHaveBeenCalledWith(expectedError);
58
50
  });
59
51
  });
60
- //# sourceMappingURL=main.spec.js.map
52
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliOptions.d.ts","sourceRoot":"","sources":["../../src/models/CliOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CliOptions.js","sourceRoot":"","sources":["../src/CliOptions.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"CliOptions.js","sourceRoot":"","sources":["../../src/models/CliOptions.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { PackageJSON } from './PackageJSON';
2
- import { Sortable } from '../sortLessDependenciesFirst';
2
+ import { Sortable } from '../utils/sortLessDependenciesFirst';
3
3
  import { DependencyVersionChange } from './ReleaseTypes';
4
4
  import { SemVerBumpType } from './SemVerBumpType';
5
5
  export declare class NpmPackage implements Sortable {
@@ -1 +1 @@
1
- {"version":3,"file":"NpmPackage.d.ts","sourceRoot":"","sources":["../../src/models/NpmPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,qBAAa,UAAW,YAAW,QAAQ;IAMvC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAVlD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;gBAKnE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGlD,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAIvD,aAAa,CAAC,UAAU,EAAE,MAAM;IAIhC,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,iCAAiC;IAQzC,OAAO,CAAC,qBAAqB;IAK7B,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAuB,EAAE;IAiBtF,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAI1D,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;CAahD"}
1
+ {"version":3,"file":"NpmPackage.d.ts","sourceRoot":"","sources":["../../src/models/NpmPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,qBAAa,UAAW,YAAW,QAAQ;IAMvC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAVlD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;gBAKnE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGlD,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAIvD,aAAa,CAAC,UAAU,EAAE,MAAM;IAIhC,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,iCAAiC;IAQzC,OAAO,CAAC,qBAAqB;IAK7B,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAuB,EAAE;IAiBtF,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAI1D,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;CAahD"}
@@ -12,7 +12,9 @@ export declare class GithubPlugin implements ReleasePlugin {
12
12
  private readonly logger;
13
13
  private readonly config;
14
14
  private readonly githubReleaseView;
15
+ static createFromEnv(githubService: GithubService, logger: ConsoleLogger, githubReleaseView: GithubReleaseView, env?: NodeJS.ProcessEnv): GithubPlugin;
15
16
  constructor(githubService: GithubService, logger: ConsoleLogger, config: GithubPluginConfig, githubReleaseView: GithubReleaseView);
16
17
  onReleaseComplete(context: ReleaseCompletePluginContext): void;
18
+ private static readConfigFromEnv;
17
19
  }
18
20
  //# sourceMappingURL=GithubPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GithubPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAa,YAAW,aAAa;IAE9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAHjB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,iBAAiB;IAGvD,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;CAwC/D"}
1
+ {"version":3,"file":"GithubPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIlE,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AASD,qBAAa,YAAa,YAAW,aAAa;IAW9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAbpC,MAAM,CAAC,aAAa,CAClB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,YAAY;gBAKI,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,iBAAiB;IAGvD,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAyC9D,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAWjC"}
@@ -2,11 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GithubPlugin = void 0;
4
4
  const DomainException_1 = require("../exceptions/DomainException");
5
+ const zod_1 = require("zod");
6
+ const githubActionsSchema = zod_1.z.string().trim().toLowerCase();
7
+ const githubRepositorySchema = zod_1.z
8
+ .string()
9
+ .trim()
10
+ .regex(/^[^/\s]+\/[^/\s]+$/);
11
+ const githubTokenSchema = zod_1.z.string().trim().min(1);
5
12
  class GithubPlugin {
6
13
  githubService;
7
14
  logger;
8
15
  config;
9
16
  githubReleaseView;
17
+ static createFromEnv(githubService, logger, githubReleaseView, env = process.env) {
18
+ return new GithubPlugin(githubService, logger, GithubPlugin.readConfigFromEnv(env), githubReleaseView);
19
+ }
10
20
  constructor(githubService, logger, config, githubReleaseView) {
11
21
  this.githubService = githubService;
12
22
  this.logger = logger;
@@ -48,6 +58,16 @@ class GithubPlugin {
48
58
  this.logger.info(`RELEASE ${pkg.name}@${version}`);
49
59
  }
50
60
  }
61
+ static readConfigFromEnv(env) {
62
+ const githubActionsParse = githubActionsSchema.safeParse(env.GITHUB_ACTIONS);
63
+ const repositoryParse = githubRepositorySchema.safeParse(env.GITHUB_REPOSITORY);
64
+ const tokenParse = githubTokenSchema.safeParse(env.GITHUB_TOKEN);
65
+ return {
66
+ isGithubActions: githubActionsParse.success && githubActionsParse.data === 'true',
67
+ repository: repositoryParse.success ? repositoryParse.data : undefined,
68
+ token: tokenParse.success ? tokenParse.data : undefined,
69
+ };
70
+ }
51
71
  }
52
72
  exports.GithubPlugin = GithubPlugin;
53
73
  //# sourceMappingURL=GithubPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GithubPlugin.js","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.ts"],"names":[],"mappings":";;;AAIA,mEAA8E;AAQ9E,MAAa,YAAY;IAEJ;IACA;IACA;IACA;IAJnB,YACmB,aAA4B,EAC5B,MAAqB,EACrB,MAA0B,EAC1B,iBAAoC;QAHpC,kBAAa,GAAb,aAAa,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAoB;QAC1B,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAEJ,iBAAiB,CAAC,OAAqC;QACrD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,+CAA6B,EAAE,CAAC;QAC5C,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;gBAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE;gBACjC,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;gBAChC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;oBACnC,WAAW,EAAE,GAAG,CAAC,IAAI;oBACrB,OAAO;oBACP,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;oBACpD,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBACtE,CAAC;gBACF,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAhDD,oCAgDC"}
1
+ {"version":3,"file":"GithubPlugin.js","sourceRoot":"","sources":["../../src/plugins/GithubPlugin.ts"],"names":[],"mappings":"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"}