nx 22.0.0-beta.2 → 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/migrations.json +5 -0
- package/package.json +12 -12
- package/project.json +2 -1
- package/schemas/nx-schema.json +268 -162
- package/schemas/project-schema.json +72 -12
- package/src/adapter/angular-json.d.ts.map +1 -1
- package/src/adapter/angular-json.js +13 -17
- 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/init/init-v2.js +1 -1
- 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 +41 -32
- package/src/command-line/release/command-object.d.ts +7 -9
- package/src/command-line/release/command-object.d.ts.map +1 -1
- package/src/command-line/release/config/config.d.ts +1 -1
- package/src/command-line/release/config/config.d.ts.map +1 -1
- package/src/command-line/release/config/config.js +55 -133
- 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/plan-check.d.ts.map +1 -1
- package/src/command-line/release/plan-check.js +1 -3
- package/src/command-line/release/plan.d.ts.map +1 -1
- package/src/command-line/release/plan.js +1 -3
- package/src/command-line/release/publish.d.ts.map +1 -1
- package/src/command-line/release/publish.js +36 -14
- package/src/command-line/release/release.d.ts.map +1 -1
- package/src/command-line/release/release.js +32 -33
- package/src/command-line/release/utils/git.d.ts.map +1 -1
- package/src/command-line/release/utils/git.js +3 -1
- 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/resolve-semver-specifier.d.ts +2 -1
- package/src/command-line/release/utils/resolve-semver-specifier.d.ts.map +1 -1
- package/src/command-line/release/utils/semver.d.ts +14 -9
- package/src/command-line/release/utils/semver.d.ts.map +1 -1
- package/src/command-line/release/utils/semver.js +29 -25
- package/src/command-line/release/utils/shared.d.ts +5 -2
- package/src/command-line/release/utils/shared.d.ts.map +1 -1
- package/src/command-line/release/utils/shared.js +82 -26
- package/src/command-line/release/utils/test/test-utils.d.ts +20 -0
- package/src/command-line/release/utils/test/test-utils.d.ts.map +1 -0
- package/src/command-line/release/utils/test/test-utils.js +24 -0
- package/src/command-line/release/version/derive-specifier-from-conventional-commits.d.ts.map +1 -1
- package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +10 -1
- 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 -570
- 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 -15
- 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 +58 -36
- package/src/config/nx-json.d.ts +28 -35
- package/src/config/nx-json.d.ts.map +1 -1
- package/src/config/nx-json.js +8 -8
- package/src/config/workspace-json-project-json.d.ts +2 -2
- package/src/config/workspace-json-project-json.d.ts.map +1 -1
- package/src/core/graph/main.js +1 -1
- package/src/devkit-exports.d.ts +1 -1
- package/src/devkit-exports.d.ts.map +1 -1
- package/src/migrations/update-21-0-0/release-changelog-config-changes.d.ts.map +1 -1
- package/src/migrations/update-21-0-0/release-version-config-changes.d.ts.map +1 -1
- package/src/migrations/update-21-0-0/release-version-config-changes.js +5 -15
- package/src/migrations/update-22-0-0/release-version-config-changes.d.ts +3 -0
- package/src/migrations/update-22-0-0/release-version-config-changes.d.ts.map +1 -0
- package/src/migrations/update-22-0-0/release-version-config-changes.js +101 -0
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/plugins/js/index.d.ts +1 -2
- package/src/plugins/js/index.d.ts.map +1 -1
- package/src/plugins/js/index.js +28 -32
- package/src/plugins/js/lock-file/lock-file.d.ts +2 -2
- package/src/plugins/js/lock-file/lock-file.d.ts.map +1 -1
- package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +1 -1
- package/src/project-graph/plugins/loaded-nx-plugin.d.ts.map +1 -1
- package/src/project-graph/plugins/loaded-nx-plugin.js +8 -6
- package/src/project-graph/plugins/public-api.d.ts +1 -36
- package/src/project-graph/plugins/public-api.d.ts.map +1 -1
- package/src/project-graph/plugins/utils.d.ts +4 -2
- package/src/project-graph/plugins/utils.d.ts.map +1 -1
- package/src/tasks-runner/run-command.js +2 -2
- package/src/command-line/release/config/use-legacy-versioning.d.ts +0 -3
- package/src/command-line/release/config/use-legacy-versioning.d.ts.map +0 -1
- package/src/command-line/release/config/use-legacy-versioning.js +0 -9
- package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts +0 -8
- package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts.map +0 -1
- package/src/command-line/release/utils/batch-projects-by-generator-config.js +0 -39
- package/src/command-line/release/version-legacy.d.ts +0 -47
- package/src/command-line/release/version-legacy.d.ts.map +0 -1
- package/src/command-line/release/version-legacy.js +0 -453
|
@@ -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);
|
|
@@ -17,18 +19,10 @@ async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition,
|
|
|
17
19
|
const { error: configError, nxReleaseConfig } = await (0, config_1.createNxReleaseConfig)(projectGraph, await (0, file_map_utils_1.createProjectFileMapUsingProjectGraph)(projectGraph), {
|
|
18
20
|
...additionalNxReleaseConfig,
|
|
19
21
|
groups,
|
|
20
|
-
version: {
|
|
21
|
-
...additionalNxReleaseConfig.version,
|
|
22
|
-
useLegacyVersioning: false,
|
|
23
|
-
},
|
|
24
22
|
});
|
|
25
23
|
if (configError) {
|
|
26
24
|
throw configError;
|
|
27
25
|
}
|
|
28
|
-
let { error: filterError, releaseGroups, releaseGroupToFilteredProjects, } = (0, filter_release_groups_1.filterReleaseGroups)(projectGraph, nxReleaseConfig, filters.projects, filters.groups);
|
|
29
|
-
if (filterError) {
|
|
30
|
-
throw filterError;
|
|
31
|
-
}
|
|
32
26
|
// Mock the implementation of resolveCurrentVersion to reliably return the version of the project based on our graph definition
|
|
33
27
|
mockResolveCurrentVersion?.mockImplementation((_, { name }) => {
|
|
34
28
|
for (const [projectName, project] of Object.entries(graph.projects)) {
|
|
@@ -41,11 +35,28 @@ async function createNxReleaseConfigAndPopulateWorkspace(tree, graphDefinition,
|
|
|
41
35
|
return {
|
|
42
36
|
projectGraph,
|
|
43
37
|
nxReleaseConfig: nxReleaseConfig,
|
|
44
|
-
releaseGroups,
|
|
45
|
-
releaseGroupToFilteredProjects,
|
|
46
38
|
filters,
|
|
47
39
|
};
|
|
48
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
|
+
}
|
|
49
60
|
class ExampleRustVersionActions extends version_actions_1.VersionActions {
|
|
50
61
|
constructor() {
|
|
51
62
|
super(...arguments);
|
|
@@ -377,13 +388,13 @@ function setupGraph(tree, graph) {
|
|
|
377
388
|
}
|
|
378
389
|
const exampleRustVersionActions = '__EXAMPLE_RUST_VERSION_ACTIONS__';
|
|
379
390
|
const exampleNonSemverVersionActions = '__EXAMPLE_NON_SEMVER_VERSION_ACTIONS__';
|
|
380
|
-
async function mockResolveVersionActionsForProjectImplementation(tree, releaseGroup, projectGraphNode, finalConfigForProject
|
|
391
|
+
async function mockResolveVersionActionsForProjectImplementation(tree, releaseGroup, projectGraphNode, finalConfigForProject) {
|
|
381
392
|
if (projectGraphNode.data.release?.versionActions ===
|
|
382
393
|
exampleRustVersionActions ||
|
|
383
394
|
releaseGroup.versionActions === exampleRustVersionActions) {
|
|
384
395
|
const versionActions = new ExampleRustVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
385
396
|
// Initialize the versionActions with all the required manifest paths etc
|
|
386
|
-
await versionActions.init(tree
|
|
397
|
+
await versionActions.init(tree);
|
|
387
398
|
return {
|
|
388
399
|
versionActionsPath: exampleRustVersionActions,
|
|
389
400
|
versionActions,
|
|
@@ -394,7 +405,7 @@ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGr
|
|
|
394
405
|
releaseGroup.versionActions === exampleNonSemverVersionActions) {
|
|
395
406
|
const versionActions = new ExampleNonSemverVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
396
407
|
// Initialize the versionActions with all the required manifest paths etc
|
|
397
|
-
await versionActions.init(tree
|
|
408
|
+
await versionActions.init(tree);
|
|
398
409
|
return {
|
|
399
410
|
versionActionsPath: exampleNonSemverVersionActions,
|
|
400
411
|
versionActions,
|
|
@@ -406,7 +417,7 @@ async function mockResolveVersionActionsForProjectImplementation(tree, releaseGr
|
|
|
406
417
|
const JsVersionActions = loaded.default;
|
|
407
418
|
const versionActions = new JsVersionActions(releaseGroup, projectGraphNode, finalConfigForProject);
|
|
408
419
|
// Initialize the versionActions with all the required manifest paths etc
|
|
409
|
-
await versionActions.init(tree
|
|
420
|
+
await versionActions.init(tree);
|
|
410
421
|
return {
|
|
411
422
|
versionActionsPath,
|
|
412
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":"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"}
|
|
@@ -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,20 +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 version_legacy_1 = require("./version-legacy");
|
|
27
|
-
const release_group_processor_1 = require("./version/release-group-processor");
|
|
28
|
-
const use_legacy_versioning_1 = require("./config/use-legacy-versioning");
|
|
29
27
|
const version_plan_utils_1 = require("./utils/version-plan-utils");
|
|
30
|
-
const
|
|
31
|
-
// Reexport some utils for use in plugin release-version generator implementations
|
|
32
|
-
exports.validReleaseVersionPrefixes = ['auto', '', '~', '^', '='];
|
|
28
|
+
const release_group_processor_1 = require("./version/release-group-processor");
|
|
33
29
|
const releaseVersionCLIHandler = (args) => (0, handle_errors_1.handleErrors)(args.verbose, () => createAPI({})(args));
|
|
34
30
|
exports.releaseVersionCLIHandler = releaseVersionCLIHandler;
|
|
35
31
|
function createAPI(overrideReleaseConfig) {
|
|
@@ -42,11 +38,10 @@ function createAPI(overrideReleaseConfig) {
|
|
|
42
38
|
const projectGraph = await (0, project_graph_1.createProjectGraphAsync)({ exitOnError: true });
|
|
43
39
|
const nxJson = (0, nx_json_1.readNxJson)();
|
|
44
40
|
const userProvidedReleaseConfig = (0, deep_merge_json_1.deepMergeJson)(nxJson.release ?? {}, overrideReleaseConfig ?? {});
|
|
45
|
-
const USE_LEGACY_VERSIONING = (0, use_legacy_versioning_1.shouldUseLegacyVersioning)(userProvidedReleaseConfig);
|
|
46
41
|
// Apply default configuration to any optional user configuration
|
|
47
42
|
const { error: configError, nxReleaseConfig } = await (0, config_1.createNxReleaseConfig)(projectGraph, await (0, file_map_utils_1.createProjectFileMapUsingProjectGraph)(projectGraph), userProvidedReleaseConfig);
|
|
48
43
|
if (configError) {
|
|
49
|
-
return await (0, config_1.handleNxReleaseConfigError)(configError
|
|
44
|
+
return await (0, config_1.handleNxReleaseConfigError)(configError);
|
|
50
45
|
}
|
|
51
46
|
// --print-config exits directly as it is not designed to be combined with any other programmatic operations
|
|
52
47
|
if (args.printConfig) {
|
|
@@ -56,10 +51,6 @@ function createAPI(overrideReleaseConfig) {
|
|
|
56
51
|
isDebug: args.printConfig === 'debug',
|
|
57
52
|
});
|
|
58
53
|
}
|
|
59
|
-
// TODO(v22): Remove support for the legacy versioning implementation in Nx v22
|
|
60
|
-
if (USE_LEGACY_VERSIONING) {
|
|
61
|
-
return await (0, version_legacy_1.releaseVersionLegacy)(projectGraph, args, nxJson, nxReleaseConfig, userProvidedReleaseConfig);
|
|
62
|
-
}
|
|
63
54
|
// The nx release top level command will always override these three git args. This is how we can tell
|
|
64
55
|
// if the top level release command was used or if the user is using the changelog subcommand.
|
|
65
56
|
// If the user explicitly overrides these args, then it doesn't matter if the top level config is set,
|
|
@@ -78,27 +69,40 @@ function createAPI(overrideReleaseConfig) {
|
|
|
78
69
|
});
|
|
79
70
|
process.exit(1);
|
|
80
71
|
}
|
|
81
|
-
const
|
|
82
|
-
if
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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 &&
|
|
87
90
|
process.env.NX_RELEASE_INTERNAL_SUPPRESS_FILTER_LOG !== 'true') {
|
|
88
|
-
output_1.output.note(filterLog);
|
|
91
|
+
output_1.output.note(releaseGraph.filterLog);
|
|
89
92
|
}
|
|
90
93
|
if (!args.specifier) {
|
|
91
94
|
const rawVersionPlans = await (0, version_plans_1.readRawVersionPlans)();
|
|
92
|
-
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);
|
|
93
96
|
// Validate version plans against the filter after resolution
|
|
94
|
-
const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGroups, releaseGroupToFilteredProjects);
|
|
97
|
+
const versionPlanValidationError = (0, version_plan_utils_1.validateResolvedVersionPlansAgainstFilter)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects);
|
|
95
98
|
if (versionPlanValidationError) {
|
|
96
99
|
output_1.output.error(versionPlanValidationError);
|
|
97
100
|
process.exit(1);
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
103
|
else {
|
|
101
|
-
if (args.verbose &&
|
|
104
|
+
if (args.verbose &&
|
|
105
|
+
releaseGraph.releaseGroups.some((g) => !!g.versionPlans)) {
|
|
102
106
|
console.log(`Skipping version plan discovery as a specifier was provided`);
|
|
103
107
|
}
|
|
104
108
|
}
|
|
@@ -115,14 +119,24 @@ function createAPI(overrideReleaseConfig) {
|
|
|
115
119
|
});
|
|
116
120
|
/**
|
|
117
121
|
* Run any configured pre-version command for the selected release groups
|
|
122
|
+
* in topological order
|
|
118
123
|
*/
|
|
119
|
-
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
|
+
}
|
|
120
130
|
runPreVersionCommand(releaseGroup.version?.groupPreVersionCommand, {
|
|
121
131
|
dryRun: args.dryRun,
|
|
122
132
|
verbose: args.verbose,
|
|
123
133
|
}, releaseGroup);
|
|
124
134
|
}
|
|
125
|
-
|
|
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);
|
|
126
140
|
const commitMessage = args.gitCommitMessage || nxReleaseConfig.version.git.commitMessage;
|
|
127
141
|
/**
|
|
128
142
|
* additionalChangedFiles are files which need to be updated as a side-effect of versioning (such as package manager lock files),
|
|
@@ -130,7 +144,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
130
144
|
*/
|
|
131
145
|
const additionalChangedFiles = new Set();
|
|
132
146
|
const additionalDeletedFiles = new Set();
|
|
133
|
-
const processor = new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig,
|
|
147
|
+
const processor = new release_group_processor_1.ReleaseGroupProcessor(tree, projectGraph, nxReleaseConfig, releaseGraph, {
|
|
134
148
|
dryRun: args.dryRun,
|
|
135
149
|
verbose: args.verbose,
|
|
136
150
|
firstRelease: args.firstRelease,
|
|
@@ -143,7 +157,6 @@ function createAPI(overrideReleaseConfig) {
|
|
|
143
157
|
versionActionsOptionsOverrides: args.versionActionsOptionsOverrides,
|
|
144
158
|
});
|
|
145
159
|
try {
|
|
146
|
-
await processor.init();
|
|
147
160
|
await processor.processGroups();
|
|
148
161
|
// Delete processed version plan files if applicable
|
|
149
162
|
if (args.deleteVersionPlans) {
|
|
@@ -181,8 +194,14 @@ function createAPI(overrideReleaseConfig) {
|
|
|
181
194
|
}
|
|
182
195
|
/**
|
|
183
196
|
* Run any configured docker pre-version command for the selected release groups
|
|
197
|
+
* in topological order (dependencies before dependents)
|
|
184
198
|
*/
|
|
185
|
-
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
|
+
}
|
|
186
205
|
if (releaseGroup.docker?.groupPreVersionCommand) {
|
|
187
206
|
runPreVersionCommand(releaseGroup.docker.groupPreVersionCommand, {
|
|
188
207
|
dryRun: args.dryRun,
|
|
@@ -191,7 +210,8 @@ function createAPI(overrideReleaseConfig) {
|
|
|
191
210
|
}
|
|
192
211
|
}
|
|
193
212
|
// TODO(colum): Remove when Docker support is no longer experimental
|
|
194
|
-
if (nxReleaseConfig.docker ||
|
|
213
|
+
if (nxReleaseConfig.docker ||
|
|
214
|
+
releaseGraph.releaseGroups.some((rg) => rg.docker)) {
|
|
195
215
|
output_1.output.warn({
|
|
196
216
|
title: 'Warning',
|
|
197
217
|
bodyLines: [
|
|
@@ -203,15 +223,15 @@ function createAPI(overrideReleaseConfig) {
|
|
|
203
223
|
const versionData = processor.getVersionData();
|
|
204
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
|
|
205
225
|
const gitTagValues = args.gitTag ?? nxReleaseConfig.version.git.tag
|
|
206
|
-
? (0, shared_1.createGitTagValues)(releaseGroups, releaseGroupToFilteredProjects, versionData)
|
|
226
|
+
? (0, shared_1.createGitTagValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, versionData)
|
|
207
227
|
: [];
|
|
208
228
|
(0, shared_1.handleDuplicateGitTags)(gitTagValues);
|
|
209
229
|
// Only applicable when there is a single release group with a fixed relationship
|
|
210
230
|
let workspaceVersion = undefined;
|
|
211
|
-
if (releaseGroups.length === 1) {
|
|
212
|
-
const releaseGroup = releaseGroups[0];
|
|
231
|
+
if (releaseGraph.releaseGroups.length === 1) {
|
|
232
|
+
const releaseGroup = releaseGraph.releaseGroups[0];
|
|
213
233
|
if (releaseGroup.projectsRelationship === 'fixed') {
|
|
214
|
-
const releaseGroupProjectNames = Array.from(releaseGroupToFilteredProjects.get(releaseGroup));
|
|
234
|
+
const releaseGroupProjectNames = Array.from(releaseGraph.releaseGroupToFilteredProjects.get(releaseGroup));
|
|
215
235
|
workspaceVersion = versionData[releaseGroupProjectNames[0]].newVersion; // all projects have the same version so we can just grab the first
|
|
216
236
|
}
|
|
217
237
|
}
|
|
@@ -225,6 +245,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
225
245
|
return {
|
|
226
246
|
workspaceVersion,
|
|
227
247
|
projectsVersionData: versionData,
|
|
248
|
+
releaseGraph,
|
|
228
249
|
};
|
|
229
250
|
}
|
|
230
251
|
if (args.gitCommit ?? nxReleaseConfig.version.git.commit) {
|
|
@@ -233,7 +254,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
233
254
|
deletedFiles,
|
|
234
255
|
isDryRun: !!args.dryRun,
|
|
235
256
|
isVerbose: !!args.verbose,
|
|
236
|
-
gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGroups, releaseGroupToFilteredProjects, versionData, commitMessage),
|
|
257
|
+
gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGraph.releaseGroups, releaseGraph.releaseGroupToFilteredProjects, versionData, commitMessage),
|
|
237
258
|
gitCommitArgs: args.gitCommitArgs || nxReleaseConfig.version.git.commitArgs,
|
|
238
259
|
});
|
|
239
260
|
}
|
|
@@ -270,6 +291,7 @@ function createAPI(overrideReleaseConfig) {
|
|
|
270
291
|
return {
|
|
271
292
|
workspaceVersion,
|
|
272
293
|
projectsVersionData: versionData,
|
|
294
|
+
releaseGraph,
|
|
273
295
|
};
|
|
274
296
|
};
|
|
275
297
|
}
|
|
@@ -324,7 +346,7 @@ function runPreVersionCommand(preVersionCommand, { dryRun, verbose }, releaseGro
|
|
|
324
346
|
try {
|
|
325
347
|
(0, node_child_process_1.execSync)(preVersionCommand, {
|
|
326
348
|
encoding: 'utf-8',
|
|
327
|
-
maxBuffer: LARGE_BUFFER,
|
|
349
|
+
maxBuffer: run_commands_impl_1.LARGE_BUFFER,
|
|
328
350
|
stdio,
|
|
329
351
|
env,
|
|
330
352
|
windowsHide: false,
|