@otwld/workflow-cli 0.1.9 → 0.1.11-staging.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/index.d.ts +0 -2
- package/src/index.js +0 -1
- package/src/index.js.map +1 -1
- package/src/main.js +10 -16
- package/src/main.js.map +1 -1
- package/src/project-shape.d.ts +1 -0
- package/src/project-shape.js +2 -0
- package/src/project-shape.js.map +1 -1
- package/src/workflow.d.ts +3 -2
- package/src/workflow.js +41 -31
- package/src/workflow.js.map +1 -1
- package/src/project-graph.d.ts +0 -15
- package/src/project-graph.js +0 -101
- package/src/project-graph.js.map +0 -1
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { parseCommand, parseProjectsFile } from './cli.js';
|
|
2
|
-
export { assertChartCohortClosure, parseNxProjectGraph, selectedChartCohorts, } from './project-graph.js';
|
|
3
|
-
export type { NxProjectGraph } from './project-graph.js';
|
|
4
2
|
export { runWorkflow } from './workflow.js';
|
|
5
3
|
export type { WorkflowDependencies } from './workflow.js';
|
package/src/index.js
CHANGED
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/src/main.js
CHANGED
|
@@ -6,7 +6,6 @@ import { promisify } from 'node:util';
|
|
|
6
6
|
import { releaseChangelog, releasePublish, releaseVersion } from 'nx/release';
|
|
7
7
|
import { parseCommand } from './cli.js';
|
|
8
8
|
import { isStableProjectTag } from './git-tags.js';
|
|
9
|
-
import { parseNxProjectGraph } from './project-graph.js';
|
|
10
9
|
import { isRequestedNxProject } from './project-shape.js';
|
|
11
10
|
import { runWorkflow } from './workflow.js';
|
|
12
11
|
const execute = promisify(execFile);
|
|
@@ -47,6 +46,11 @@ const dependencies = {
|
|
|
47
46
|
}
|
|
48
47
|
return result;
|
|
49
48
|
},
|
|
49
|
+
async changedFiles(baseSha, sourceSha) {
|
|
50
|
+
return (await git(['diff', '--name-only', baseSha, sourceSha]))
|
|
51
|
+
.split('\n')
|
|
52
|
+
.filter(Boolean);
|
|
53
|
+
},
|
|
50
54
|
async allProjects() {
|
|
51
55
|
const result = await nxJson(['show', 'projects', '--json']);
|
|
52
56
|
if (!Array.isArray(result) ||
|
|
@@ -55,21 +59,6 @@ const dependencies = {
|
|
|
55
59
|
}
|
|
56
60
|
return result;
|
|
57
61
|
},
|
|
58
|
-
async projectGraph() {
|
|
59
|
-
const output = await command(process.execPath, [nxCli, 'graph', '--print']);
|
|
60
|
-
try {
|
|
61
|
-
return parseNxProjectGraph(JSON.parse(output));
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
if (error instanceof Error &&
|
|
65
|
-
error.message === 'Nx returned an invalid project graph response.') {
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
throw new Error('Nx returned an invalid project graph response.', {
|
|
69
|
-
cause: error,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
62
|
async project(name) {
|
|
74
63
|
const result = await nxJson(['show', 'project', name, '--json']);
|
|
75
64
|
if (!isRequestedNxProject(result, name)) {
|
|
@@ -91,6 +80,11 @@ const dependencies = {
|
|
|
91
80
|
return head;
|
|
92
81
|
},
|
|
93
82
|
head: () => git(['rev-parse', '--verify', 'HEAD^{commit}']),
|
|
83
|
+
async runTarget(target, projects) {
|
|
84
|
+
const { stdout, stderr } = await execute(process.execPath, [nxCli, 'run-many', '-t', target, `--projects=${projects.join(',')}`], { maxBuffer: 1024 * 1024 * 10 });
|
|
85
|
+
process.stdout.write(stdout);
|
|
86
|
+
process.stderr.write(stderr);
|
|
87
|
+
},
|
|
94
88
|
readProjectsFile: (path) => readFile(path, 'utf8'),
|
|
95
89
|
async isInitialized(project, family) {
|
|
96
90
|
const tags = (await git(['tag', '--list'])).split('\n').filter(Boolean);
|
package/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/main.ts"],"names":[],"mappings":"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"}
|
package/src/project-shape.d.ts
CHANGED
package/src/project-shape.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export function isRequestedNxProject(value, requestedName) {
|
|
2
2
|
if (!isRecord(value) || value.name !== requestedName)
|
|
3
3
|
return false;
|
|
4
|
+
if (value.root !== undefined && typeof value.root !== 'string')
|
|
5
|
+
return false;
|
|
4
6
|
if (value.targets !== undefined && !isRecord(value.targets))
|
|
5
7
|
return false;
|
|
6
8
|
if (value.tags !== undefined &&
|
package/src/project-shape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-shape.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/project-shape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-shape.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/project-shape.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,oBAAoB,CAClC,KAAc,EACd,aAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,IACE,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACzB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QAEtD,OAAO,KAAK,CAAC;IACf,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,IACE,EAAE,KAAK,SAAS;QAChB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACZ,CAAC,EAAE,CAAC,cAAc,KAAK,SAAS;gBAC9B,OAAO,EAAE,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;QAE3C,OAAO,KAAK,CAAC;IACf,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,OAAO,CACL,IAAI,KAAK,SAAS;QAClB,CAAC,QAAQ,CAAC,IAAI,CAAC;YACb,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
package/src/workflow.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type CommandInput } from './cli.js';
|
|
2
|
-
import { type NxProjectGraph } from './project-graph.js';
|
|
3
2
|
type ArtifactFamily = 'docker' | 'helm' | 'npm';
|
|
4
3
|
type Project = {
|
|
5
4
|
name: string;
|
|
5
|
+
root?: string;
|
|
6
6
|
targets?: Record<string, unknown>;
|
|
7
7
|
tags?: string[];
|
|
8
8
|
metadata?: {
|
|
@@ -40,11 +40,12 @@ type ReleaseOptions = {
|
|
|
40
40
|
};
|
|
41
41
|
export type WorkflowDependencies = {
|
|
42
42
|
affectedProjects(baseSha: string, sourceSha: string): Promise<string[]>;
|
|
43
|
+
changedFiles(baseSha: string, sourceSha: string): Promise<string[]>;
|
|
43
44
|
allProjects(): Promise<string[]>;
|
|
44
|
-
projectGraph(): Promise<NxProjectGraph>;
|
|
45
45
|
project(name: string): Promise<Project>;
|
|
46
46
|
remoteHead(defaultBranch: string): Promise<string>;
|
|
47
47
|
head(): Promise<string>;
|
|
48
|
+
runTarget(target: string, projects: string[]): Promise<void>;
|
|
48
49
|
readProjectsFile(path: string): Promise<string>;
|
|
49
50
|
isInitialized(project: string, family: ArtifactFamily): Promise<boolean>;
|
|
50
51
|
release: {
|
package/src/workflow.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { parseProjectsFile } from './cli.js';
|
|
2
|
-
import { assertChartCohortClosure, selectedChartCohorts, } from './project-graph.js';
|
|
3
2
|
export async function runWorkflow(input, dependencies) {
|
|
4
3
|
if (input.command === 'stage') {
|
|
5
4
|
const affected = await dependencies.affectedProjects(input.baseSha, input.sourceSha);
|
|
6
|
-
const projects = await
|
|
5
|
+
const projects = await releaseableAffectedProjects(affected, input.baseSha, input.sourceSha, dependencies);
|
|
7
6
|
if (projects.length === 0) {
|
|
8
7
|
dependencies.output('stage: no publishable affected projects');
|
|
9
8
|
return;
|
|
@@ -18,8 +17,6 @@ export async function runWorkflow(input, dependencies) {
|
|
|
18
17
|
throw new Error(`Unknown Nx project: ${project}.`);
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
|
-
const projectGraph = await dependencies.projectGraph();
|
|
22
|
-
assertChartCohortClosure(requested, projectGraph);
|
|
23
20
|
const projects = await releaseable(requested, dependencies);
|
|
24
21
|
if (projects.length !== requested.length) {
|
|
25
22
|
throw new Error('Every selected project must expose the nx-release-publish capability.');
|
|
@@ -31,7 +28,7 @@ export async function runWorkflow(input, dependencies) {
|
|
|
31
28
|
? initialized
|
|
32
29
|
: firstRelease).push(project);
|
|
33
30
|
}
|
|
34
|
-
const firstReleasePlans = firstReleaseTransactions(firstRelease
|
|
31
|
+
const firstReleasePlans = firstReleaseTransactions(firstRelease).map((transaction) => ({
|
|
35
32
|
projects: transaction.map((project) => project.name),
|
|
36
33
|
baseline: firstReleaseBaseline(transaction),
|
|
37
34
|
}));
|
|
@@ -47,8 +44,21 @@ async function releaseable(projects, dependencies) {
|
|
|
47
44
|
const inspected = await Promise.all(projects.map(async (name) => dependencies.project(name)));
|
|
48
45
|
return inspected.filter((project) => project.targets?.['nx-release-publish'] !== undefined);
|
|
49
46
|
}
|
|
47
|
+
async function releaseableAffectedProjects(affected, baseSha, sourceSha, dependencies) {
|
|
48
|
+
const projects = await releaseable(affected, dependencies);
|
|
49
|
+
const charts = projects.filter((project) => artifactFamily(project) === 'helm');
|
|
50
|
+
if (charts.length === 0)
|
|
51
|
+
return projects;
|
|
52
|
+
const changedFiles = await dependencies.changedFiles(baseSha, sourceSha);
|
|
53
|
+
return projects.filter((project) => artifactFamily(project) !== 'helm' ||
|
|
54
|
+
changedFiles.some((file) => isWithinProjectRoot(file, project.root)));
|
|
55
|
+
}
|
|
56
|
+
function isWithinProjectRoot(file, root) {
|
|
57
|
+
return root !== undefined && (file === root || file.startsWith(`${root}/`));
|
|
58
|
+
}
|
|
50
59
|
async function runStagingTransaction(projects, input, dependencies) {
|
|
51
60
|
await ensureCurrentSource(input.defaultBranch, input.sourceSha, dependencies);
|
|
61
|
+
await buildReleaseProjects(projects, dependencies);
|
|
52
62
|
const versioned = await dependencies.release.version({
|
|
53
63
|
projects,
|
|
54
64
|
preid: 'staging',
|
|
@@ -67,6 +77,7 @@ async function runStagingTransaction(projects, input, dependencies) {
|
|
|
67
77
|
}
|
|
68
78
|
async function runStableTransaction(projects, firstRelease, specifier, defaultBranch, expectedHead, dependencies) {
|
|
69
79
|
await ensureCurrentSource(defaultBranch, expectedHead, dependencies);
|
|
80
|
+
await buildReleaseProjects(projects, dependencies);
|
|
70
81
|
const versioned = await dependencies.release.version({
|
|
71
82
|
projects,
|
|
72
83
|
firstRelease,
|
|
@@ -95,6 +106,29 @@ async function runStableTransaction(projects, firstRelease, specifier, defaultBr
|
|
|
95
106
|
dependencies.output(`release: published ${projects.join(',')}`);
|
|
96
107
|
return nextHead;
|
|
97
108
|
}
|
|
109
|
+
async function buildReleaseProjects(projects, dependencies) {
|
|
110
|
+
// Filtered Nx Release publish calls intentionally exclude task dependencies;
|
|
111
|
+
// build the selected artifact projects explicitly, while Nx expands only
|
|
112
|
+
// their normal build prerequisites.
|
|
113
|
+
const targetProjects = new Map();
|
|
114
|
+
for (const project of projects) {
|
|
115
|
+
const inspected = await dependencies.project(project);
|
|
116
|
+
const family = artifactFamily(inspected);
|
|
117
|
+
let target;
|
|
118
|
+
if (family === 'docker')
|
|
119
|
+
target = 'docker:build';
|
|
120
|
+
if (family === 'npm')
|
|
121
|
+
target = 'build';
|
|
122
|
+
if (target === undefined)
|
|
123
|
+
continue;
|
|
124
|
+
const selected = targetProjects.get(target) ?? [];
|
|
125
|
+
selected.push(project);
|
|
126
|
+
targetProjects.set(target, selected);
|
|
127
|
+
}
|
|
128
|
+
for (const [target, selected] of targetProjects) {
|
|
129
|
+
await dependencies.runTarget(target, selected);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
98
132
|
function artifactFamily(project) {
|
|
99
133
|
const artifactTags = project.tags?.filter((tag) => tag.startsWith('artifact:')) ?? [];
|
|
100
134
|
if (artifactTags.length !== 1) {
|
|
@@ -111,32 +145,8 @@ function artifactFamily(project) {
|
|
|
111
145
|
throw new Error(`Project ${project.name} has an unsupported artifact identity.`);
|
|
112
146
|
}
|
|
113
147
|
}
|
|
114
|
-
function firstReleaseTransactions(firstRelease
|
|
115
|
-
|
|
116
|
-
const firstNames = new Set(firstRelease.map((project) => project.name));
|
|
117
|
-
const initializedNames = new Set(initialized.map((project) => project.name));
|
|
118
|
-
const cohortByProject = new Map();
|
|
119
|
-
for (const chartCohort of chartCohorts) {
|
|
120
|
-
const hasFirst = chartCohort.some((name) => firstNames.has(name));
|
|
121
|
-
const hasInitialized = chartCohort.some((name) => initializedNames.has(name));
|
|
122
|
-
if (hasFirst && hasInitialized) {
|
|
123
|
-
throw new Error(`Helm dependency cohort has mixed first-release state: ${chartCohort.join(',')}.`);
|
|
124
|
-
}
|
|
125
|
-
if (hasFirst)
|
|
126
|
-
chartCohort.forEach((name) => cohortByProject.set(name, chartCohort));
|
|
127
|
-
}
|
|
128
|
-
const visited = new Set();
|
|
129
|
-
return firstRelease.flatMap((project) => {
|
|
130
|
-
if (visited.has(project.name))
|
|
131
|
-
return [];
|
|
132
|
-
const names = cohortByProject.get(project.name) ?? [project.name];
|
|
133
|
-
const transaction = names.map((name) => projects.get(name));
|
|
134
|
-
if (transaction.some((member) => member === undefined)) {
|
|
135
|
-
throw new Error('Helm dependency cohort contains an unselected project.');
|
|
136
|
-
}
|
|
137
|
-
names.forEach((name) => visited.add(name));
|
|
138
|
-
return [transaction];
|
|
139
|
-
});
|
|
148
|
+
function firstReleaseTransactions(firstRelease) {
|
|
149
|
+
return firstRelease.map((project) => [project]);
|
|
140
150
|
}
|
|
141
151
|
function firstReleaseBaseline(projects) {
|
|
142
152
|
const baselines = new Set(projects.map(stableSourceVersion));
|
package/src/workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/workflow.ts"],"names":[],"mappings":"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"}
|
package/src/project-graph.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export type NxProjectGraph = {
|
|
2
|
-
nodes: ReadonlyMap<string, NxProjectGraphNode>;
|
|
3
|
-
dependencies: ReadonlyMap<string, readonly NxProjectGraphDependency[]>;
|
|
4
|
-
};
|
|
5
|
-
type NxProjectGraphNode = {
|
|
6
|
-
tags: readonly string[];
|
|
7
|
-
};
|
|
8
|
-
type NxProjectGraphDependency = {
|
|
9
|
-
source: string;
|
|
10
|
-
target: string;
|
|
11
|
-
};
|
|
12
|
-
export declare function parseNxProjectGraph(value: unknown): NxProjectGraph;
|
|
13
|
-
export declare function assertChartCohortClosure(requested: readonly string[], graph: NxProjectGraph): void;
|
|
14
|
-
export declare function selectedChartCohorts(requested: readonly string[], graph: NxProjectGraph): string[][];
|
|
15
|
-
export {};
|
package/src/project-graph.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
const invalidGraphMessage = 'Nx returned an invalid project graph response.';
|
|
2
|
-
export function parseNxProjectGraph(value) {
|
|
3
|
-
if (!isRecord(value) || !isRecord(value.graph))
|
|
4
|
-
throw invalidGraph();
|
|
5
|
-
const { nodes, dependencies } = value.graph;
|
|
6
|
-
if (!isRecord(nodes) || !isRecord(dependencies))
|
|
7
|
-
throw invalidGraph();
|
|
8
|
-
const parsedNodes = new Map();
|
|
9
|
-
for (const [name, node] of Object.entries(nodes)) {
|
|
10
|
-
if (!isRecord(node) ||
|
|
11
|
-
node.name !== name ||
|
|
12
|
-
!isRecord(node.data) ||
|
|
13
|
-
!Array.isArray(node.data.tags) ||
|
|
14
|
-
!node.data.tags.every((tag) => typeof tag === 'string')) {
|
|
15
|
-
throw invalidGraph();
|
|
16
|
-
}
|
|
17
|
-
parsedNodes.set(name, { tags: node.data.tags });
|
|
18
|
-
}
|
|
19
|
-
const parsedDependencies = new Map();
|
|
20
|
-
for (const [source, edges] of Object.entries(dependencies)) {
|
|
21
|
-
if (!parsedNodes.has(source) || !Array.isArray(edges)) {
|
|
22
|
-
throw invalidGraph();
|
|
23
|
-
}
|
|
24
|
-
const parsedEdges = edges.map((edge) => {
|
|
25
|
-
if (!isRecord(edge) ||
|
|
26
|
-
edge.source !== source ||
|
|
27
|
-
typeof edge.target !== 'string' ||
|
|
28
|
-
!parsedNodes.has(edge.target)) {
|
|
29
|
-
throw invalidGraph();
|
|
30
|
-
}
|
|
31
|
-
return { source, target: edge.target };
|
|
32
|
-
});
|
|
33
|
-
parsedDependencies.set(source, parsedEdges);
|
|
34
|
-
}
|
|
35
|
-
return { nodes: parsedNodes, dependencies: parsedDependencies };
|
|
36
|
-
}
|
|
37
|
-
export function assertChartCohortClosure(requested, graph) {
|
|
38
|
-
const { chartProjects, chartNeighbors } = chartTopology(graph);
|
|
39
|
-
const requestedSet = new Set(requested);
|
|
40
|
-
const issues = requested
|
|
41
|
-
.filter((project) => chartProjects.has(project))
|
|
42
|
-
.sort()
|
|
43
|
-
.flatMap((project) => {
|
|
44
|
-
const missing = [...cohort(project, chartNeighbors)]
|
|
45
|
-
.filter((member) => !requestedSet.has(member))
|
|
46
|
-
.sort();
|
|
47
|
-
return missing.length === 0
|
|
48
|
-
? []
|
|
49
|
-
: [`${project} requires ${missing.join(',')}`];
|
|
50
|
-
});
|
|
51
|
-
if (issues.length > 0) {
|
|
52
|
-
throw new Error(`Selected chart projects are not closed over the Helm dependency cohort: ${issues.join('; ')}.`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
export function selectedChartCohorts(requested, graph) {
|
|
56
|
-
const { chartProjects, chartNeighbors } = chartTopology(graph);
|
|
57
|
-
const visited = new Set();
|
|
58
|
-
const result = [];
|
|
59
|
-
for (const project of requested) {
|
|
60
|
-
if (!chartProjects.has(project) || visited.has(project))
|
|
61
|
-
continue;
|
|
62
|
-
const members = cohort(project, chartNeighbors);
|
|
63
|
-
const selected = requested.filter((name) => members.has(name));
|
|
64
|
-
selected.forEach((name) => visited.add(name));
|
|
65
|
-
result.push(selected);
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
function chartTopology(graph) {
|
|
70
|
-
const chartProjects = new Set([...graph.nodes].flatMap(([name, node]) => node.tags.includes('artifact:oci-chart') ? [name] : []));
|
|
71
|
-
const chartNeighbors = new Map([...chartProjects].map((name) => [name, new Set()]));
|
|
72
|
-
for (const edges of graph.dependencies.values()) {
|
|
73
|
-
for (const { source, target } of edges) {
|
|
74
|
-
if (!chartProjects.has(source) || !chartProjects.has(target))
|
|
75
|
-
continue;
|
|
76
|
-
chartNeighbors.get(source)?.add(target);
|
|
77
|
-
chartNeighbors.get(target)?.add(source);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return { chartProjects, chartNeighbors };
|
|
81
|
-
}
|
|
82
|
-
function cohort(project, chartNeighbors) {
|
|
83
|
-
const members = new Set();
|
|
84
|
-
const pending = [project];
|
|
85
|
-
while (pending.length > 0) {
|
|
86
|
-
const next = pending.pop();
|
|
87
|
-
if (next === undefined || members.has(next))
|
|
88
|
-
continue;
|
|
89
|
-
members.add(next);
|
|
90
|
-
for (const neighbor of chartNeighbors.get(next) ?? [])
|
|
91
|
-
pending.push(neighbor);
|
|
92
|
-
}
|
|
93
|
-
return members;
|
|
94
|
-
}
|
|
95
|
-
function invalidGraph() {
|
|
96
|
-
return new Error(invalidGraphMessage);
|
|
97
|
-
}
|
|
98
|
-
function isRecord(value) {
|
|
99
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=project-graph.js.map
|
package/src/project-graph.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-graph.js","sourceRoot":"","sources":["../../../../apps/workflow-cli/src/project-graph.ts"],"names":[],"mappings":"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"}
|