redlinegate 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +188 -0
- package/commands/redline-init.md +54 -0
- package/commands/redline-verify.md +69 -0
- package/dist/bin/redline.js +605 -0
- package/dist/bin/redline.js.map +1 -0
- package/dist/commands/exempt.js +45 -0
- package/dist/commands/exempt.js.map +1 -0
- package/dist/commands/init.js +615 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/policy.js +25 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/remove.js +427 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/review.js +72 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/sync.js +42 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/verify.js +478 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/config/redline-json.js +187 -0
- package/dist/config/redline-json.js.map +1 -0
- package/dist/core/errors.js +25 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/git.js +152 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/log.js +22 -0
- package/dist/core/log.js.map +1 -0
- package/dist/core/severity.js +16 -0
- package/dist/core/severity.js.map +1 -0
- package/dist/core/version.js +15 -0
- package/dist/core/version.js.map +1 -0
- package/dist/detect/scan.js +79 -0
- package/dist/detect/scan.js.map +1 -0
- package/dist/detect/stack.js +71 -0
- package/dist/detect/stack.js.map +1 -0
- package/dist/enforce/ladder.js +148 -0
- package/dist/enforce/ladder.js.map +1 -0
- package/dist/exempt/parse.js +86 -0
- package/dist/exempt/parse.js.map +1 -0
- package/dist/metrics/options.js +257 -0
- package/dist/metrics/options.js.map +1 -0
- package/dist/metrics/run.js +72 -0
- package/dist/metrics/run.js.map +1 -0
- package/dist/platforms/azure/client.js +53 -0
- package/dist/platforms/azure/client.js.map +1 -0
- package/dist/platforms/azure/index.js +69 -0
- package/dist/platforms/azure/index.js.map +1 -0
- package/dist/platforms/azure/install.js +917 -0
- package/dist/platforms/azure/install.js.map +1 -0
- package/dist/platforms/azure/policy-types.js +70 -0
- package/dist/platforms/azure/policy-types.js.map +1 -0
- package/dist/platforms/azure/verify.js +309 -0
- package/dist/platforms/azure/verify.js.map +1 -0
- package/dist/platforms/detect.js +40 -0
- package/dist/platforms/detect.js.map +1 -0
- package/dist/platforms/github/client.js +49 -0
- package/dist/platforms/github/client.js.map +1 -0
- package/dist/platforms/github/index.js +54 -0
- package/dist/platforms/github/index.js.map +1 -0
- package/dist/platforms/github/install.js +558 -0
- package/dist/platforms/github/install.js.map +1 -0
- package/dist/platforms/github/push.js +102 -0
- package/dist/platforms/github/push.js.map +1 -0
- package/dist/platforms/github/remote.js +36 -0
- package/dist/platforms/github/remote.js.map +1 -0
- package/dist/platforms/github/verify.js +366 -0
- package/dist/platforms/github/verify.js.map +1 -0
- package/dist/platforms/http.js +58 -0
- package/dist/platforms/http.js.map +1 -0
- package/dist/platforms/pull-request-templates.js +157 -0
- package/dist/platforms/pull-request-templates.js.map +1 -0
- package/dist/platforms/remote.js +21 -0
- package/dist/platforms/remote.js.map +1 -0
- package/dist/platforms/resolve.js +69 -0
- package/dist/platforms/resolve.js.map +1 -0
- package/dist/platforms/shape.js +19 -0
- package/dist/platforms/shape.js.map +1 -0
- package/dist/platforms/types.js +24 -0
- package/dist/platforms/types.js.map +1 -0
- package/dist/policy/checks.js +91 -0
- package/dist/policy/checks.js.map +1 -0
- package/dist/policy/diff.js +50 -0
- package/dist/policy/diff.js.map +1 -0
- package/dist/registry/discover.js +74 -0
- package/dist/registry/discover.js.map +1 -0
- package/dist/registry/serialize.js +41 -0
- package/dist/registry/serialize.js.map +1 -0
- package/dist/registry/types.js +2 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/remove/host.js +294 -0
- package/dist/remove/host.js.map +1 -0
- package/dist/render/commands.js +139 -0
- package/dist/render/commands.js.map +1 -0
- package/dist/render/manifest.js +82 -0
- package/dist/render/manifest.js.map +1 -0
- package/dist/render/markers.js +166 -0
- package/dist/render/markers.js.map +1 -0
- package/dist/render/profile.js +23 -0
- package/dist/render/profile.js.map +1 -0
- package/dist/render/standards.js +169 -0
- package/dist/render/standards.js.map +1 -0
- package/dist/render/vendors.js +199 -0
- package/dist/render/vendors.js.map +1 -0
- package/dist/review/engines/api.js +95 -0
- package/dist/review/engines/api.js.map +1 -0
- package/dist/review/engines/embedded.js +20 -0
- package/dist/review/engines/embedded.js.map +1 -0
- package/dist/review/engines/types.js +2 -0
- package/dist/review/engines/types.js.map +1 -0
- package/dist/review/glob.js +29 -0
- package/dist/review/glob.js.map +1 -0
- package/dist/review/prompt.js +45 -0
- package/dist/review/prompt.js.map +1 -0
- package/dist/review/rules.js +25 -0
- package/dist/review/rules.js.map +1 -0
- package/dist/review/schema.js +84 -0
- package/dist/review/schema.js.map +1 -0
- package/dist/review/scope.js +27 -0
- package/dist/review/scope.js.map +1 -0
- package/dist/sarif/map.js +58 -0
- package/dist/sarif/map.js.map +1 -0
- package/dist/sarif/parse.js +88 -0
- package/dist/sarif/parse.js.map +1 -0
- package/dist/sarif/types.js +2 -0
- package/dist/sarif/types.js.map +1 -0
- package/dist/sync/host.js +21 -0
- package/dist/sync/host.js.map +1 -0
- package/dist/sync/plan.js +47 -0
- package/dist/sync/plan.js.map +1 -0
- package/dist/sync/render.js +57 -0
- package/dist/sync/render.js.map +1 -0
- package/dist/sync/run.js +118 -0
- package/dist/sync/run.js.map +1 -0
- package/dist/verify/host.js +52 -0
- package/dist/verify/host.js.map +1 -0
- package/dist/verify/remote.js +146 -0
- package/dist/verify/remote.js.map +1 -0
- package/package.json +52 -0
- package/platforms/azure/gate-template.yml +105 -0
- package/rulesets/redline-org-ruleset.json +46 -0
- package/rulesets/redline-ruleset.json +49 -0
- package/scripts/assign-rule-ids.mjs +129 -0
- package/scripts/build-baseline.mjs +124 -0
- package/scripts/build-correlation.mjs +74 -0
- package/scripts/build-dashboard.mjs +584 -0
- package/scripts/build-digest.mjs +164 -0
- package/scripts/build-inbox.mjs +133 -0
- package/scripts/build-registry.mjs +42 -0
- package/scripts/build-roi.mjs +181 -0
- package/scripts/check-pins.mjs +88 -0
- package/scripts/collect-telemetry.mjs +300 -0
- package/scripts/lib/__tests__/baseline.test.mjs +132 -0
- package/scripts/lib/__tests__/correlate.test.mjs +131 -0
- package/scripts/lib/__tests__/dora.test.mjs +110 -0
- package/scripts/lib/__tests__/exemptions.test.mjs +85 -0
- package/scripts/lib/__tests__/metrics-scanner.test.mjs +65 -0
- package/scripts/lib/__tests__/sarif.test.mjs +125 -0
- package/scripts/lib/__tests__/spend.test.mjs +64 -0
- package/scripts/lib/baseline.mjs +156 -0
- package/scripts/lib/correlate.mjs +125 -0
- package/scripts/lib/dora.mjs +133 -0
- package/scripts/lib/exemptions.mjs +79 -0
- package/scripts/lib/metrics.mjs +172 -0
- package/scripts/lib/rules.mjs +107 -0
- package/scripts/lib/sarif.mjs +108 -0
- package/scripts/lib/spend.mjs +69 -0
- package/scripts/measure-context.mjs +101 -0
- package/scripts/render-self.mjs +18 -0
- package/scripts/score-seeds.mjs +294 -0
- package/scripts/validate.mjs +394 -0
- package/standards/core.md +124 -0
- package/standards/manifest.json +214 -0
- package/standards/stacks/csharp.md +29 -0
- package/standards/stacks/go.md +30 -0
- package/standards/stacks/java.md +30 -0
- package/standards/stacks/javascript.md +42 -0
- package/standards/stacks/kotlin.md +27 -0
- package/standards/stacks/microservices.md +37 -0
- package/standards/stacks/nodejs.md +34 -0
- package/standards/stacks/python.md +29 -0
- package/standards/stacks/react-native.md +29 -0
- package/standards/stacks/react.md +46 -0
- package/standards/stacks/swift.md +26 -0
- package/standards/stacks/terraform.md +27 -0
- package/templates/CODEOWNERS +29 -0
- package/templates/azure/pull_request_template.md +72 -0
- package/templates/github/pull_request_template.md +72 -0
- package/templates/redline.yml +35 -0
- package/templates/repo-context.md +64 -0
- package/workflows/dashboard.yml +119 -0
- package/workflows/inbox.yml +97 -0
- package/workflows/redline-collect.yml +61 -0
- package/workflows/redline-gate.yml +301 -0
- package/workflows/redline-sync.yml +79 -0
- package/workflows/seed-canary.yml +231 -0
- package/workflows/verify-onboarding.yml +115 -0
- package/workflows/weekly-digest.yml +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../cli/platforms/azure/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { isNonNullObject, isSuccess } from "../shape.js";
|
|
2
|
+
// CONTRACT: the gate pipeline (platforms/azure/gate-template.yml) publishes a
|
|
3
|
+
// pull-request status with this genre and name. The Status policy this file
|
|
4
|
+
// helps configure must require exactly that pair — see resolvePolicyTypeIds.
|
|
5
|
+
export const AZURE_STATUS_GENRE = 'redline';
|
|
6
|
+
export const AZURE_STATUS_NAME = 'gate';
|
|
7
|
+
export const POLICY_TYPE_NAMES = {
|
|
8
|
+
minimumReviewers: 'Minimum number of reviewers',
|
|
9
|
+
comments: 'Comment requirements',
|
|
10
|
+
status: 'Status',
|
|
11
|
+
requiredReviewers: 'Required reviewers',
|
|
12
|
+
build: 'Build',
|
|
13
|
+
};
|
|
14
|
+
// Brownfield marker: every branch policy Redline writes carries a
|
|
15
|
+
// displayName starting with this prefix. A policy of the same type without
|
|
16
|
+
// it is human-owned and is never updated or deleted.
|
|
17
|
+
export const REDLINE_POLICY_MARKER = 'Redline:';
|
|
18
|
+
export const AZURE_BUILD_POLICY_DISPLAY_NAME = `${REDLINE_POLICY_MARKER} gate build`;
|
|
19
|
+
/**
|
|
20
|
+
* Well-known Azure DevOps policy type ids, used only when the live lookup is
|
|
21
|
+
* unavailable. Verify these against `GET {project}/_apis/policy/types` on the
|
|
22
|
+
* pilot organisation before relying on the fallback path.
|
|
23
|
+
*/
|
|
24
|
+
export const POLICY_TYPE_FALLBACK = {
|
|
25
|
+
'Minimum number of reviewers': 'fa4e907d-c16b-4a4c-9dfa-4906e5d171dd',
|
|
26
|
+
'Comment requirements': 'c6a1889d-b943-4856-b76f-9e46bb6b0df2',
|
|
27
|
+
Status: 'cbdc66da-9728-4af8-aada-9a5a32e4a226',
|
|
28
|
+
'Required reviewers': 'fd2167ab-b0be-447a-8ec8-39368250530e',
|
|
29
|
+
Build: '0609b952-1397-4640-95ec-e00a01b2c241',
|
|
30
|
+
};
|
|
31
|
+
// The types endpoint response is untrusted external input: narrowed by an
|
|
32
|
+
// explicit parse function rather than trusted by shape assertion, and never
|
|
33
|
+
// read before the status is confirmed successful (a 403 body is a truthy
|
|
34
|
+
// object here too, not an array — `Array.isArray` below is what actually
|
|
35
|
+
// protects against it, not `?? []`).
|
|
36
|
+
function parsePolicyTypes(body) {
|
|
37
|
+
if (!isNonNullObject(body) || !Array.isArray(body['value']))
|
|
38
|
+
return null;
|
|
39
|
+
const types = [];
|
|
40
|
+
for (const item of body['value']) {
|
|
41
|
+
if (!isNonNullObject(item))
|
|
42
|
+
return null;
|
|
43
|
+
if (typeof item['id'] !== 'string' || typeof item['displayName'] !== 'string')
|
|
44
|
+
return null;
|
|
45
|
+
types.push({ id: item['id'], displayName: item['displayName'] });
|
|
46
|
+
}
|
|
47
|
+
return types;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolves each name in POLICY_TYPE_NAMES to the live policy type id for
|
|
51
|
+
* `project`, falling back to POLICY_TYPE_FALLBACK for any name the live
|
|
52
|
+
* lookup does not return (including when the whole call is denied or
|
|
53
|
+
* returns an unexpected shape). The lookup call itself never throws — a
|
|
54
|
+
* 403 here degrades to the fallback guids rather than aborting the caller.
|
|
55
|
+
*/
|
|
56
|
+
export async function resolvePolicyTypeIds(client, project) {
|
|
57
|
+
const resolved = { ...POLICY_TYPE_FALLBACK };
|
|
58
|
+
const res = await client.request('GET', `/${project}/_apis/policy/types`);
|
|
59
|
+
if (!isSuccess(res.status))
|
|
60
|
+
return resolved;
|
|
61
|
+
const types = parsePolicyTypes(res.body);
|
|
62
|
+
if (types === null)
|
|
63
|
+
return resolved;
|
|
64
|
+
for (const type of types) {
|
|
65
|
+
if (type.displayName in resolved)
|
|
66
|
+
resolved[type.displayName] = type.id;
|
|
67
|
+
}
|
|
68
|
+
return resolved;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=policy-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-types.js","sourceRoot":"","sources":["../../../cli/platforms/azure/policy-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,gBAAgB,EAAE,6BAA6B;IAC/C,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE,QAAQ;IAChB,iBAAiB,EAAE,oBAAoB;IACvC,KAAK,EAAE,OAAO;CACN,CAAC;AAEX,kEAAkE;AAClE,2EAA2E;AAC3E,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAChD,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,qBAAqB,aAAa,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,6BAA6B,EAAE,sCAAsC;IACrE,sBAAsB,EAAE,sCAAsC;IAC9D,MAAM,EAAE,sCAAsC;IAC9C,oBAAoB,EAAE,sCAAsC;IAC5D,KAAK,EAAE,sCAAsC;CAC9C,CAAC;AAOF,0EAA0E;AAC1E,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,qCAAqC;AACrC,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACzE,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAmB,EACnB,OAAe;IAEf,MAAM,QAAQ,GAA2B,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,OAAO,qBAAqB,CAAC,CAAC;IACnF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE5C,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { RedlineError } from "../../core/errors.js";
|
|
4
|
+
import { AZURE_BUILD_POLICY_DISPLAY_NAME, AZURE_STATUS_GENRE, AZURE_STATUS_NAME, POLICY_TYPE_NAMES, REDLINE_POLICY_MARKER, resolvePolicyTypeIds, } from "./policy-types.js";
|
|
5
|
+
import { createHostShapeError, isNonNullObject, isSuccess } from "../shape.js";
|
|
6
|
+
// Azure response bodies are untrusted external input, same house style as
|
|
7
|
+
// cli/platforms/github/verify.ts and cli/platforms/azure/install.ts: typed
|
|
8
|
+
// `unknown`, narrowed by an explicit parse function, and never read before
|
|
9
|
+
// the status is confirmed successful. An Azure error body is a truthy
|
|
10
|
+
// object (e.g. `{ message: "Forbidden" }`), not an array — `?? []` never
|
|
11
|
+
// fires on it, so shape is verified with `Array.isArray`/`isNonNullObject`,
|
|
12
|
+
// not coercion.
|
|
13
|
+
const hostShapeError = createHostShapeError('Azure DevOps');
|
|
14
|
+
// The pipeline `installGate` writes. Azure Repos ignores YAML `pr:` triggers,
|
|
15
|
+
// so this file plus the Build Validation policy are the whole of what runs the
|
|
16
|
+
// gate: with the file gone, no status is ever published and a blocking Status
|
|
17
|
+
// policy blocks every pull request forever.
|
|
18
|
+
const GATE_PIPELINE = '.azuredevops/redline-gate.yml';
|
|
19
|
+
// What the Status branch policy requires, and what a correctly installed
|
|
20
|
+
// pipeline publishes — the same `genre/name` shape readReportedCheckNames
|
|
21
|
+
// reports back off a pull request.
|
|
22
|
+
const AZURE_STATUS_CONTEXT = `${AZURE_STATUS_GENRE}/${AZURE_STATUS_NAME}`;
|
|
23
|
+
function assertOk(status, path) {
|
|
24
|
+
if (!isSuccess(status)) {
|
|
25
|
+
throw new RedlineError('host', `Azure DevOps returned HTTP ${status} reading ${path}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function parseScopedRepoIds(settings) {
|
|
29
|
+
const scope = settings['scope'];
|
|
30
|
+
if (!Array.isArray(scope))
|
|
31
|
+
return [];
|
|
32
|
+
const ids = [];
|
|
33
|
+
for (const entry of scope) {
|
|
34
|
+
if (isNonNullObject(entry) && typeof entry['repositoryId'] === 'string') {
|
|
35
|
+
ids.push(entry['repositoryId']);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return ids;
|
|
39
|
+
}
|
|
40
|
+
function parsePolicyConfigurations(body, what) {
|
|
41
|
+
if (!isNonNullObject(body) || !Array.isArray(body['value']))
|
|
42
|
+
throw hostShapeError(what);
|
|
43
|
+
return body['value'].map((item) => {
|
|
44
|
+
if (!isNonNullObject(item) ||
|
|
45
|
+
typeof item['id'] !== 'number' ||
|
|
46
|
+
typeof item['isEnabled'] !== 'boolean' ||
|
|
47
|
+
typeof item['isBlocking'] !== 'boolean') {
|
|
48
|
+
throw hostShapeError(what);
|
|
49
|
+
}
|
|
50
|
+
const type = item['type'];
|
|
51
|
+
if (!isNonNullObject(type) || typeof type['id'] !== 'string')
|
|
52
|
+
throw hostShapeError(what);
|
|
53
|
+
const settings = item['settings'];
|
|
54
|
+
if (!isNonNullObject(settings))
|
|
55
|
+
throw hostShapeError(what);
|
|
56
|
+
return {
|
|
57
|
+
id: item['id'],
|
|
58
|
+
isEnabled: item['isEnabled'],
|
|
59
|
+
isBlocking: item['isBlocking'],
|
|
60
|
+
type: { id: type['id'] },
|
|
61
|
+
settings,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function parseStatusList(body, what) {
|
|
66
|
+
if (!isNonNullObject(body) || !Array.isArray(body['value']))
|
|
67
|
+
throw hostShapeError(what);
|
|
68
|
+
return body['value'].map((item) => {
|
|
69
|
+
if (!isNonNullObject(item))
|
|
70
|
+
throw hostShapeError(what);
|
|
71
|
+
const context = item['context'];
|
|
72
|
+
if (!isNonNullObject(context) || typeof context['name'] !== 'string')
|
|
73
|
+
throw hostShapeError(what);
|
|
74
|
+
const genre = context['genre'];
|
|
75
|
+
if (genre !== undefined && typeof genre !== 'string')
|
|
76
|
+
throw hostShapeError(what);
|
|
77
|
+
return { name: context['name'], ...(genre !== undefined ? { genre } : {}) };
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function parsePullRequestIds(body, what) {
|
|
81
|
+
if (!isNonNullObject(body) || !Array.isArray(body['value']))
|
|
82
|
+
throw hostShapeError(what);
|
|
83
|
+
return body['value'].map((item) => {
|
|
84
|
+
if (!isNonNullObject(item) || typeof item['pullRequestId'] !== 'number')
|
|
85
|
+
throw hostShapeError(what);
|
|
86
|
+
return item['pullRequestId'];
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function parseEnablement(body, what) {
|
|
90
|
+
if (!isNonNullObject(body))
|
|
91
|
+
throw hostShapeError(what);
|
|
92
|
+
const advSecEnabled = body['advSecEnabled'];
|
|
93
|
+
const blockPushes = body['blockPushes'];
|
|
94
|
+
if (advSecEnabled !== undefined && typeof advSecEnabled !== 'boolean')
|
|
95
|
+
throw hostShapeError(what);
|
|
96
|
+
if (blockPushes !== undefined && typeof blockPushes !== 'boolean')
|
|
97
|
+
throw hostShapeError(what);
|
|
98
|
+
return {
|
|
99
|
+
...(advSecEnabled !== undefined ? { advSecEnabled } : {}),
|
|
100
|
+
...(blockPushes !== undefined ? { blockPushes } : {}),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function createAzureVerify(client) {
|
|
104
|
+
const project = (ref) => {
|
|
105
|
+
if (!ref.project)
|
|
106
|
+
throw new RedlineError('usage', 'an Azure DevOps repository needs a project');
|
|
107
|
+
return ref.project;
|
|
108
|
+
};
|
|
109
|
+
const repoId = (ref) => {
|
|
110
|
+
if (!ref.repoId)
|
|
111
|
+
throw new RedlineError('usage', 'an Azure DevOps repository needs its id');
|
|
112
|
+
return ref.repoId;
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
async readPolicy(ref) {
|
|
116
|
+
const proj = project(ref);
|
|
117
|
+
const types = await resolvePolicyTypeIds(client, proj);
|
|
118
|
+
const path = `/${proj}/_apis/policy/configurations`;
|
|
119
|
+
const res = await client.request('GET', path);
|
|
120
|
+
assertOk(res.status, path);
|
|
121
|
+
const configs = parsePolicyConfigurations(res.body, 'policy configurations');
|
|
122
|
+
const repo = repoId(ref);
|
|
123
|
+
const mine = configs.filter((c) => parseScopedRepoIds(c.settings).includes(repo));
|
|
124
|
+
if (mine.length === 0)
|
|
125
|
+
return null;
|
|
126
|
+
const byType = (name) => mine.find((c) => c.type.id === types[name]);
|
|
127
|
+
const reviewers = byType(POLICY_TYPE_NAMES.minimumReviewers);
|
|
128
|
+
const comments = byType(POLICY_TYPE_NAMES.comments);
|
|
129
|
+
const status = byType(POLICY_TYPE_NAMES.status);
|
|
130
|
+
// The gate's Build Validation policy — what actually queues the gate
|
|
131
|
+
// pipeline, since Azure Repos ignores YAML `pr:` triggers. Matched by
|
|
132
|
+
// the Redline: displayName marker, never by type alone: a repository
|
|
133
|
+
// routinely carries human-owned build policies of the same type.
|
|
134
|
+
const gateBuild = mine.find((c) => {
|
|
135
|
+
const displayName = c.settings['displayName'];
|
|
136
|
+
return (c.type.id === types[POLICY_TYPE_NAMES.build] &&
|
|
137
|
+
typeof displayName === 'string' &&
|
|
138
|
+
displayName.startsWith(REDLINE_POLICY_MARKER));
|
|
139
|
+
});
|
|
140
|
+
const genre = status?.settings['statusGenre'];
|
|
141
|
+
const statusName = status?.settings['statusName'];
|
|
142
|
+
// Mirrors the GitHub adapter: an advisory gate requires nothing, so
|
|
143
|
+
// required checks are derived only from a blocking status policy.
|
|
144
|
+
const requiredChecks = status !== undefined && status.isBlocking && typeof genre === 'string' && typeof statusName === 'string'
|
|
145
|
+
? [`${genre}/${statusName}`]
|
|
146
|
+
: [];
|
|
147
|
+
const minimumApproverCount = reviewers?.settings['minimumApproverCount'];
|
|
148
|
+
// What this host cannot say is Redline's own. `applyPolicy` writes no
|
|
149
|
+
// required-reviewers policy at all here — Azure has no CODEOWNERS-driven
|
|
150
|
+
// reviewer requirement — so `requireCodeOwnerReview` read off this host
|
|
151
|
+
// is never evidence about Redline's install.
|
|
152
|
+
//
|
|
153
|
+
// The reviewer count and comment resolution are a three-way split, and
|
|
154
|
+
// collapsing the last two hid the most obvious way to loosen an Azure
|
|
155
|
+
// repository. A policy of that type carrying the Redline: marker is
|
|
156
|
+
// Redline's, and its value is drift when it weakens. An UNMARKED policy
|
|
157
|
+
// of that type is a human's: `init` reported it and wrote nothing rather
|
|
158
|
+
// than stacking a second copy of a one-setting-per-branch control, so
|
|
159
|
+
// holding the repository to a value Redline never set would fail it on
|
|
160
|
+
// every pull request forever. NO policy of that type at all is neither:
|
|
161
|
+
// it is the state after someone deleted Redline's, and the values read
|
|
162
|
+
// back (0 approvers, threads not required) are the real, live weakening.
|
|
163
|
+
const ownership = (config) => {
|
|
164
|
+
if (config === undefined)
|
|
165
|
+
return 'absent';
|
|
166
|
+
const displayName = config.settings['displayName'];
|
|
167
|
+
return typeof displayName === 'string' && displayName.startsWith(REDLINE_POLICY_MARKER)
|
|
168
|
+
? 'redline'
|
|
169
|
+
: 'human';
|
|
170
|
+
};
|
|
171
|
+
const unownedSettings = ['requireCodeOwnerReview'];
|
|
172
|
+
// Both of these live in the minimum-reviewers policy's own settings
|
|
173
|
+
// (minimumApproverCount, resetOnSourcePush), so they share its ownership.
|
|
174
|
+
if (ownership(reviewers) === 'human') {
|
|
175
|
+
unownedSettings.push('requiredApprovals', 'dismissStaleReviews');
|
|
176
|
+
}
|
|
177
|
+
if (ownership(comments) === 'human')
|
|
178
|
+
unownedSettings.push('requireThreadResolution');
|
|
179
|
+
// A blocking Status policy with nothing to queue the pipeline reads as
|
|
180
|
+
// advisory above, which on its own tells an operator the opposite of
|
|
181
|
+
// what they need: the Status policy is the part that is right, and the
|
|
182
|
+
// missing Build Validation policy is why no pull request can ever
|
|
183
|
+
// satisfy it.
|
|
184
|
+
const advisoryReason = status?.isBlocking === true && gateBuild === undefined
|
|
185
|
+
? `the ${AZURE_STATUS_GENRE}/${AZURE_STATUS_NAME} status policy is blocking, but no ` +
|
|
186
|
+
`"${AZURE_BUILD_POLICY_DISPLAY_NAME}" Build Validation policy queues the gate pipeline ` +
|
|
187
|
+
`(Azure Repos ignores the YAML pr: trigger), so the status is never published and every ` +
|
|
188
|
+
`pull request will sit blocked — re-run redline init with build administrator rights`
|
|
189
|
+
: null;
|
|
190
|
+
return {
|
|
191
|
+
requiredApprovals: typeof minimumApproverCount === 'number' ? minimumApproverCount : 0,
|
|
192
|
+
dismissStaleReviews: reviewers?.settings['resetOnSourcePush'] === true,
|
|
193
|
+
requireCodeOwnerReview: byType(POLICY_TYPE_NAMES.requiredReviewers) !== undefined,
|
|
194
|
+
requireThreadResolution: comments?.isEnabled === true,
|
|
195
|
+
requiredChecks,
|
|
196
|
+
// Without the Build Validation policy nothing runs the gate pipeline
|
|
197
|
+
// and redline/gate is never published — a blocking status policy on
|
|
198
|
+
// its own is a misconfiguration, not an enforcing gate.
|
|
199
|
+
blocking: status?.isBlocking === true && gateBuild !== undefined,
|
|
200
|
+
unownedSettings,
|
|
201
|
+
...(advisoryReason !== null ? { advisoryReason } : {}),
|
|
202
|
+
};
|
|
203
|
+
},
|
|
204
|
+
readGateMachinery(cwd) {
|
|
205
|
+
const abs = join(cwd, GATE_PIPELINE);
|
|
206
|
+
const base = { path: GATE_PIPELINE, expected: AZURE_STATUS_CONTEXT };
|
|
207
|
+
if (!existsSync(abs))
|
|
208
|
+
return { ...base, present: false, publishes: null };
|
|
209
|
+
// Same guard as the GitHub adapter: a local read that cannot be
|
|
210
|
+
// completed is a finding about this repository, not an internal defect.
|
|
211
|
+
let body;
|
|
212
|
+
try {
|
|
213
|
+
body = readFileSync(abs, 'utf8');
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
throw new RedlineError('failed', `cannot read ${GATE_PIPELINE}: ${error instanceof Error ? error.message : String(error)}`, 'restore it from redline init, or make it readable');
|
|
217
|
+
}
|
|
218
|
+
// CONTRACT with platforms/azure/gate-template.yml: its final step posts
|
|
219
|
+
// a pull-request status whose context is this genre and name, and the
|
|
220
|
+
// Status branch policy requires exactly that. Editing either value in
|
|
221
|
+
// the installed file makes the policy unsatisfiable, which is the same
|
|
222
|
+
// outage a renamed caller job is on GitHub.
|
|
223
|
+
//
|
|
224
|
+
// Matched with the quoting and spacing latitude jq's own body allows —
|
|
225
|
+
// a substring match on one spelling failed the gate over a second space
|
|
226
|
+
// — and with comment lines dropped first, so the contract surviving in a
|
|
227
|
+
// comment after the publish step was deleted is not read as publishing.
|
|
228
|
+
const live = body
|
|
229
|
+
.split('\n')
|
|
230
|
+
.filter((line) => !line.trimStart().startsWith('#'))
|
|
231
|
+
.join('\n');
|
|
232
|
+
const declares = (key, value) => new RegExp(`${key}\\s*:\\s*["']${value}["']`).test(live);
|
|
233
|
+
const publishes = declares('name', AZURE_STATUS_NAME) && declares('genre', AZURE_STATUS_GENRE)
|
|
234
|
+
? AZURE_STATUS_CONTEXT
|
|
235
|
+
: null;
|
|
236
|
+
return { ...base, present: true, publishes };
|
|
237
|
+
},
|
|
238
|
+
async readReportedCheckNames(ref, pr) {
|
|
239
|
+
const path = `/${project(ref)}/_apis/git/repositories/${repoId(ref)}/pullRequests/${pr}/statuses`;
|
|
240
|
+
const res = await client.request('GET', path);
|
|
241
|
+
assertOk(res.status, path);
|
|
242
|
+
const statuses = parseStatusList(res.body, 'pull request statuses');
|
|
243
|
+
return statuses.map((s) => (s.genre ? `${s.genre}/${s.name}` : s.name));
|
|
244
|
+
},
|
|
245
|
+
async readSecurityState(ref) {
|
|
246
|
+
const path = `/${project(ref)}/_apis/management/repositories/${repoId(ref)}/enablement`;
|
|
247
|
+
const res = await client.request('GET', path, undefined, {
|
|
248
|
+
host: 'advsec',
|
|
249
|
+
apiVersion: '7.2-preview.1',
|
|
250
|
+
});
|
|
251
|
+
// Advanced Security is a separately licensed feature: a tenant without
|
|
252
|
+
// it returns 404 here — that is `unsupported`, a DEFINITE answer ("this
|
|
253
|
+
// capability does not exist on this repository"), never `denied`, the
|
|
254
|
+
// same distinction install.ts's enableSecurityFloor draws.
|
|
255
|
+
//
|
|
256
|
+
// A 401/403 is a different thing: Azure DevOps does not document this
|
|
257
|
+
// endpoint distinguishing "you lack permission to see this" from a
|
|
258
|
+
// well-formed refusal, so it degrades to `unknown` — the read gave no
|
|
259
|
+
// answer — rather than `denied`. Mapping it to `denied` was the exact
|
|
260
|
+
// defect Task 6 closed on GitHub and Task 17 closes here: a token that
|
|
261
|
+
// can WRITE the enablement setting but cannot READ it back made a
|
|
262
|
+
// re-run overwrite a correct `.redline.json` with a false pendingAdmin
|
|
263
|
+
// list, open a pull request, and exit 0. `isPending` treats `unknown`
|
|
264
|
+
// exactly like `unsupported` — neither enters pendingAdmin, and neither
|
|
265
|
+
// clears an entry already recorded there — so this is the conservative
|
|
266
|
+
// direction: an indeterminate read leaves the record exactly as it was.
|
|
267
|
+
//
|
|
268
|
+
// Any other non-2xx (500, 502, a gateway timeout) is a host error, not
|
|
269
|
+
// a finding about the repository, and must not be dressed up as any
|
|
270
|
+
// capability outcome — throw, same as assertOk everywhere else in this
|
|
271
|
+
// file.
|
|
272
|
+
const refusal = res.status === 404 ? 'unsupported' : res.status === 401 || res.status === 403 ? 'unknown' : null;
|
|
273
|
+
if (refusal === null)
|
|
274
|
+
assertOk(res.status, path);
|
|
275
|
+
const body = refusal === null ? parseEnablement(res.body, 'a repository enablement') : null;
|
|
276
|
+
const statusFor = (on) => refusal ?? (on === true ? 'applied' : 'denied');
|
|
277
|
+
return {
|
|
278
|
+
outcomes: [
|
|
279
|
+
{
|
|
280
|
+
capability: 'secret-scanning',
|
|
281
|
+
status: statusFor(body?.advSecEnabled),
|
|
282
|
+
detail: 'advanced security secret scanning',
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
capability: 'push-protection',
|
|
286
|
+
status: statusFor(body?.blockPushes),
|
|
287
|
+
detail: 'advanced security push protection',
|
|
288
|
+
},
|
|
289
|
+
// Read back off the same flag `enableSecurityFloor` records it from:
|
|
290
|
+
// dependency scanning is part of Advanced Security, not a separately
|
|
291
|
+
// switched feature, so `advSecEnabled` is the whole answer here.
|
|
292
|
+
{
|
|
293
|
+
capability: 'dependency-alerts',
|
|
294
|
+
status: statusFor(body?.advSecEnabled),
|
|
295
|
+
detail: 'advanced security dependency scanning',
|
|
296
|
+
},
|
|
297
|
+
],
|
|
298
|
+
};
|
|
299
|
+
},
|
|
300
|
+
async latestPullRequestNumber(ref) {
|
|
301
|
+
const path = `/${project(ref)}/_apis/git/repositories/${repoId(ref)}/pullrequests?searchCriteria.status=all&$top=1`;
|
|
302
|
+
const res = await client.request('GET', path);
|
|
303
|
+
assertOk(res.status, path);
|
|
304
|
+
const ids = parsePullRequestIds(res.body, 'a pull request list');
|
|
305
|
+
return ids[0] ?? null;
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../cli/platforms/azure/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAWpD,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/E,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,gBAAgB;AAEhB,MAAM,cAAc,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAE5D,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,4CAA4C;AAC5C,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAEtD,yEAAyE;AACzE,0EAA0E;AAC1E,mCAAmC;AACnC,MAAM,oBAAoB,GAAG,GAAG,kBAAkB,IAAI,iBAAiB,EAAE,CAAC;AAE1E,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAY;IAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,8BAA8B,MAAM,YAAY,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAUD,SAAS,kBAAkB,CAAC,QAAiC;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAa,EAAE,IAAY;IAC5D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,IACE,CAAC,eAAe,CAAC,IAAI,CAAC;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ;YAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,SAAS;YACtC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,EACvC,CAAC;YACD,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACxB,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,SAAS,eAAe,CAAC,IAAa,EAAE,IAAY;IAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ;YAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACjG,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACjF,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAa,EAAE,IAAY;IACtD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,QAAQ;YAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,SAAS,eAAe,CAAC,IAAa,EAAE,IAAY;IAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,KAAK,SAAS;QAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAClG,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,SAAS;QAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9F,OAAO;QACL,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,OAAO,GAAG,CAAC,GAAY,EAAU,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,4CAA4C,CAAC,CAAC;QAChG,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,GAAY,EAAU,EAAE;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;QAC5F,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,GAAY;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,IAAI,8BAA8B,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,CAAC,CAAC;YACvD,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YAE7E,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAClF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEnC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAmC,EAAE,CAC/D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAEhD,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,iEAAiE;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAC9C,OAAO,CACL,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;oBAC5C,OAAO,WAAW,KAAK,QAAQ;oBAC/B,WAAW,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAC9C,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAClD,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,cAAc,GAClB,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;gBACtG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC5B,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,oBAAoB,GAAG,SAAS,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;YAEzE,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;YACxE,6CAA6C;YAC7C,EAAE;YACF,uEAAuE;YACvE,sEAAsE;YACtE,oEAAoE;YACpE,wEAAwE;YACxE,yEAAyE;YACzE,sEAAsE;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,uEAAuE;YACvE,yEAAyE;YACzE,MAAM,SAAS,GAAG,CAAC,MAAuC,EAAkC,EAAE;gBAC5F,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,QAAQ,CAAC;gBAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACnD,OAAO,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,qBAAqB,CAAC;oBACrF,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,OAAO,CAAC;YACd,CAAC,CAAC;YACF,MAAM,eAAe,GAAoB,CAAC,wBAAwB,CAAC,CAAC;YACpE,oEAAoE;YACpE,0EAA0E;YAC1E,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC;gBACrC,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,OAAO;gBAAE,eAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAErF,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,kEAAkE;YAClE,cAAc;YACd,MAAM,cAAc,GAClB,MAAM,EAAE,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;gBACpD,CAAC,CAAC,OAAO,kBAAkB,IAAI,iBAAiB,qCAAqC;oBACnF,IAAI,+BAA+B,qDAAqD;oBACxF,yFAAyF;oBACzF,qFAAqF;gBACvF,CAAC,CAAC,IAAI,CAAC;YAEX,OAAO;gBACL,iBAAiB,EAAE,OAAO,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACtF,mBAAmB,EAAE,SAAS,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI;gBACtE,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,SAAS;gBACjF,uBAAuB,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI;gBACrD,cAAc;gBACd,qEAAqE;gBACrE,oEAAoE;gBACpE,wDAAwD;gBACxD,QAAQ,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;gBAChE,eAAe;gBACf,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD,CAAC;QACJ,CAAC;QAED,iBAAiB,CAAC,GAAW;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC1E,gEAAgE;YAChE,wEAAwE;YACxE,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,YAAY,CACpB,QAAQ,EACR,eAAe,aAAa,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzF,mDAAmD,CACpD,CAAC;YACJ,CAAC;YACD,wEAAwE;YACxE,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,4CAA4C;YAC5C,EAAE;YACF,uEAAuE;YACvE,wEAAwE;YACxE,yEAAyE;YACzE,wEAAwE;YACxE,MAAM,IAAI,GAAG,IAAI;iBACd,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBACnD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAa,EAAW,EAAE,CACvD,IAAI,MAAM,CAAC,GAAG,GAAG,gBAAgB,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,SAAS,GACb,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAC1E,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,sBAAsB,CAAC,GAAY,EAAE,EAAU;YACnD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC;YAClG,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,CAAC,CAAC;YACvD,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,GAAY;YAClC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;YACxF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,uEAAuE;YACvE,wEAAwE;YACxE,sEAAsE;YACtE,2DAA2D;YAC3D,EAAE;YACF,sEAAsE;YACtE,mEAAmE;YACnE,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,kEAAkE;YAClE,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;YACvE,wEAAwE;YACxE,EAAE;YACF,uEAAuE;YACvE,oEAAoE;YACpE,uEAAuE;YACvE,QAAQ;YACR,MAAM,OAAO,GACX,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACnG,IAAI,OAAO,KAAK,IAAI;gBAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5F,MAAM,SAAS,GAAG,CAAC,EAAuB,EAA+B,EAAE,CACzE,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAElD,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,UAAU,EAAE,iBAAiB;wBAC7B,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC;wBACtC,MAAM,EAAE,mCAAmC;qBAC5C;oBACD;wBACE,UAAU,EAAE,iBAAiB;wBAC7B,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC;wBACpC,MAAM,EAAE,mCAAmC;qBAC5C;oBACD,qEAAqE;oBACrE,qEAAqE;oBACrE,iEAAiE;oBACjE;wBACE,UAAU,EAAE,mBAAmB;wBAC/B,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC;wBACtC,MAAM,EAAE,uCAAuC;qBAChD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,uBAAuB,CAAC,GAAY;YACxC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC;YACpH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,CAAC,CAAC;YACvD,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACjE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { RedlineError } from "../core/errors.js";
|
|
2
|
+
const AZURE_HTTPS = /^https?:\/\/dev\.azure\.com\/([^/]+)\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/;
|
|
3
|
+
const AZURE_SSH = /^git@ssh\.dev\.azure\.com:v3\/([^/]+)\/([^/]+)\/([^/]+?)(?:\.git)?$/;
|
|
4
|
+
const AZURE_LEGACY = /^https?:\/\/([^.]+)\.visualstudio\.com\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/;
|
|
5
|
+
// GitHub is recognised by a hostname *containing* "github" plus a
|
|
6
|
+
// two-segment org/repo path — not by URL shape alone. This covers
|
|
7
|
+
// github.com and a self-hosted GitHub Enterprise Server whose hostname
|
|
8
|
+
// happens to include "github" (e.g. github.acme-corp.net), and rejects
|
|
9
|
+
// gitlab.com and other unrelated hosts that share the same path shape.
|
|
10
|
+
// A GHES instance on a hostname WITHOUT that substring (e.g.
|
|
11
|
+
// git.internal-corp.io) is NOT auto-detected and falls through to the
|
|
12
|
+
// "cannot tell which host" error below — telling an arbitrary self-hosted
|
|
13
|
+
// GHES apart from any other git-over-HTTPS remote by shape alone is
|
|
14
|
+
// underspecified without an allowlist or an explicit hint (out of scope
|
|
15
|
+
// here; a `--host` override belongs to the command surface, not this
|
|
16
|
+
// pure parser).
|
|
17
|
+
const GENERIC_HTTPS = /^https?:\/\/([^/]+)\/([^/]+)\/([^/]+?)(?:\.git)?$/;
|
|
18
|
+
const GENERIC_SSH = /^(?:ssh:\/\/)?git@([^:/]+)[:/]([^/]+)\/([^/]+?)(?:\.git)?$/;
|
|
19
|
+
export function parseRemote(url) {
|
|
20
|
+
const trimmed = url.trim();
|
|
21
|
+
if (trimmed === '') {
|
|
22
|
+
throw new RedlineError('usage', 'this repository has no git remote', 'add one with: git remote add origin <url>');
|
|
23
|
+
}
|
|
24
|
+
for (const pattern of [AZURE_HTTPS, AZURE_SSH, AZURE_LEGACY]) {
|
|
25
|
+
const m = pattern.exec(trimmed);
|
|
26
|
+
if (m)
|
|
27
|
+
return { host: 'azure', org: m[1], project: m[2], repo: m[3] };
|
|
28
|
+
}
|
|
29
|
+
for (const pattern of [GENERIC_SSH, GENERIC_HTTPS]) {
|
|
30
|
+
const m = pattern.exec(trimmed);
|
|
31
|
+
if (m && m[1].toLowerCase().includes('github')) {
|
|
32
|
+
return { host: 'github', org: m[2], repo: m[3] };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
throw new RedlineError('usage', `cannot tell which host "${trimmed}" belongs to — recognised shapes: ` +
|
|
36
|
+
'github.com/<org>/<repo> or any "github"-named hostname with that path shape (GitHub Enterprise Server), ' +
|
|
37
|
+
'dev.azure.com/<org>/<project>/_git/<repo>, ssh.dev.azure.com:v3/<org>/<project>/<repo>, ' +
|
|
38
|
+
'and <org>.visualstudio.com/<project>/_git/<repo>', 'add a github or azure devops remote to continue');
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../cli/platforms/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUjD,MAAM,WAAW,GAAG,0EAA0E,CAAC;AAC/F,MAAM,SAAS,GAAG,qEAAqE,CAAC;AACxF,MAAM,YAAY,GAAG,4EAA4E,CAAC;AAClG,kEAAkE;AAClE,kEAAkE;AAClE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,6DAA6D;AAC7D,sEAAsE;AACtE,0EAA0E;AAC1E,oEAAoE;AACpE,wEAAwE;AACxE,qEAAqE;AACrE,gBAAgB;AAChB,MAAM,aAAa,GAAG,mDAAmD,CAAC;AAC1E,MAAM,WAAW,GAAG,4DAA4D,CAAC;AAEjF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,mCAAmC,EACnC,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;IAC3E,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,2BAA2B,OAAO,oCAAoC;QACpE,0GAA0G;QAC1G,0FAA0F;QAC1F,kDAAkD,EACpD,iDAAiD,CAClD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { RedlineError } from "../../core/errors.js";
|
|
3
|
+
import { createHttp } from "../http.js";
|
|
4
|
+
const readGhTokenFromCli = () => execFileSync('gh', ['auth', 'token'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
|
|
5
|
+
export function resolveGitHubToken(env, readGhToken = readGhTokenFromCli) {
|
|
6
|
+
const fromEnv = env['GH_TOKEN'] ?? env['GITHUB_TOKEN'];
|
|
7
|
+
if (fromEnv)
|
|
8
|
+
return fromEnv;
|
|
9
|
+
try {
|
|
10
|
+
const token = readGhToken();
|
|
11
|
+
if (token)
|
|
12
|
+
return token;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// fall through to the error below
|
|
16
|
+
}
|
|
17
|
+
throw new RedlineError('permission', 'no GitHub credentials found — run: gh auth login, or set GH_TOKEN', 'run: gh auth login — or set GH_TOKEN');
|
|
18
|
+
}
|
|
19
|
+
export function createGitHubClient(opts = {}) {
|
|
20
|
+
const env = opts.env ?? process.env;
|
|
21
|
+
const token = opts.token ?? resolveGitHubToken(env);
|
|
22
|
+
const baseUrl = env['GITHUB_API_URL'] ?? 'https://api.github.com';
|
|
23
|
+
const headers = {
|
|
24
|
+
authorization: `Bearer ${token}`,
|
|
25
|
+
accept: 'application/vnd.github+json',
|
|
26
|
+
'x-github-api-version': '2022-11-28',
|
|
27
|
+
'user-agent': 'redlinegate',
|
|
28
|
+
};
|
|
29
|
+
const httpOptions = {
|
|
30
|
+
...(opts.fetch ? { fetch: opts.fetch } : {}),
|
|
31
|
+
...(opts.sleep ? { sleep: opts.sleep } : {}),
|
|
32
|
+
};
|
|
33
|
+
const http = createHttp(baseUrl, headers, httpOptions);
|
|
34
|
+
const graphqlUrl = `${baseUrl.replace(/\/api\/v3$/, '/api')}/graphql`;
|
|
35
|
+
return {
|
|
36
|
+
rest: (method, path, body) => http.request(method, path, body),
|
|
37
|
+
async graphql(query, variables) {
|
|
38
|
+
const res = await http.request('POST', graphqlUrl, { query, variables });
|
|
39
|
+
const errors = res.body?.errors;
|
|
40
|
+
if (errors?.length) {
|
|
41
|
+
throw new RedlineError('host', `GitHub GraphQL: ${errors.map((e) => e.message).join('; ')}`);
|
|
42
|
+
}
|
|
43
|
+
if (!res.body?.data)
|
|
44
|
+
throw new RedlineError('host', 'GitHub GraphQL returned no data');
|
|
45
|
+
return res.body.data;
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../cli/platforms/github/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAqC,MAAM,YAAY,CAAC;AAc3E,MAAM,kBAAkB,GAAG,GAAW,EAAE,CACtC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAExG,MAAM,UAAU,kBAAkB,CAChC,GAAsB,EACtB,cAA4B,kBAAkB;IAE9C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;QAC5B,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IACD,MAAM,IAAI,YAAY,CACpB,YAAY,EACZ,mEAAmE,EACnE,sCAAsC,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,wBAAwB,CAAC;IAClE,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,MAAM,EAAE,6BAA6B;QACrC,sBAAsB,EAAE,YAAY;QACpC,YAAY,EAAE,aAAa;KAC5B,CAAC;IACF,MAAM,WAAW,GAAG;QAClB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC;IAEtE,OAAO;QACL,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAI,KAAa,EAAE,SAAkC;YAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,UAAU,EACV,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC;YACF,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;YAChC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnB,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,mBAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI;gBAAE,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;YACvF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
|