@angelmsger/fx 0.18.1 → 0.19.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/CHANGELOG.md +5 -1
- package/README.md +1 -0
- package/dist/adapters/code-host/bitbucket-cli/provider.js +4 -3
- package/dist/adapters/code-host/bitbucket-cli/provider.js.map +1 -1
- package/dist/adapters/code-host/github/provider.js +4 -3
- package/dist/adapters/code-host/github/provider.js.map +1 -1
- package/dist/adapters/code-host/local-git/provider.js +39 -6
- package/dist/adapters/code-host/local-git/provider.js.map +1 -1
- package/dist/adapters/error-tracker/sentry/client.js +11 -8
- package/dist/adapters/error-tracker/sentry/client.js.map +1 -1
- package/dist/adapters/error-tracker/sentry/provider.js +2 -1
- package/dist/adapters/error-tracker/sentry/provider.js.map +1 -1
- package/dist/adapters/error-tracker/sentry/tracker.js +170 -39
- package/dist/adapters/error-tracker/sentry/tracker.js.map +1 -1
- package/dist/application/release/baseline.js +44 -0
- package/dist/application/release/baseline.js.map +1 -0
- package/dist/application/release/errors.js +144 -26
- package/dist/application/release/errors.js.map +1 -1
- package/dist/application/release/facts.js +2 -2
- package/dist/application/release/facts.js.map +1 -1
- package/dist/application/release/index.js +92 -11
- package/dist/application/release/index.js.map +1 -1
- package/dist/application/release/repo.js +118 -20
- package/dist/application/release/repo.js.map +1 -1
- package/dist/application/release/version-declaration.js +54 -0
- package/dist/application/release/version-declaration.js.map +1 -0
- package/dist/application/release/version-history.js +86 -0
- package/dist/application/release/version-history.js.map +1 -0
- package/dist/application/repo/show.js +9 -1
- package/dist/application/repo/show.js.map +1 -1
- package/dist/application/repo/version.js +83 -0
- package/dist/application/repo/version.js.map +1 -0
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/release/check.js +31 -0
- package/dist/cli/commands/release/check.js.map +1 -1
- package/dist/cli/commands/release/overrides.js +19 -0
- package/dist/cli/commands/release/overrides.js.map +1 -0
- package/dist/cli/commands/repo/show.js +12 -4
- package/dist/cli/commands/repo/show.js.map +1 -1
- package/dist/cli/commands/repo/version.js +36 -0
- package/dist/cli/commands/repo/version.js.map +1 -0
- package/dist/cli/release-view.js +27 -0
- package/dist/cli/release-view.js.map +1 -1
- package/dist/cli/render/report.js +5 -0
- package/dist/cli/render/report.js.map +1 -1
- package/dist/domain/members/classify.js +5 -2
- package/dist/domain/members/classify.js.map +1 -1
- package/dist/domain/members/ownership-evidence.js +63 -0
- package/dist/domain/members/ownership-evidence.js.map +1 -0
- package/dist/domain/release/errors.js +76 -12
- package/dist/domain/release/errors.js.map +1 -1
- package/dist/domain/release/types.js.map +1 -1
- package/dist/domain/release/version-evidence.js +6 -0
- package/dist/domain/release/version-evidence.js.map +1 -0
- package/dist/domain/release/version.js +44 -5
- package/dist/domain/release/version.js.map +1 -1
- package/dist/domain/release/window.js +67 -3
- package/dist/domain/release/window.js.map +1 -1
- package/dist/domain/report.js +1 -0
- package/dist/domain/report.js.map +1 -1
- package/package.json +1 -1
- package/skills/fx-workspace/SKILL.md +1 -1
- package/skills/fx-workspace/references/commands.md +112 -17
- package/skills/fx-workspace/references/workspace-tasks.md +34 -20
|
@@ -3,28 +3,38 @@
|
|
|
3
3
|
// lacks. It describes, it does not judge. Whatever it cannot learn is null, and when
|
|
4
4
|
// that is because a question to the host failed, `unanswered` says which and why: some
|
|
5
5
|
// of these questions, such as the target's version, no check asks.
|
|
6
|
-
import
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { asDevkitError, DevkitError, toEnvelope } from '../../domain/errors.js';
|
|
7
8
|
import { DEPENDENCY_FILES } from '../../domain/release/deps.js';
|
|
8
9
|
import { attributed, peopleCommits, unmergedOf } from '../../domain/release/merge.js';
|
|
9
10
|
import { declaredVersion, GRADLE_PROPERTIES, ROOT_VERSION, VERSION_READERS, } from '../../domain/release/version.js';
|
|
11
|
+
import { readBaseline } from './baseline.js';
|
|
12
|
+
import { validateVersionPath } from './version-declaration.js';
|
|
13
|
+
import { readVersionHistory } from './version-history.js';
|
|
10
14
|
export async function describeRepo(ctx, outcome) {
|
|
11
|
-
const blank =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
note: ctx.policy.note ?? null,
|
|
18
|
-
unanswered: [],
|
|
19
|
-
};
|
|
20
|
-
if (outcome.kind !== 'facts')
|
|
21
|
-
return blank;
|
|
15
|
+
const blank = emptyRepo(ctx);
|
|
16
|
+
if (outcome.kind !== 'facts') {
|
|
17
|
+
if (ctx.factsRequested === false)
|
|
18
|
+
return blank;
|
|
19
|
+
return { ...blank, unanswered: [missingFacts(outcome)] };
|
|
20
|
+
}
|
|
22
21
|
const { facts } = outcome;
|
|
23
22
|
const { source, target } = facts;
|
|
24
23
|
if (source === undefined)
|
|
25
|
-
return
|
|
24
|
+
return {
|
|
25
|
+
...blank,
|
|
26
|
+
unanswered: [
|
|
27
|
+
{
|
|
28
|
+
field: 'source',
|
|
29
|
+
reason: `Release source ${ctx.policy.source} is absent`,
|
|
30
|
+
error: toEnvelope(new DevkitError('incomplete', 'RELEASE_SOURCE_MISSING', `Release source ${ctx.policy.source} is absent`, {
|
|
31
|
+
nextSteps: ['Inspect repository branches and release.source in the manifest.'],
|
|
32
|
+
})).error,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
26
36
|
const asked = new Questions();
|
|
27
|
-
const file = await asked.about('version_file', () => versionFileAt(facts, source.sha));
|
|
37
|
+
const file = await asked.about('version_file', () => versionFileAt(facts, source.sha, ctx.versionPath));
|
|
28
38
|
const [sourceHead, targetHead, changes] = await Promise.all([
|
|
29
39
|
headOf(asked, facts, source, 'source', file),
|
|
30
40
|
target === undefined ? null : headOf(asked, facts, target, 'target', file),
|
|
@@ -33,6 +43,7 @@ export async function describeRepo(ctx, outcome) {
|
|
|
33
43
|
: asked.about('unmerged', () => changesBetween(ctx, facts, target.sha, source.sha)),
|
|
34
44
|
]);
|
|
35
45
|
const versioned = sourceHead.version !== null || (targetHead?.version ?? null) !== null;
|
|
46
|
+
const { history, baseline } = await readEvidence(ctx, facts, source);
|
|
36
47
|
return {
|
|
37
48
|
...blank,
|
|
38
49
|
source: sourceHead,
|
|
@@ -40,6 +51,76 @@ export async function describeRepo(ctx, outcome) {
|
|
|
40
51
|
version_file: versioned ? (file ?? null) : null,
|
|
41
52
|
unmerged: changes === undefined ? null : unmergedOf(changes),
|
|
42
53
|
unanswered: asked.unanswered(),
|
|
54
|
+
version_evidence: history,
|
|
55
|
+
baseline_evidence: baseline,
|
|
56
|
+
facet_coverage: {
|
|
57
|
+
declaration: asked.unanswered().length === 0 ? 'checked' : 'incomplete',
|
|
58
|
+
version_history: history?.coverage ?? 'not_requested',
|
|
59
|
+
baseline: baseline?.coverage ?? 'not_requested',
|
|
60
|
+
errors: 'not_requested',
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async function readEvidence(ctx, facts, source) {
|
|
65
|
+
const [history, baseline] = await Promise.all([
|
|
66
|
+
ctx.versionHistory === true || ctx.versionPath !== undefined
|
|
67
|
+
? readVersionHistory({
|
|
68
|
+
host: facts.host,
|
|
69
|
+
ref: facts.ref,
|
|
70
|
+
requestedRef: source.name,
|
|
71
|
+
resolvedSha: source.sha,
|
|
72
|
+
...(ctx.versionPath === undefined ? {} : { path: ctx.versionPath }),
|
|
73
|
+
...(ctx.historyLimit === undefined ? {} : { maxCommits: ctx.historyLimit }),
|
|
74
|
+
})
|
|
75
|
+
: null,
|
|
76
|
+
ctx.baselineRef === undefined
|
|
77
|
+
? null
|
|
78
|
+
: readBaseline({
|
|
79
|
+
host: facts.host,
|
|
80
|
+
ref: facts.ref,
|
|
81
|
+
baselineRef: ctx.baselineRef,
|
|
82
|
+
headRef: source.name,
|
|
83
|
+
headSha: source.sha,
|
|
84
|
+
...(ctx.versionPath === undefined ? {} : { path: ctx.versionPath }),
|
|
85
|
+
}),
|
|
86
|
+
]);
|
|
87
|
+
return { history, baseline };
|
|
88
|
+
}
|
|
89
|
+
function emptyRepo(ctx) {
|
|
90
|
+
return {
|
|
91
|
+
name: ctx.repo.name,
|
|
92
|
+
source: null,
|
|
93
|
+
target: null,
|
|
94
|
+
version_file: null,
|
|
95
|
+
unmerged: null,
|
|
96
|
+
note: ctx.policy.note ?? null,
|
|
97
|
+
unanswered: [],
|
|
98
|
+
...(ctx.range === undefined ? {} : { range: ctx.range }),
|
|
99
|
+
version_evidence: null,
|
|
100
|
+
baseline_evidence: null,
|
|
101
|
+
facet_coverage: emptyFacets(ctx),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function missingFacts(outcome) {
|
|
105
|
+
const reason = outcome.kind === 'gate' ? outcome.gate.reason : outcome.reason;
|
|
106
|
+
const original = outcome.kind === 'error' ? outcome.failure : undefined;
|
|
107
|
+
const handoff = outcome.kind === 'gate' ? outcome.gate.verdict?.handoff : undefined;
|
|
108
|
+
const error = original ??
|
|
109
|
+
toEnvelope(new DevkitError('incomplete', 'RELEASE_FACTS_UNAVAILABLE', reason, {
|
|
110
|
+
nextSteps: [handoff?.command ?? 'fx can code-host'],
|
|
111
|
+
})).error;
|
|
112
|
+
return {
|
|
113
|
+
field: 'code_host',
|
|
114
|
+
reason,
|
|
115
|
+
error: { ...error, ...(handoff === null || handoff === undefined ? {} : { handoff }) },
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function emptyFacets(ctx) {
|
|
119
|
+
return {
|
|
120
|
+
declaration: ctx.factsRequested === false ? 'not_requested' : 'incomplete',
|
|
121
|
+
version_history: ctx.versionHistory === true || ctx.versionPath !== undefined ? 'incomplete' : 'not_requested',
|
|
122
|
+
baseline: ctx.baselineRef === undefined ? 'not_requested' : 'incomplete',
|
|
123
|
+
errors: 'not_requested',
|
|
43
124
|
};
|
|
44
125
|
}
|
|
45
126
|
// The order the report names what it could not learn, whatever order the host failed in.
|
|
@@ -59,7 +140,8 @@ class Questions {
|
|
|
59
140
|
return await ask();
|
|
60
141
|
}
|
|
61
142
|
catch (err) {
|
|
62
|
-
|
|
143
|
+
const failure = asDevkitError(err);
|
|
144
|
+
this.failed.push({ field, reason: failure.message, error: toEnvelope(failure).error });
|
|
63
145
|
return undefined;
|
|
64
146
|
}
|
|
65
147
|
}
|
|
@@ -83,13 +165,19 @@ async function headOf(asked, facts, branch, side, file) {
|
|
|
83
165
|
};
|
|
84
166
|
}
|
|
85
167
|
// Prefer the explicit root VERSION file, then the dependency file the deps check reads.
|
|
86
|
-
async function versionFileAt(facts, sha) {
|
|
168
|
+
async function versionFileAt(facts, sha, explicit) {
|
|
169
|
+
if (explicit !== undefined) {
|
|
170
|
+
validateVersionPath(explicit);
|
|
171
|
+
return resolveDeclarationFile(facts, explicit, sha);
|
|
172
|
+
}
|
|
87
173
|
if ((await facts.host.readFile(facts.ref, ROOT_VERSION, sha)) !== undefined)
|
|
88
174
|
return ROOT_VERSION;
|
|
89
175
|
for (const { file } of DEPENDENCY_FILES) {
|
|
90
176
|
const text = await facts.host.readFile(facts.ref, file, sha);
|
|
91
177
|
if (text !== undefined)
|
|
92
|
-
return VERSION_READERS[file] === undefined
|
|
178
|
+
return VERSION_READERS[file] === undefined
|
|
179
|
+
? undefined
|
|
180
|
+
: resolveDeclarationFile(facts, file, sha);
|
|
93
181
|
}
|
|
94
182
|
return undefined;
|
|
95
183
|
}
|
|
@@ -98,14 +186,24 @@ async function versionAt(facts, file, sha) {
|
|
|
98
186
|
const own = text === undefined ? undefined : declaredVersion(file, text);
|
|
99
187
|
if (own !== undefined || !gradle(file))
|
|
100
188
|
return own;
|
|
101
|
-
const
|
|
102
|
-
|
|
189
|
+
const propertiesFile = path.posix.join(path.posix.dirname(file), GRADLE_PROPERTIES);
|
|
190
|
+
const properties = await facts.host.readFile(facts.ref, propertiesFile, sha);
|
|
191
|
+
return properties === undefined ? undefined : declaredVersion(propertiesFile, properties);
|
|
103
192
|
}
|
|
104
193
|
async function changesBetween(ctx, facts, from, to) {
|
|
105
194
|
const commits = await facts.host.compare(facts.ref, { from, to });
|
|
106
195
|
return peopleCommits(commits, ctx.policy.bots).map((c) => attributed(ctx.members, c));
|
|
107
196
|
}
|
|
108
197
|
function gradle(file) {
|
|
109
|
-
return
|
|
198
|
+
return ['build.gradle', 'build.gradle.kts'].includes(path.posix.basename(file));
|
|
199
|
+
}
|
|
200
|
+
async function resolveDeclarationFile(facts, file, sha) {
|
|
201
|
+
if (!gradle(file))
|
|
202
|
+
return file;
|
|
203
|
+
const text = await facts.host.readFile(facts.ref, file, sha);
|
|
204
|
+
if (text !== undefined && declaredVersion(file, text) !== undefined)
|
|
205
|
+
return file;
|
|
206
|
+
const sibling = path.posix.join(path.posix.dirname(file), GRADLE_PROPERTIES);
|
|
207
|
+
return (await facts.host.readFile(facts.ref, sibling, sha)) === undefined ? file : sibling;
|
|
110
208
|
}
|
|
111
209
|
//# sourceMappingURL=repo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/application/release/repo.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,qFAAqF;AACrF,qFAAqF;AACrF,uFAAuF;AACvF,mEAAmE;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/application/release/repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Select one written version source at an immutable commit. Explicit paths name
|
|
2
|
+
// packages; automatic discovery prefers VERSION and never skips an empty declaration.
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { DevkitError } from '../../domain/errors.js';
|
|
5
|
+
import { sameVersionSource, } from '../../domain/release/version-evidence.js';
|
|
6
|
+
import { VERSION_READERS, versionDeclaration } from '../../domain/release/version.js';
|
|
7
|
+
export async function readVersionDeclaration(input) {
|
|
8
|
+
const file = input.source?.file ?? input.path;
|
|
9
|
+
if (file !== undefined)
|
|
10
|
+
return readSelected(input, file);
|
|
11
|
+
for (const candidate of Object.keys(VERSION_READERS)) {
|
|
12
|
+
const text = await input.host.readFile(input.ref, candidate, input.sha);
|
|
13
|
+
if (text !== undefined)
|
|
14
|
+
return parseSelected(input, candidate, text);
|
|
15
|
+
}
|
|
16
|
+
throw versionFailure('VERSION_DECLARATION_MISSING', `No version declaration at ${input.sha}`);
|
|
17
|
+
}
|
|
18
|
+
async function readSelected(input, file) {
|
|
19
|
+
validateVersionPath(file);
|
|
20
|
+
const text = await input.host.readFile(input.ref, file, input.sha);
|
|
21
|
+
if (text === undefined)
|
|
22
|
+
throw versionFailure('VERSION_PATH_MISSING', `${file} is absent at ${input.sha}; creation and rename are not distinguished`);
|
|
23
|
+
return parseSelected(input, file, text);
|
|
24
|
+
}
|
|
25
|
+
async function parseSelected(input, file, text) {
|
|
26
|
+
const declaration = versionDeclaration(file, text);
|
|
27
|
+
if (declaration === undefined &&
|
|
28
|
+
input.source === undefined &&
|
|
29
|
+
['build.gradle', 'build.gradle.kts'].includes(path.posix.basename(file)))
|
|
30
|
+
return readSelected(input, path.posix.join(path.posix.dirname(file), 'gradle.properties'));
|
|
31
|
+
if (declaration === undefined)
|
|
32
|
+
throw versionFailure('VERSION_DECLARATION_UNREADABLE', `${file} has no readable version declaration at ${input.sha}`);
|
|
33
|
+
if (input.source !== undefined && !sameVersionSource(input.source, declaration))
|
|
34
|
+
throw versionFailure('VERSION_SOURCE_CHANGED', `Version field or package identity differs at ${input.sha}`);
|
|
35
|
+
return declaration;
|
|
36
|
+
}
|
|
37
|
+
export function validateVersionPath(file) {
|
|
38
|
+
if (file === '' ||
|
|
39
|
+
file.includes('\\') ||
|
|
40
|
+
file.startsWith('/') ||
|
|
41
|
+
file.split('/').some((part) => part === '' || part === '.' || part === '..') ||
|
|
42
|
+
!Object.hasOwn(VERSION_READERS, path.posix.basename(file)))
|
|
43
|
+
throw new DevkitError('usage', 'VERSION_PATH_INVALID', `Unsupported version path: ${file}`, {
|
|
44
|
+
nextSteps: ['Use a repository-relative path to VERSION or supported package metadata.'],
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export function versionFailure(code, message) {
|
|
48
|
+
return new DevkitError('incomplete', code, message, {
|
|
49
|
+
nextSteps: [
|
|
50
|
+
'Inspect the pinned repository ref and declaration source, then retry with sufficient readable history.',
|
|
51
|
+
],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=version-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-declaration.js","sourceRoot":"","sources":["../../../src/application/release/version-declaration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// The latest transition into the current version on a bounded first-parent chain.
|
|
2
|
+
// Missing parents, renamed files and changed declaration identities stop the walk.
|
|
3
|
+
import { asDevkitError, toEnvelope } from '../../domain/errors.js';
|
|
4
|
+
import { readVersionDeclaration, versionFailure } from './version-declaration.js';
|
|
5
|
+
export async function readVersionHistory(input) {
|
|
6
|
+
let result = blankEvidence(input);
|
|
7
|
+
try {
|
|
8
|
+
const limit = input.maxCommits ?? 100;
|
|
9
|
+
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1000)
|
|
10
|
+
throw versionFailure('VERSION_HISTORY_BUDGET_INVALID', 'History budget must be between 1 and 1000 commits');
|
|
11
|
+
let current = await input.host.commit(input.ref, input.resolvedSha ?? input.requestedRef);
|
|
12
|
+
if (input.resolvedSha !== undefined && current.sha !== input.resolvedSha)
|
|
13
|
+
throw versionFailure('VERSION_REF_CHANGED', 'The code host did not return the pinned head commit');
|
|
14
|
+
result = { ...result, resolved_sha: current.sha, next_sha: current.sha };
|
|
15
|
+
const declaration = await readVersionDeclaration({ ...input, sha: current.sha });
|
|
16
|
+
result = { ...result, declaration };
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
for (let count = 0; count < limit; count += 1) {
|
|
19
|
+
if (seen.has(current.sha))
|
|
20
|
+
throw versionFailure('VERSION_HISTORY_CYCLE', 'The first-parent history repeated a commit');
|
|
21
|
+
seen.add(current.sha);
|
|
22
|
+
result = { ...result, commits_read: count + 1 };
|
|
23
|
+
const parentSha = current.parents[0];
|
|
24
|
+
if (parentSha === undefined)
|
|
25
|
+
return changed(result, current, null, 'root_declaration');
|
|
26
|
+
result = { ...result, next_sha: parentSha };
|
|
27
|
+
const parent = await input.host.commit(input.ref, parentSha);
|
|
28
|
+
if (parent.sha !== parentSha)
|
|
29
|
+
throw versionFailure('VERSION_PARENT_MISMATCH', 'The code host did not return the requested parent commit');
|
|
30
|
+
const previous = await readVersionDeclaration({
|
|
31
|
+
...input,
|
|
32
|
+
sha: parent.sha,
|
|
33
|
+
source: declaration,
|
|
34
|
+
});
|
|
35
|
+
if (previous.value !== declaration.value)
|
|
36
|
+
return changed(result, current, previous.value, 'changed');
|
|
37
|
+
current = parent;
|
|
38
|
+
}
|
|
39
|
+
result = { ...result, termination: 'limit' };
|
|
40
|
+
throw versionFailure('VERSION_HISTORY_LIMIT', `No version-field change found within ${limit} first-parent commits`);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const failure = asDevkitError(error);
|
|
44
|
+
let termination = result.termination;
|
|
45
|
+
if (termination !== 'limit')
|
|
46
|
+
termination = failure.category === 'incomplete' ? 'boundary' : 'query_failed';
|
|
47
|
+
return { ...result, termination, failures: [toEnvelope(failure).error] };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function blankEvidence(input) {
|
|
51
|
+
return {
|
|
52
|
+
requested_ref: input.requestedRef,
|
|
53
|
+
resolved_sha: null,
|
|
54
|
+
declaration: null,
|
|
55
|
+
last_change: null,
|
|
56
|
+
coverage: 'incomplete',
|
|
57
|
+
commits_read: 0,
|
|
58
|
+
failures: [],
|
|
59
|
+
termination: 'query_failed',
|
|
60
|
+
next_sha: input.resolvedSha ?? null,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function changed(result, commit, previous, kind) {
|
|
64
|
+
const dated = Number.isFinite(Date.parse(commit.date));
|
|
65
|
+
const failures = dated
|
|
66
|
+
? []
|
|
67
|
+
: [
|
|
68
|
+
toEnvelope(versionFailure('VERSION_CHANGE_UNDATED', 'The version-field change has no readable committer timestamp')).error,
|
|
69
|
+
];
|
|
70
|
+
return {
|
|
71
|
+
...result,
|
|
72
|
+
coverage: dated ? 'checked' : 'incomplete',
|
|
73
|
+
failures,
|
|
74
|
+
termination: kind,
|
|
75
|
+
next_sha: null,
|
|
76
|
+
last_change: {
|
|
77
|
+
commit_sha: commit.sha,
|
|
78
|
+
committed_at: dated ? commit.date : null,
|
|
79
|
+
previous_value: previous,
|
|
80
|
+
current_value: result.declaration?.value ?? '',
|
|
81
|
+
history_mode: 'first_parent',
|
|
82
|
+
kind,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=version-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-history.js","sourceRoot":"","sources":["../../../src/application/release/version-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// One repository in full: the resolved entry, its disk state, its URLs and,
|
|
2
2
|
// when the members document is there, who owns it.
|
|
3
3
|
import { ownersOf } from '../../domain/members/owners.js';
|
|
4
|
+
import { ownershipEvidence, } from '../../domain/members/ownership-evidence.js';
|
|
4
5
|
import { deriveStatus } from '../../domain/workspace/status.js';
|
|
5
6
|
import { workspaceCommand } from '../workspace/guidance.js';
|
|
6
7
|
import { contactFor, findKnownRepo, inspectDisk, urlsFor, webUrlFor, } from '../workspace/inspect.js';
|
|
@@ -11,9 +12,15 @@ export class RepoShow {
|
|
|
11
12
|
}
|
|
12
13
|
async execute(input) {
|
|
13
14
|
const repo = findKnownRepo(this.deps, input.name);
|
|
15
|
+
const people = this.deps.ctx.manifest.members?.result.doc;
|
|
16
|
+
const evidence = ownershipEvidence({
|
|
17
|
+
members: people,
|
|
18
|
+
repo: repo.name,
|
|
19
|
+
asOf: input.asOf,
|
|
20
|
+
today: new Date().toISOString().slice(0, 10),
|
|
21
|
+
});
|
|
14
22
|
const urls = urlsFor(this.deps, repo, undefined);
|
|
15
23
|
const status = deriveStatus(repo, await inspectDisk(this.deps, repo), urls.upstream);
|
|
16
|
-
const people = this.deps.ctx.manifest.members?.result.doc;
|
|
17
24
|
const picked = this.deps.ctx.workspace.repos.some((entry) => entry.name === repo.name);
|
|
18
25
|
return {
|
|
19
26
|
...status,
|
|
@@ -29,6 +36,7 @@ export class RepoShow {
|
|
|
29
36
|
web_url: webUrlFor(this.deps, repo) ?? null,
|
|
30
37
|
contact: contactFor(this.deps, repo) ?? null,
|
|
31
38
|
owners: people === undefined ? null : ownersOf(people, repo.name),
|
|
39
|
+
ownership_evidence: evidence,
|
|
32
40
|
next_steps: [
|
|
33
41
|
...(!picked ? [workspaceCommand(this.deps, 'repo', 'pick', repo.name)] : []),
|
|
34
42
|
...(!status.exists && repo.origin === 'shared'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/application/repo/show.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,mDAAmD;AAGnD,OAAO,EAAE,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAkB,MAAM,kCAAkC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,GACV,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/application/repo/show.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,mDAAmD;AAGnD,OAAO,EAAE,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,iBAAiB,GAElB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,YAAY,EAAkB,MAAM,kCAAkC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,GACV,MAAM,yBAAyB,CAAC;AAoBjC,MAAM,OAAO,QAAQ;IACU;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CAAC,KAGb;QACC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;QAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAAC;YACjC,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAC7C,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACvF,OAAO;YACL,GAAG,MAAM;YACT,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YACnC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;YAC3C,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;YAC5C,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YACjE,kBAAkB,EAAE,QAAQ;YAC5B,UAAU,EAAE;gBACV,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;oBAC5C,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;oBACnF,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// Read pinned version-field history for any known repository, independent of whether
|
|
2
|
+
// the shared release checklist covers it. No publication policy is inferred here.
|
|
3
|
+
import { DevkitError } from '../../domain/errors.js';
|
|
4
|
+
import { repoRef } from '../../domain/workspace/ref.js';
|
|
5
|
+
import { readBaseline } from '../release/baseline.js';
|
|
6
|
+
import { rememberCodeHost } from '../release/facts.js';
|
|
7
|
+
import { Gates } from '../release/gates.js';
|
|
8
|
+
import { validateVersionPath } from '../release/version-declaration.js';
|
|
9
|
+
import { readVersionHistory } from '../release/version-history.js';
|
|
10
|
+
import { findKnownRepo } from '../workspace/inspect.js';
|
|
11
|
+
export class RepoVersion {
|
|
12
|
+
deps;
|
|
13
|
+
login;
|
|
14
|
+
constructor(deps, login) {
|
|
15
|
+
this.deps = deps;
|
|
16
|
+
this.login = login;
|
|
17
|
+
}
|
|
18
|
+
async execute(input) {
|
|
19
|
+
if (input.path !== undefined)
|
|
20
|
+
validateVersionPath(input.path);
|
|
21
|
+
const repo = findKnownRepo(this.deps, input.name);
|
|
22
|
+
const ref = repoRef(repo);
|
|
23
|
+
if (ref === undefined)
|
|
24
|
+
throw new DevkitError('config', 'REPO_NO_CODE_HOST', 'The repository has no code-host reference', {
|
|
25
|
+
nextSteps: ['Inspect fx repo show and the shared repository coordinate.'],
|
|
26
|
+
});
|
|
27
|
+
const observedAt = this.login.clock.now().toISOString();
|
|
28
|
+
await this.requireReady();
|
|
29
|
+
const host = rememberCodeHost(this.deps.codeHost());
|
|
30
|
+
const requested = input.ref ?? repo.branch ?? (await host.branches(ref)).find((branch) => branch.default)?.name;
|
|
31
|
+
if (requested === undefined)
|
|
32
|
+
throw new DevkitError('usage', 'VERSION_REF_REQUIRED', 'No default version ref is available', {
|
|
33
|
+
nextSteps: ['Pass --ref with a branch, tag or commit.'],
|
|
34
|
+
});
|
|
35
|
+
const version = await readVersionHistory({
|
|
36
|
+
host,
|
|
37
|
+
ref,
|
|
38
|
+
requestedRef: requested,
|
|
39
|
+
...(input.path === undefined ? {} : { path: input.path }),
|
|
40
|
+
...(input.historyLimit === undefined ? {} : { maxCommits: input.historyLimit }),
|
|
41
|
+
});
|
|
42
|
+
const baseline = input.baseline === undefined
|
|
43
|
+
? null
|
|
44
|
+
: await readBaseline({
|
|
45
|
+
host,
|
|
46
|
+
ref,
|
|
47
|
+
baselineRef: input.baseline,
|
|
48
|
+
headRef: requested,
|
|
49
|
+
...(version.resolved_sha === null ? {} : { headSha: version.resolved_sha }),
|
|
50
|
+
...(input.path === undefined ? {} : { path: input.path }),
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
name: repo.name,
|
|
54
|
+
observed_at: observedAt,
|
|
55
|
+
version_evidence: version,
|
|
56
|
+
baseline_evidence: baseline,
|
|
57
|
+
evidence_complete: version.coverage === 'checked' && (baseline === null || baseline.coverage === 'checked'),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async requireReady() {
|
|
61
|
+
const gate = await new Gates(this.deps, this.login).through('code-host', undefined);
|
|
62
|
+
if (!gate.open) {
|
|
63
|
+
const handoff = gate.verdict?.handoff;
|
|
64
|
+
throw new DevkitError('incomplete', 'VERSION_EVIDENCE_UNAVAILABLE', 'Code-host version evidence is not ready', {
|
|
65
|
+
hint: gate.reason,
|
|
66
|
+
...(handoff === null || handoff === undefined
|
|
67
|
+
? {}
|
|
68
|
+
: {
|
|
69
|
+
handoff: {
|
|
70
|
+
summary: handoff.summary,
|
|
71
|
+
userSteps: handoff.user_steps,
|
|
72
|
+
...(handoff.command === undefined ? {} : { command: handoff.command }),
|
|
73
|
+
...(handoff.alternatives === undefined
|
|
74
|
+
? {}
|
|
75
|
+
: { alternatives: handoff.alternatives }),
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
nextSteps: [gate.verdict?.handoff?.command ?? 'fx can code-host'],
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/application/repo/version.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,kFAAkF;AAElF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAkBxD,MAAM,OAAO,WAAW;IAEH;IACA;IAFnB,YACmB,IAAmB,EACnB,KAAgB;QADhB,SAAI,GAAJ,IAAI,CAAe;QACnB,UAAK,GAAL,KAAK,CAAW;IAChC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAAuB;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,SAAS;YACnB,MAAM,IAAI,WAAW,CACnB,QAAQ,EACR,mBAAmB,EACnB,2CAA2C,EAC3C;gBACE,SAAS,EAAE,CAAC,4DAA4D,CAAC;aAC1E,CACF,CAAC;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GACb,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;QAChG,IAAI,SAAS,KAAK,SAAS;YACzB,MAAM,IAAI,WAAW,CACnB,OAAO,EACP,sBAAsB,EACtB,qCAAqC,EACrC;gBACE,SAAS,EAAE,CAAC,0CAA0C,CAAC;aACxD,CACF,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;YACvC,IAAI;YACJ,GAAG;YACH,YAAY,EAAE,SAAS;YACvB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;SAChF,CAAC,CAAC;QACH,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ,KAAK,SAAS;YAC1B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,YAAY,CAAC;gBACjB,IAAI;gBACJ,GAAG;gBACH,WAAW,EAAE,KAAK,CAAC,QAAQ;gBAC3B,OAAO,EAAE,SAAS;gBAClB,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3E,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;aAC1D,CAAC,CAAC;QACT,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,UAAU;YACvB,gBAAgB,EAAE,OAAO;YACzB,iBAAiB,EAAE,QAAQ;YAC3B,iBAAiB,EACf,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC;SAC3F,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;YACtC,MAAM,IAAI,WAAW,CACnB,YAAY,EACZ,8BAA8B,EAC9B,yCAAyC,EACzC;gBACE,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;oBAC3C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,OAAO,EAAE;4BACP,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,SAAS,EAAE,OAAO,CAAC,UAAU;4BAC7B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;4BACtE,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;gCACpC,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;yBAC5C;qBACF,CAAC;gBACN,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,kBAAkB,CAAC;aAClE,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -51,6 +51,7 @@ import RepoRemove from './repo/remove.js';
|
|
|
51
51
|
import RepoSelect from './repo/select.js';
|
|
52
52
|
import RepoShow from './repo/show.js';
|
|
53
53
|
import RepoUnpick from './repo/unpick.js';
|
|
54
|
+
import RepoVersion from './repo/version.js';
|
|
54
55
|
import SelfInfo from './self/info.js';
|
|
55
56
|
import SelfUpdate from './self/update.js';
|
|
56
57
|
import SkillInstall from './skill/install.js';
|
|
@@ -99,6 +100,7 @@ const CANONICAL_COMMANDS = {
|
|
|
99
100
|
completion: CompletionCommand,
|
|
100
101
|
'repo:list': RepoList,
|
|
101
102
|
'repo:show': RepoShow,
|
|
103
|
+
'repo:version': RepoVersion,
|
|
102
104
|
'repo:select': RepoSelect,
|
|
103
105
|
'repo:pick': RepoPick,
|
|
104
106
|
'repo:unpick': RepoUnpick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { FxCommand } from '../../base.js';
|
|
|
5
5
|
import { argument, jobsFlag, listFlag } from '../../flags.js';
|
|
6
6
|
import { RELEASE_CODES, reportNotice } from '../../notices.js';
|
|
7
7
|
import { releaseText } from '../../release-view.js';
|
|
8
|
+
import { repoOverrides } from './overrides.js';
|
|
8
9
|
export default class ReleaseCheckCommand extends FxCommand {
|
|
9
10
|
static description = 'Show what each repository would release and check it: dependencies, branches, builds and unresolved errors. Read-only';
|
|
10
11
|
static examples = [
|
|
@@ -21,6 +22,30 @@ export default class ReleaseCheckCommand extends FxCommand {
|
|
|
21
22
|
only: listFlag('only these checks', CHECKS),
|
|
22
23
|
env: Flags.string({ description: 'environment whose errors count; default: release.env' }),
|
|
23
24
|
since: Flags.string({ description: 'how far back a new error counts; default: release.since' }),
|
|
25
|
+
from: Flags.string({
|
|
26
|
+
description: 'inclusive error-window start, ISO timestamp with timezone; requires --to and excludes --since',
|
|
27
|
+
}),
|
|
28
|
+
to: Flags.string({
|
|
29
|
+
description: 'exclusive error-window end, ISO timestamp with timezone; requires --from',
|
|
30
|
+
}),
|
|
31
|
+
'version-history': Flags.boolean({
|
|
32
|
+
description: 'read the last version-field change at each pinned source head',
|
|
33
|
+
default: false,
|
|
34
|
+
}),
|
|
35
|
+
'history-limit': Flags.integer({
|
|
36
|
+
description: 'maximum first-parent commits per version history',
|
|
37
|
+
min: 1,
|
|
38
|
+
max: 1000,
|
|
39
|
+
default: 100,
|
|
40
|
+
}),
|
|
41
|
+
baseline: Flags.string({
|
|
42
|
+
description: 'historical release baseline as repo=ref; repeat for multiple repositories',
|
|
43
|
+
multiple: true,
|
|
44
|
+
}),
|
|
45
|
+
'version-path': Flags.string({
|
|
46
|
+
description: 'explicit version declaration as repo=path, including nested packages; repeatable',
|
|
47
|
+
multiple: true,
|
|
48
|
+
}),
|
|
24
49
|
jobs: jobsFlag,
|
|
25
50
|
};
|
|
26
51
|
async run() {
|
|
@@ -31,6 +56,12 @@ export default class ReleaseCheckCommand extends FxCommand {
|
|
|
31
56
|
only: flags.only,
|
|
32
57
|
env: flags.env,
|
|
33
58
|
since: flags.since,
|
|
59
|
+
from: flags.from,
|
|
60
|
+
to: flags.to,
|
|
61
|
+
versionHistory: flags['version-history'],
|
|
62
|
+
historyLimit: flags['history-limit'],
|
|
63
|
+
baselines: repoOverrides(flags.baseline),
|
|
64
|
+
versionPaths: repoOverrides(flags['version-path']),
|
|
34
65
|
jobs: flags.jobs,
|
|
35
66
|
});
|
|
36
67
|
// --fields selects from the report itself, in every format.
|