nx 22.0.0-beta.3 → 22.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +11 -11
- package/schemas/nx-schema.json +96 -83
- package/src/command-line/configure-ai-agents/command-object.d.ts +1 -1
- package/src/command-line/configure-ai-agents/command-object.d.ts.map +1 -1
- package/src/command-line/configure-ai-agents/command-object.js +18 -4
- package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
- package/src/command-line/configure-ai-agents/configure-ai-agents.js +58 -31
- package/src/command-line/nx-cloud/login/command-object.d.ts.map +1 -1
- package/src/command-line/nx-cloud/login/command-object.js +2 -2
- package/src/command-line/nx-cloud/logout/command-object.js +1 -1
- package/src/command-line/release/changelog.d.ts.map +1 -1
- package/src/command-line/release/changelog.js +40 -29
- package/src/command-line/release/command-object.d.ts +7 -3
- package/src/command-line/release/command-object.d.ts.map +1 -1
- package/src/command-line/release/config/config.d.ts.map +1 -1
- package/src/command-line/release/config/config.js +14 -0
- package/src/command-line/release/config/version-plans.d.ts.map +1 -1
- package/src/command-line/release/config/version-plans.js +4 -1
- package/src/command-line/release/publish.d.ts.map +1 -1
- package/src/command-line/release/publish.js +35 -11
- package/src/command-line/release/release.d.ts.map +1 -1
- package/src/command-line/release/release.js +31 -30
- package/src/command-line/release/utils/release-graph.d.ts +219 -0
- package/src/command-line/release/utils/release-graph.d.ts.map +1 -0
- package/src/command-line/release/utils/release-graph.js +658 -0
- package/src/command-line/release/utils/semver.d.ts +1 -2
- package/src/command-line/release/utils/semver.d.ts.map +1 -1
- package/src/command-line/release/utils/semver.js +3 -5
- package/src/command-line/release/utils/shared.d.ts +1 -1
- package/src/command-line/release/utils/shared.d.ts.map +1 -1
- package/src/command-line/release/utils/shared.js +49 -15
- package/src/command-line/release/version/release-group-processor.d.ts +3 -152
- package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
- package/src/command-line/release/version/release-group-processor.js +50 -569
- package/src/command-line/release/version/resolve-current-version.d.ts +1 -1
- package/src/command-line/release/version/resolve-current-version.d.ts.map +1 -1
- package/src/command-line/release/version/resolve-current-version.js +1 -1
- package/src/command-line/release/version/test-utils.d.ts +13 -4
- package/src/command-line/release/version/test-utils.d.ts.map +1 -1
- package/src/command-line/release/version/test-utils.js +26 -11
- package/src/command-line/release/version/version-actions.d.ts +12 -5
- package/src/command-line/release/version/version-actions.d.ts.map +1 -1
- package/src/command-line/release/version/version-actions.js +36 -19
- package/src/command-line/release/version.d.ts +6 -1
- package/src/command-line/release/version.d.ts.map +1 -1
- package/src/command-line/release/version.js +57 -28
- package/src/config/nx-json.d.ts +26 -4
- package/src/config/nx-json.d.ts.map +1 -1
- package/src/config/nx-json.js +8 -8
- package/src/tasks-runner/run-command.js +2 -2
|
@@ -3,7 +3,7 @@ import type { Tree } from '../../../generators/tree';
|
|
|
3
3
|
import type { ReleaseGroupWithName } from '../config/filter-release-groups';
|
|
4
4
|
import { getLatestGitTagForPattern } from '../utils/git';
|
|
5
5
|
import { ProjectLogger } from './project-logger';
|
|
6
|
-
import type { FinalConfigForProject } from '
|
|
6
|
+
import type { FinalConfigForProject } from '../utils/release-graph';
|
|
7
7
|
import { VersionActions } from './version-actions';
|
|
8
8
|
export declare function resolveCurrentVersion(tree: Tree, projectGraphNode: ProjectGraphProjectNode, releaseGroup: ReleaseGroupWithName, versionActions: VersionActions, logger: ProjectLogger, cachedCurrentVersionsPerFixedReleaseGroup: Map<string, // release group name
|
|
9
9
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-current-version.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/resolve-current-version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"resolve-current-version.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/resolve-current-version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,EACD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,GAC3E,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCxB;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,EACD,qBAAqB,EAAE,qBAAqB,GAC3C,OAAO,CAAC,MAAM,CAAC,CA8GjB;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,uBAAuB,EACzC,YAAY,EAAE,oBAAoB,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,yCAAyC,EAAE,GAAG,CAC5C,MAAM,EAAE,qBAAqB;AAC7B;IACE,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,EACD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,GAC3E,OAAO,CAAC,MAAM,CAAC,CAiFjB"}
|
|
@@ -48,7 +48,7 @@ async function resolveCurrentVersionFromDisk(tree, projectGraphNode, versionActi
|
|
|
48
48
|
if (err === nullVersionError) {
|
|
49
49
|
throw err;
|
|
50
50
|
}
|
|
51
|
-
throw new Error(`The project "${projectGraphNode.name}" does not have a ${versionActions.validManifestFilenames.join(' or ')} file available in
|
|
51
|
+
throw new Error(`The project "${projectGraphNode.name}" does not have a ${versionActions.validManifestFilenames.join(' or ')} file available in ${projectGraphNode.data.root}
|
|
52
52
|
|
|
53
53
|
To fix this you will either need to add a ${versionActions.validManifestFilenames.join(' or ')} file at that location, or configure "release" within your nx.json to use a different "currentVersionResolver" or "versionActions" implementation that supports this setup`);
|
|
54
54
|
}
|
|
@@ -2,7 +2,8 @@ import type { NxJsonConfiguration, NxReleaseVersionConfiguration } from '../../.
|
|
|
2
2
|
import type { ProjectGraph } from '../../../config/project-graph';
|
|
3
3
|
import type { Tree } from '../../../generators/tree';
|
|
4
4
|
import { NxReleaseConfig } from '../config/config';
|
|
5
|
-
import { FinalConfigForProject } from '
|
|
5
|
+
import { type FinalConfigForProject } from '../utils/release-graph';
|
|
6
|
+
import { ReleaseGroupProcessor } from './release-group-processor';
|
|
6
7
|
import { VersionActions } from './version-actions';
|
|
7
8
|
export declare function createNxReleaseConfigAndPopulateWorkspace(tree: Tree, graphDefinition: string, additionalNxReleaseConfig: Exclude<NxJsonConfiguration['release'], 'groups'>, mockResolveCurrentVersion?: any, filters?: {
|
|
8
9
|
projects?: string[];
|
|
@@ -10,13 +11,21 @@ export declare function createNxReleaseConfigAndPopulateWorkspace(tree: Tree, gr
|
|
|
10
11
|
}): Promise<{
|
|
11
12
|
projectGraph: ProjectGraph;
|
|
12
13
|
nxReleaseConfig: NxReleaseConfig;
|
|
13
|
-
releaseGroups: import("../config/filter-release-groups").ReleaseGroupWithName[];
|
|
14
|
-
releaseGroupToFilteredProjects: Map<import("../config/filter-release-groups").ReleaseGroupWithName, Set<string>>;
|
|
15
14
|
filters: {
|
|
16
15
|
projects?: string[];
|
|
17
16
|
groups?: string[];
|
|
18
17
|
};
|
|
19
18
|
}>;
|
|
19
|
+
export declare function createTestReleaseGroupProcessor(tree: Tree, projectGraph: ProjectGraph, nxReleaseConfig: NxReleaseConfig, filters: {
|
|
20
|
+
projects?: string[];
|
|
21
|
+
groups?: string[];
|
|
22
|
+
}, options?: {
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
verbose?: boolean;
|
|
25
|
+
firstRelease?: boolean;
|
|
26
|
+
preid?: string;
|
|
27
|
+
userGivenSpecifier?: string;
|
|
28
|
+
}): Promise<ReleaseGroupProcessor>;
|
|
20
29
|
/**
|
|
21
30
|
* A non-production grade rust implementation to prove out loading multiple different versionActions in various setups
|
|
22
31
|
*/
|
|
@@ -77,7 +86,7 @@ export declare class ExampleNonSemverVersionActions extends VersionActions {
|
|
|
77
86
|
export declare function parseGraphDefinition(definition: string): {
|
|
78
87
|
projects: any;
|
|
79
88
|
};
|
|
80
|
-
export declare function mockResolveVersionActionsForProjectImplementation(tree: Tree, releaseGroup: any, projectGraphNode: any, finalConfigForProject: FinalConfigForProject
|
|
89
|
+
export declare function mockResolveVersionActionsForProjectImplementation(tree: Tree, releaseGroup: any, projectGraphNode: any, finalConfigForProject: FinalConfigForProject): Promise<{
|
|
81
90
|
versionActionsPath: string;
|
|
82
91
|
versionActions: ExampleRustVersionActions;
|
|
83
92
|
afterAllProjectsVersioned?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/test-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAGL,eAAe,EAChB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/test-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExampleNonSemverVersionActions = exports.ExampleRustVersionActions = void 0;
|
|
4
4
|
exports.createNxReleaseConfigAndPopulateWorkspace = createNxReleaseConfigAndPopulateWorkspace;
|
|
5
|
+
exports.createTestReleaseGroupProcessor = createTestReleaseGroupProcessor;
|
|
5
6
|
exports.parseGraphDefinition = parseGraphDefinition;
|
|
6
7
|
exports.mockResolveVersionActionsForProjectImplementation = mockResolveVersionActionsForProjectImplementation;
|
|
7
8
|
const j_toml_1 = require("@ltd/j-toml");
|
|
@@ -9,7 +10,8 @@ const node_path_1 = require("node:path");
|
|
|
9
10
|
const json_1 = require("../../../generators/utils/json");
|
|
10
11
|
const file_map_utils_1 = require("../../../project-graph/file-map-utils");
|
|
11
12
|
const config_1 = require("../config/config");
|
|
12
|
-
const
|
|
13
|
+
const release_graph_1 = require("../utils/release-graph");
|
|
14
|
+
const release_group_processor_1 = require("./release-group-processor");
|
|
13
15
|
const version_actions_1 = require("./version-actions");
|
|
14
16
|
async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition, additionalNxReleaseConfig, mockResolveCurrentVersion, filters = {}) {
|
|
15
17
|
const graph = parseGraphDefinition(graphDefinition);
|
|
@@ -21,10 +23,6 @@ async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition,
|
|
|
21
23
|
if (configError) {
|
|
22
24
|
throw configError;
|
|
23
25
|
}
|
|
24
|
-
let { error: filterError, releaseGroups, releaseGroupToFilteredProjects, } = (0, filter_release_groups_1.filterReleaseGroups)(projectGraph, nxReleaseConfig, filters.projects, filters.groups);
|
|
25
|
-
if (filterError) {
|
|
26
|
-
throw filterError;
|
|
27
|
-
}
|
|
28
26
|
// Mock the implementation of resolveCurrentVersion to reliably return the version of the project based on our graph definition
|
|
29
27
|
mockResolveCurrentVersion?.mockImplementation((_, { name }) => {
|
|
30
28
|
for (const [projectName, project] of Object.entries(graph.projects)) {
|
|
@@ -37,11 +35,28 @@ async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition,
|
|
|
37
35
|
return {
|
|
38
36
|
projectGraph,
|
|
39
37
|
nxReleaseConfig: nxReleaseConfig,
|
|
40
|
-
releaseGroups,
|
|
41
|
-
releaseGroupToFilteredProjects,
|
|
42
38
|
filters,
|
|
43
39
|
};
|
|
44
40
|
}
|
|
41
|
+
async function createTestReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, filters, options = {}) {
|
|
42
|
+
const releaseGraph = await (0, release_graph_1.createReleaseGraph)({
|
|
43
|
+
tree,
|
|
44
|
+
projectGraph,
|
|
45
|
+
nxReleaseConfig,
|
|
46
|
+
filters,
|
|
47
|
+
firstRelease: options.firstRelease ?? false,
|
|
48
|
+
preid: options.preid,
|
|
49
|
+
verbose: options.verbose ?? false,
|
|
50
|
+
});
|
|
51
|
+
return new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, releaseGraph, {
|
|
52
|
+
dryRun: options.dryRun ?? false,
|
|
53
|
+
verbose: options.verbose ?? false,
|
|
54
|
+
firstRelease: options.firstRelease ?? false,
|
|
55
|
+
preid: options.preid ?? '',
|
|
56
|
+
userGivenSpecifier: options.userGivenSpecifier,
|
|
57
|
+
filters,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
45
60
|
class ExampleRustVersionActions extends version_actions_1.VersionActions {
|
|
46
61
|
constructor() {
|
|
47
62
|
super(...arguments);
|
|
@@ -373,13 +388,13 @@ function setupGraph(tree, graph) {
|
|
|
373
388
|
}
|
|
374
389
|
const exampleRustVersionActions = '__EXAMPLE_RUST_VERSION_ACTIONS__';
|
|
375
390
|
const exampleNonSemverVersionActions = '__EXAMPLE_NON_SEMVER_VERSION_ACTIONS__';
|
|
376
|
-
async function mockResolveVersionActionsForProjectImplementation(tree, releaseGroup, projectGraphNode, finalConfigForProject
|
|
391
|
+
async function mockResolveVersionActionsForProjectImplementation(tree, releaseGroup, projectGraphNode, finalConfigForProject) {
|
|
377
392
|
if (projectGraphNode.data.release?.versionActions ===
|
|
378
393
|
exampleRustVersionActions ||
|
|
379
394
|
releaseGroup.versionActions === exampleRustVersionActions) {
|
|
380
395
|
const versionActions = new ExampleRustVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
381
396
|
// Initialize the versionActions with all the required manifest paths etc
|
|
382
|
-
await versionActions.init(tree
|
|
397
|
+
await versionActions.init(tree);
|
|
383
398
|
return {
|
|
384
399
|
versionActionsPath: exampleRustVersionActions,
|
|
385
400
|
versionActions,
|
|
@@ -390,7 +405,7 @@ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGr
|
|
|
390
405
|
releaseGroup.versionActions === exampleNonSemverVersionActions) {
|
|
391
406
|
const versionActions = new ExampleNonSemverVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
392
407
|
// Initialize the versionActions with all the required manifest paths etc
|
|
393
|
-
await versionActions.init(tree
|
|
408
|
+
await versionActions.init(tree);
|
|
394
409
|
return {
|
|
395
410
|
versionActionsPath: exampleNonSemverVersionActions,
|
|
396
411
|
versionActions,
|
|
@@ -402,7 +417,7 @@ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGr
|
|
|
402
417
|
const JsVersionActions = loaded.default;
|
|
403
418
|
const versionActions = new JsVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
404
419
|
// Initialize the versionActions with all the required manifest paths etc
|
|
405
|
-
await versionActions.init(tree
|
|
420
|
+
await versionActions.init(tree);
|
|
406
421
|
return {
|
|
407
422
|
versionActionsPath,
|
|
408
423
|
versionActions: versionActions,
|
|
@@ -2,8 +2,8 @@ import { ReleaseType } from 'semver';
|
|
|
2
2
|
import { NxReleaseVersionConfiguration } from '../../../config/nx-json';
|
|
3
3
|
import type { ProjectGraph, ProjectGraphDependency, ProjectGraphProjectNode } from '../../../config/project-graph';
|
|
4
4
|
import type { Tree } from '../../../generators/tree';
|
|
5
|
-
import { ReleaseGroupWithName } from '../config/filter-release-groups';
|
|
6
|
-
import { FinalConfigForProject } from '
|
|
5
|
+
import type { ReleaseGroupWithName } from '../config/filter-release-groups';
|
|
6
|
+
import type { FinalConfigForProject } from '../utils/release-graph';
|
|
7
7
|
export type SemverBumpType = ReleaseType | 'none';
|
|
8
8
|
/**
|
|
9
9
|
* Implementation details of performing any actions after all projects have been versioned.
|
|
@@ -27,7 +27,7 @@ export type AfterAllProjectsVersioned = (cwd: string, opts: {
|
|
|
27
27
|
changedFiles: string[];
|
|
28
28
|
deletedFiles: string[];
|
|
29
29
|
}>;
|
|
30
|
-
export declare function resolveVersionActionsForProject(tree: Tree, releaseGroup: ReleaseGroupWithName, projectGraphNode: ProjectGraphProjectNode, finalConfigForProject: FinalConfigForProject
|
|
30
|
+
export declare function resolveVersionActionsForProject(tree: Tree, releaseGroup: ReleaseGroupWithName, projectGraphNode: ProjectGraphProjectNode, finalConfigForProject: FinalConfigForProject): Promise<{
|
|
31
31
|
versionActionsPath: string;
|
|
32
32
|
versionActions: VersionActions;
|
|
33
33
|
afterAllProjectsVersioned: AfterAllProjectsVersioned;
|
|
@@ -59,9 +59,15 @@ export declare abstract class VersionActions {
|
|
|
59
59
|
}[];
|
|
60
60
|
constructor(releaseGroup: ReleaseGroupWithName, projectGraphNode: ProjectGraphProjectNode, finalConfigForProject: FinalConfigForProject);
|
|
61
61
|
/**
|
|
62
|
-
* Asynchronous initialization of the version actions and
|
|
62
|
+
* Asynchronous initialization of the version actions and resolution of manifest paths.
|
|
63
|
+
* Note: This does NOT validate that manifest files exist - that happens later in validate().
|
|
63
64
|
*/
|
|
64
|
-
init(tree: Tree
|
|
65
|
+
init(tree: Tree): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Validates that manifest files actually exist.
|
|
68
|
+
* This will be called after all preVersionCommands have run.
|
|
69
|
+
*/
|
|
70
|
+
validate(tree: Tree): Promise<void>;
|
|
65
71
|
/**
|
|
66
72
|
* The default implementation will calculate the new version based on semver. If semver is not applicable to a
|
|
67
73
|
* particular versioning use-case, this method should be overridden with custom logic.
|
|
@@ -171,6 +177,7 @@ export declare abstract class VersionActions {
|
|
|
171
177
|
}
|
|
172
178
|
export declare class NOOP_VERSION_ACTIONS extends VersionActions {
|
|
173
179
|
validManifestFilenames: any;
|
|
180
|
+
validate(tree: Tree): Promise<void>;
|
|
174
181
|
readCurrentVersionFromRegistry(tree: Tree, currentVersionResolverMetadata: NxReleaseVersionConfiguration['currentVersionResolverMetadata']): Promise<{
|
|
175
182
|
currentVersion: string | null;
|
|
176
183
|
logText: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-actions.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/version-actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAMrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"version-actions.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/version/version-actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAMrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAOpE,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AA6BlD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrD,KACE,OAAO,CAAC;IACX,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CAAC;AAkBH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,oBAAoB,EAClC,gBAAgB,EAAE,uBAAuB,EACzC,qBAAqB,EAAE,qBAAqB,GAC3C,OAAO,CAAC;IACT,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,yBAAyB,EAAE,yBAAyB,CAAC;CACtD,CAAC,CA4ED;AAED,8BAAsB,cAAc;IAwBzB,YAAY,EAAE,oBAAoB;IAClC,gBAAgB,EAAE,uBAAuB;IACzC,qBAAqB,EAAE,qBAAqB;IAzBrD;;;;;;;OAOG;IACH,QAAQ,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjD;;;;;;;OAOG;IACH,iBAAiB,EAAE;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,gCAAgC,EAAE,OAAO,CAAC;KAC3C,EAAE,CAAM;gBAGA,YAAY,EAAE,oBAAoB,EAClC,gBAAgB,EAAE,uBAAuB,EACzC,qBAAqB,EAAE,qBAAqB;IAGrD;;;OAGG;IACG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDrC;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BzC;;;;;;;;;OASG;IACG,mBAAmB,CACvB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAkCF;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,oCAAoC,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QACjE,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IAET;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,8BAA8B,CACrC,IAAI,EAAE,IAAI,EACV,8BAA8B,EAAE,6BAA6B,CAAC,gCAAgC,CAAC,GAC9F,OAAO,CAAC;QACT,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;IAET;;;;;;;;;OASG;IACG,gBAAgB,CACpB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAQpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,8BAA8B,CACrC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC;QACT,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,CAAC;IAEF;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,oBAAoB,CAC3B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAEpB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,yBAAyB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,OAAO,CAAC,MAAM,EAAE,CAAC;CACrB;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,sBAAsB,MAAQ;IAExB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,8BAA8B,CAC5B,IAAI,EAAE,IAAI,EACV,8BAA8B,EAAE,6BAA6B,CAAC,gCAAgC,CAAC,GAC9F,OAAO,CAAC;QACT,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;IAIT,oCAAoC,CAClC,IAAI,EAAE,IAAI,GACT,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAInE,8BAA8B,CAC5B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC;QACT,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,CAAC;IAOI,mBAAmB,CACvB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAOF,yBAAyB,CACvB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGxE"}
|
|
@@ -32,7 +32,7 @@ function resolveVersionActionsPath(path, projectGraphNode) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
const versionActionsResolutionCache = new Map();
|
|
35
|
-
async function resolveVersionActionsForProject(tree, releaseGroup, projectGraphNode, finalConfigForProject
|
|
35
|
+
async function resolveVersionActionsForProject(tree, releaseGroup, projectGraphNode, finalConfigForProject) {
|
|
36
36
|
// Project level release version config takes priority, if set
|
|
37
37
|
const projectVersionConfig = projectGraphNode.data.release?.version;
|
|
38
38
|
const releaseGroupVersionConfig = releaseGroup.version;
|
|
@@ -76,7 +76,7 @@ async function resolveVersionActionsForProject(tree, releaseGroup, projectGraphN
|
|
|
76
76
|
}
|
|
77
77
|
const versionActions = new VersionActionsClass(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
78
78
|
// Initialize the version actions with all the required manifest paths etc
|
|
79
|
-
await versionActions.init(tree
|
|
79
|
+
await versionActions.init(tree);
|
|
80
80
|
return {
|
|
81
81
|
versionActionsPath,
|
|
82
82
|
versionActions,
|
|
@@ -99,9 +99,10 @@ class VersionActions {
|
|
|
99
99
|
this.manifestsToUpdate = [];
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
-
* Asynchronous initialization of the version actions and
|
|
102
|
+
* Asynchronous initialization of the version actions and resolution of manifest paths.
|
|
103
|
+
* Note: This does NOT validate that manifest files exist - that happens later in validate().
|
|
103
104
|
*/
|
|
104
|
-
async init(tree
|
|
105
|
+
async init(tree) {
|
|
105
106
|
// Default to the first available source manifest root, if applicable, if no custom manifest roots are provided
|
|
106
107
|
if (this.validManifestFilenames?.length &&
|
|
107
108
|
this.finalConfigForProject.manifestRootsToUpdate.length === 0) {
|
|
@@ -125,26 +126,38 @@ class VersionActions {
|
|
|
125
126
|
}),
|
|
126
127
|
};
|
|
127
128
|
});
|
|
129
|
+
// Build manifestsToUpdate but don't validate existence yet as that could break release graph construction before preVersionCommands have run
|
|
128
130
|
for (const interpolatedManifestRoot of interpolatedManifestRoots) {
|
|
129
|
-
let hasValidManifest = false;
|
|
130
131
|
for (const manifestFilename of this.validManifestFilenames) {
|
|
131
132
|
const manifestPath = (0, node_path_1.join)(interpolatedManifestRoot.path, manifestFilename);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
133
|
+
// Just add the first matching filename pattern, actual existence check happens in validate()
|
|
134
|
+
this.manifestsToUpdate.push({
|
|
135
|
+
...interpolatedManifestRoot,
|
|
136
|
+
manifestPath,
|
|
137
|
+
});
|
|
138
|
+
break;
|
|
140
139
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Validates that manifest files actually exist.
|
|
144
|
+
* This will be called after all preVersionCommands have run.
|
|
145
|
+
*/
|
|
146
|
+
async validate(tree) {
|
|
147
|
+
// Skip if no manifest files are expected
|
|
148
|
+
if (!this.validManifestFilenames?.length) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Simply check each manifest exists
|
|
152
|
+
for (const manifest of this.manifestsToUpdate) {
|
|
153
|
+
if (!tree.exists(manifest.manifestPath)) {
|
|
146
154
|
const validManifestFilenames = this.validManifestFilenames?.join(' or ');
|
|
147
|
-
|
|
155
|
+
// Get directory path for error message using Node's path module for cross-platform compatibility
|
|
156
|
+
let rootPath = manifest.manifestPath;
|
|
157
|
+
for (const filename of this.validManifestFilenames) {
|
|
158
|
+
rootPath = rootPath.replace(filename, '');
|
|
159
|
+
}
|
|
160
|
+
throw new Error(`The project "${this.projectGraphNode.name}" does not have a ${validManifestFilenames} file available in ${rootPath}
|
|
148
161
|
|
|
149
162
|
To fix this you will either need to add a ${validManifestFilenames} file at that location, or configure "release" within your nx.json to exclude "${this.projectGraphNode.name}" from the current release group, or amend the "release.version.manifestRootsToUpdate" configuration to point to where the relevant manifest should be.
|
|
150
163
|
|
|
@@ -204,6 +217,10 @@ class NOOP_VERSION_ACTIONS extends VersionActions {
|
|
|
204
217
|
super(...arguments);
|
|
205
218
|
this.validManifestFilenames = null;
|
|
206
219
|
}
|
|
220
|
+
async validate(tree) {
|
|
221
|
+
// Nothing to validate, patch base method
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
207
224
|
readCurrentVersionFromRegistry(tree, currentVersionResolverMetadata) {
|
|
208
225
|
return Promise.resolve(null);
|
|
209
226
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NxReleaseConfiguration } from '../../config/nx-json';
|
|
2
2
|
import { VersionOptions } from './command-object';
|
|
3
|
+
import { ReleaseGraph } from './utils/release-graph';
|
|
3
4
|
import { VersionData } from './utils/shared';
|
|
4
|
-
export declare const validReleaseVersionPrefixes: readonly ["auto", "", "~", "^", "="];
|
|
5
5
|
export interface NxReleaseVersionResult {
|
|
6
6
|
/**
|
|
7
7
|
* In one specific (and very common) case, an overall workspace version is relevant, for example when there is
|
|
@@ -15,6 +15,11 @@ export interface NxReleaseVersionResult {
|
|
|
15
15
|
*/
|
|
16
16
|
workspaceVersion: (string | null) | undefined;
|
|
17
17
|
projectsVersionData: VersionData;
|
|
18
|
+
/**
|
|
19
|
+
* The release graph that was built or reused during this operation.
|
|
20
|
+
* This can be passed to subsequent operations (changelog, publish) to avoid recomputing.
|
|
21
|
+
*/
|
|
22
|
+
releaseGraph: ReleaseGraph;
|
|
18
23
|
}
|
|
19
24
|
export declare const releaseVersionCLIHandler: (args: VersionOptions) => Promise<number>;
|
|
20
25
|
export declare function createAPI(overrideReleaseConfig: NxReleaseConfiguration): (args: VersionOptions) => Promise<NxReleaseVersionResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/version.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EAGvB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/version.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EAGvB,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAclD,OAAO,EAAE,YAAY,EAAsB,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EACL,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AAKxB,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;OASG;IACH,gBAAgB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C,mBAAmB,EAAE,WAAW,CAAC;IACjC;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,eAAO,MAAM,wBAAwB,GAAI,MAAM,cAAc,oBACN,CAAC;AAExD,wBAAgB,SAAS,CAAC,qBAAqB,EAAE,sBAAsB,IAOnE,MAAM,cAAc,KACnB,OAAO,CAAC,sBAAsB,CAAC,CAyWnC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.releaseVersionCLIHandler =
|
|
3
|
+
exports.releaseVersionCLIHandler = void 0;
|
|
4
4
|
exports.createAPI = createAPI;
|
|
5
5
|
const chalk = require("chalk");
|
|
6
6
|
const node_child_process_1 = require("node:child_process");
|
|
7
7
|
const node_fs_1 = require("node:fs");
|
|
8
8
|
const nx_json_1 = require("../../config/nx-json");
|
|
9
|
+
const run_commands_impl_1 = require("../../executors/run-commands/run-commands.impl");
|
|
9
10
|
const format_changed_files_with_prettier_if_available_1 = require("../../generators/internal-utils/format-changed-files-with-prettier-if-available");
|
|
10
11
|
const tree_1 = require("../../generators/tree");
|
|
11
12
|
const file_map_utils_1 = require("../../project-graph/file-map-utils");
|
|
@@ -16,18 +17,15 @@ const path_1 = require("../../utils/path");
|
|
|
16
17
|
const workspace_root_1 = require("../../utils/workspace-root");
|
|
17
18
|
const config_1 = require("./config/config");
|
|
18
19
|
const deep_merge_json_1 = require("./config/deep-merge-json");
|
|
19
|
-
const filter_release_groups_1 = require("./config/filter-release-groups");
|
|
20
20
|
const version_plans_1 = require("./config/version-plans");
|
|
21
21
|
const git_1 = require("./utils/git");
|
|
22
22
|
const print_changes_1 = require("./utils/print-changes");
|
|
23
23
|
const print_config_1 = require("./utils/print-config");
|
|
24
|
+
const release_graph_1 = require("./utils/release-graph");
|
|
24
25
|
const resolve_nx_json_error_message_1 = require("./utils/resolve-nx-json-error-message");
|
|
25
26
|
const shared_1 = require("./utils/shared");
|
|
26
|
-
const release_group_processor_1 = require("./version/release-group-processor");
|
|
27
27
|
const version_plan_utils_1 = require("./utils/version-plan-utils");
|
|
28
|
-
const
|
|
29
|
-
// Reexport some utils for use in plugin release-version generator implementations
|
|
30
|
-
exports.validReleaseVersionPrefixes = ['auto', '', '~', '^', '='];
|
|
28
|
+
const release_group_processor_1 = require("./version/release-group-processor");
|
|
31
29
|
const releaseVersionCLIHandler = (args) => (0, handle_errors_1.handleErrors)(args.verbose, () => createAPI({})(args));
|
|
32
30
|
exports.releaseVersionCLIHandler = releaseVersionCLIHandler;
|
|
33
31
|
function createAPI(overrideReleaseConfig) {
|
|
@@ -71,27 +69,40 @@ function createAPI(overrideReleaseConfig) {
|
|
|
71
69
|
});
|
|
72
70
|
process.exit(1);
|
|
73
71
|
}
|
|
74
|
-
const
|
|
75
|
-
if
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, args.verbose);
|
|
73
|
+
// Use pre-built release graph if provided, otherwise create a new one
|
|
74
|
+
const releaseGraph = args.releaseGraph ||
|
|
75
|
+
(await (0, release_graph_1.createReleaseGraph)({
|
|
76
|
+
tree,
|
|
77
|
+
projectGraph,
|
|
78
|
+
nxReleaseConfig,
|
|
79
|
+
filters: {
|
|
80
|
+
projects: args.projects,
|
|
81
|
+
groups: args.groups,
|
|
82
|
+
},
|
|
83
|
+
firstRelease: args.firstRelease,
|
|
84
|
+
verbose: args.verbose,
|
|
85
|
+
preid: args.preid,
|
|
86
|
+
versionActionsOptionsOverrides: args.versionActionsOptionsOverrides,
|
|
87
|
+
}));
|
|
88
|
+
// Display filter log if filters were applied
|
|
89
|
+
if (releaseGraph.filterLog &&
|
|
80
90
|
process.env.NX_RELEASE_INTERNAL_SUPPRESS_FILTER_LOG !== 'true') {
|
|
81
|
-
output_1.output.note(filterLog);
|
|
91
|
+
output_1.output.note(releaseGraph.filterLog);
|
|
82
92
|
}
|
|
83
93
|
if (!args.specifier) {
|
|
84
94
|
const rawVersionPlans = await (0, version_plans_1.readRawVersionPlans)();
|
|
85
|
-
await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
|
|
95
|
+
await (0, version_plans_1.setResolvedVersionPlansOnGroups)(rawVersionPlans, releaseGraph.releaseGroups, Object.keys(projectGraph.nodes), args.verbose);
|
|
86
96
|
// Validate version plans against the filter after resolution
|
|
87
|
-
const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGroups, releaseGroupToFilteredProjects);
|
|
97
|
+
const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects);
|
|
88
98
|
if (versionPlanValidationError) {
|
|
89
99
|
output_1.output.error(versionPlanValidationError);
|
|
90
100
|
process.exit(1);
|
|
91
101
|
}
|
|
92
102
|
}
|
|
93
103
|
else {
|
|
94
|
-
if (args.verbose &&
|
|
104
|
+
if (args.verbose &&
|
|
105
|
+
releaseGraph.releaseGroups.some((g) => !!g.versionPlans)) {
|
|
95
106
|
console.log(`Skipping version plan discovery as a specifier was provided`);
|
|
96
107
|
}
|
|
97
108
|
}
|
|
@@ -108,14 +119,24 @@ function createAPI(overrideReleaseConfig) {
|
|
|
108
119
|
});
|
|
109
120
|
/**
|
|
110
121
|
* Run any configured pre-version command for the selected release groups
|
|
122
|
+
* in topological order
|
|
111
123
|
*/
|
|
112
|
-
for (const
|
|
124
|
+
for (const groupName of releaseGraph.sortedReleaseGroups) {
|
|
125
|
+
const releaseGroup = releaseGraph.releaseGroups.find((g) => g.name === groupName);
|
|
126
|
+
if (!releaseGroup) {
|
|
127
|
+
// Release group was filtered out, skip
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
113
130
|
runPreVersionCommand(releaseGroup.version?.groupPreVersionCommand, {
|
|
114
131
|
dryRun: args.dryRun,
|
|
115
132
|
verbose: args.verbose,
|
|
116
133
|
}, releaseGroup);
|
|
117
134
|
}
|
|
118
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Validate the resolved data for the release graph, e.g. that manifest files exist for all projects that will be processed.
|
|
137
|
+
* This happens after preVersionCommands run, as those commands may create manifest files needed for versioning.
|
|
138
|
+
*/
|
|
139
|
+
await releaseGraph.validate(tree);
|
|
119
140
|
const commitMessage = args.gitCommitMessage || nxReleaseConfig.version.git.commitMessage;
|
|
120
141
|
/**
|
|
121
142
|
* additionalChangedFiles are files which need to be updated as a side-effect of versioning (such as package manager lock files),
|
|
@@ -123,7 +144,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
123
144
|
*/
|
|
124
145
|
const additionalChangedFiles = new Set();
|
|
125
146
|
const additionalDeletedFiles = new Set();
|
|
126
|
-
const processor = new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig,
|
|
147
|
+
const processor = new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, releaseGraph, {
|
|
127
148
|
dryRun: args.dryRun,
|
|
128
149
|
verbose: args.verbose,
|
|
129
150
|
firstRelease: args.firstRelease,
|
|
@@ -136,7 +157,6 @@ function createAPI(overrideReleaseConfig) {
|
|
|
136
157
|
versionActionsOptionsOverrides: args.versionActionsOptionsOverrides,
|
|
137
158
|
});
|
|
138
159
|
try {
|
|
139
|
-
await processor.init();
|
|
140
160
|
await processor.processGroups();
|
|
141
161
|
// Delete processed version plan files if applicable
|
|
142
162
|
if (args.deleteVersionPlans) {
|
|
@@ -174,8 +194,14 @@ function createAPI(overrideReleaseConfig) {
|
|
|
174
194
|
}
|
|
175
195
|
/**
|
|
176
196
|
* Run any configured docker pre-version command for the selected release groups
|
|
197
|
+
* in topological order (dependencies before dependents)
|
|
177
198
|
*/
|
|
178
|
-
for (const
|
|
199
|
+
for (const groupName of releaseGraph.sortedReleaseGroups) {
|
|
200
|
+
const releaseGroup = releaseGraph.releaseGroups.find((g) => g.name === groupName);
|
|
201
|
+
if (!releaseGroup) {
|
|
202
|
+
// Release group was filtered out, skip
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
179
205
|
if (releaseGroup.docker?.groupPreVersionCommand) {
|
|
180
206
|
runPreVersionCommand(releaseGroup.docker.groupPreVersionCommand, {
|
|
181
207
|
dryRun: args.dryRun,
|
|
@@ -184,7 +210,8 @@ function createAPI(overrideReleaseConfig) {
|
|
|
184
210
|
}
|
|
185
211
|
}
|
|
186
212
|
// TODO(colum): Remove when Docker support is no longer experimental
|
|
187
|
-
if (nxReleaseConfig.docker ||
|
|
213
|
+
if (nxReleaseConfig.docker ||
|
|
214
|
+
releaseGraph.releaseGroups.some((rg) => rg.docker)) {
|
|
188
215
|
output_1.output.warn({
|
|
189
216
|
title: 'Warning',
|
|
190
217
|
bodyLines: [
|
|
@@ -196,15 +223,15 @@ function createAPI(overrideReleaseConfig) {
|
|
|
196
223
|
const versionData = processor.getVersionData();
|
|
197
224
|
// Resolve any git tags as early as possible so that we can hard error in case of any duplicates before reaching the actual git command
|
|
198
225
|
const gitTagValues = args.gitTag ?? nxReleaseConfig.version.git.tag
|
|
199
|
-
? (0, shared_1.createGitTagValues)(releaseGroups, releaseGroupToFilteredProjects, versionData)
|
|
226
|
+
? (0, shared_1.createGitTagValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, versionData)
|
|
200
227
|
: [];
|
|
201
228
|
(0, shared_1.handleDuplicateGitTags)(gitTagValues);
|
|
202
229
|
// Only applicable when there is a single release group with a fixed relationship
|
|
203
230
|
let workspaceVersion = undefined;
|
|
204
|
-
if (releaseGroups.length === 1) {
|
|
205
|
-
const releaseGroup = releaseGroups[0];
|
|
231
|
+
if (releaseGraph.releaseGroups.length === 1) {
|
|
232
|
+
const releaseGroup = releaseGraph.releaseGroups[0];
|
|
206
233
|
if (releaseGroup.projectsRelationship === 'fixed') {
|
|
207
|
-
const releaseGroupProjectNames = Array.from(releaseGroupToFilteredProjects.get(releaseGroup));
|
|
234
|
+
const releaseGroupProjectNames = Array.from(releaseGraph.releaseGroupToFilteredProjects.get(releaseGroup));
|
|
208
235
|
workspaceVersion = versionData[releaseGroupProjectNames[0]].newVersion; // all projects have the same version so we can just grab the first
|
|
209
236
|
}
|
|
210
237
|
}
|
|
@@ -218,6 +245,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
218
245
|
return {
|
|
219
246
|
workspaceVersion,
|
|
220
247
|
projectsVersionData: versionData,
|
|
248
|
+
releaseGraph,
|
|
221
249
|
};
|
|
222
250
|
}
|
|
223
251
|
if (args.gitCommit ?? nxReleaseConfig.version.git.commit) {
|
|
@@ -226,7 +254,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
226
254
|
deletedFiles,
|
|
227
255
|
isDryRun: !!args.dryRun,
|
|
228
256
|
isVerbose: !!args.verbose,
|
|
229
|
-
gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGroups, releaseGroupToFilteredProjects, versionData, commitMessage),
|
|
257
|
+
gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, versionData, commitMessage),
|
|
230
258
|
gitCommitArgs: args.gitCommitArgs || nxReleaseConfig.version.git.commitArgs,
|
|
231
259
|
});
|
|
232
260
|
}
|
|
@@ -263,6 +291,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
263
291
|
return {
|
|
264
292
|
workspaceVersion,
|
|
265
293
|
projectsVersionData: versionData,
|
|
294
|
+
releaseGraph,
|
|
266
295
|
};
|
|
267
296
|
};
|
|
268
297
|
}
|
|
@@ -317,7 +346,7 @@ function runPreVersionCommand(preVersionCommand, { dryRun, verbose }, releaseGro
|
|
|
317
346
|
try {
|
|
318
347
|
(0, node_child_process_1.execSync)(preVersionCommand, {
|
|
319
348
|
encoding: 'utf-8',
|
|
320
|
-
maxBuffer: LARGE_BUFFER,
|
|
349
|
+
maxBuffer: run_commands_impl_1.LARGE_BUFFER,
|
|
321
350
|
stdio,
|
|
322
351
|
env,
|
|
323
352
|
windowsHide: false,
|