redlinegate 0.0.1 → 0.0.3

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.
Files changed (86) hide show
  1. package/README.md +23 -7
  2. package/dist/bin/redline.js +338 -43
  3. package/dist/bin/redline.js.map +1 -1
  4. package/dist/commands/init.js +353 -34
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/remove.js +43 -1
  7. package/dist/commands/remove.js.map +1 -1
  8. package/dist/commands/status.js +94 -0
  9. package/dist/commands/status.js.map +1 -0
  10. package/dist/commands/verify.js +82 -2
  11. package/dist/commands/verify.js.map +1 -1
  12. package/dist/config/redline-json.js +63 -2
  13. package/dist/config/redline-json.js.map +1 -1
  14. package/dist/core/git.js +50 -3
  15. package/dist/core/git.js.map +1 -1
  16. package/dist/core/version.js +6 -0
  17. package/dist/core/version.js.map +1 -1
  18. package/dist/detect/existing.js +151 -0
  19. package/dist/detect/existing.js.map +1 -0
  20. package/dist/detect/setup.js +200 -0
  21. package/dist/detect/setup.js.map +1 -0
  22. package/dist/detect/stack.js +56 -17
  23. package/dist/detect/stack.js.map +1 -1
  24. package/dist/exempt/parse.js +8 -1
  25. package/dist/exempt/parse.js.map +1 -1
  26. package/dist/metrics/options.js +0 -9
  27. package/dist/metrics/options.js.map +1 -1
  28. package/dist/platforms/azure/install.js +9 -9
  29. package/dist/platforms/azure/install.js.map +1 -1
  30. package/dist/platforms/azure/verify.js +10 -2
  31. package/dist/platforms/azure/verify.js.map +1 -1
  32. package/dist/platforms/github/install.js +192 -26
  33. package/dist/platforms/github/install.js.map +1 -1
  34. package/dist/platforms/github/preflight.js +63 -0
  35. package/dist/platforms/github/preflight.js.map +1 -0
  36. package/dist/platforms/github/vendor.js +81 -0
  37. package/dist/platforms/github/vendor.js.map +1 -0
  38. package/dist/platforms/github/verify.js +79 -7
  39. package/dist/platforms/github/verify.js.map +1 -1
  40. package/dist/platforms/types.js +8 -0
  41. package/dist/platforms/types.js.map +1 -1
  42. package/dist/policy/diff.js +26 -9
  43. package/dist/policy/diff.js.map +1 -1
  44. package/dist/render/contexts.js +39 -0
  45. package/dist/render/contexts.js.map +1 -0
  46. package/dist/render/profile.js +44 -10
  47. package/dist/render/profile.js.map +1 -1
  48. package/dist/render/standards.js +10 -1
  49. package/dist/render/standards.js.map +1 -1
  50. package/dist/render/vendors.js +14 -53
  51. package/dist/render/vendors.js.map +1 -1
  52. package/dist/rules/catalogue.js +127 -0
  53. package/dist/rules/catalogue.js.map +1 -0
  54. package/dist/ui/facts.js +111 -0
  55. package/dist/ui/facts.js.map +1 -0
  56. package/dist/ui/prompt.js +330 -0
  57. package/dist/ui/prompt.js.map +1 -0
  58. package/dist/ui/report.js +214 -0
  59. package/dist/ui/report.js.map +1 -0
  60. package/dist/ui/tty.js +576 -0
  61. package/dist/ui/tty.js.map +1 -0
  62. package/dist/ui/wizard.js +293 -0
  63. package/dist/ui/wizard.js.map +1 -0
  64. package/dist/verify/remote.js +33 -0
  65. package/dist/verify/remote.js.map +1 -1
  66. package/package.json +13 -1
  67. package/platforms/azure/gate-template-github.yml +152 -0
  68. package/platforms/azure/gate-template.yml +59 -6
  69. package/scripts/check-pins.mjs +84 -1
  70. package/scripts/fetch-stars.mjs +92 -0
  71. package/scripts/lib/rules.d.mts +18 -0
  72. package/scripts/publish-local.mjs +183 -0
  73. package/standards/contexts/speckit.md +22 -0
  74. package/standards/contexts/tmf.md +25 -0
  75. package/standards/manifest.json +78 -7
  76. package/standards/stacks/angular.md +57 -0
  77. package/standards/stacks/dom.md +61 -0
  78. package/standards/stacks/svelte.md +45 -0
  79. package/standards/stacks/vue.md +54 -0
  80. package/templates/redline.yml +9 -9
  81. package/workflows/dashboard.yml +1 -1
  82. package/workflows/redline-collect.yml +1 -1
  83. package/workflows/redline-gate.yml +38 -7
  84. package/workflows/seed-canary.yml +2 -2
  85. package/workflows/weekly-digest.yml +1 -1
  86. package/scripts/measure-context.mjs +0 -101
@@ -1,15 +1,28 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { RedlineError } from "../core/errors.js";
4
- import { ADMIN_CAPABILITIES, HOSTS } from "../platforms/types.js";
4
+ import { ADMIN_CAPABILITIES, HOSTS, } from "../platforms/types.js";
5
5
  import { isRung } from "../enforce/ladder.js";
6
6
  export const CONFIG_FILE = '.redline.json';
7
7
  export const CAPABILITY_KEYS = ['gate', 'mergePolicy', 'labels'];
8
+ // What each menu key means when a repository has not recorded one. Lives here
9
+ // rather than in cli/commands/init.ts so the parser can fill an absent key
10
+ // without importing the command that writes it; init re-exports it as
11
+ // DEFAULT_MENU.
12
+ export const MENU_DEFAULTS = {
13
+ blockingGate: false,
14
+ adrForLargeDiffs: true,
15
+ accessibility: true,
16
+ speckit: true,
17
+ tmf: false,
18
+ sensitivePathReviewers: false,
19
+ };
8
20
  export const MENU_KEYS = [
9
21
  'blockingGate',
10
22
  'adrForLargeDiffs',
11
23
  'accessibility',
12
24
  'speckit',
25
+ 'tmf',
13
26
  'sensitivePathReviewers',
14
27
  ];
15
28
  // The names an operator types, and where each one is recorded. Review
@@ -34,6 +47,15 @@ export const MANDATORY_CAPABILITIES = {
34
47
  'displaced by them',
35
48
  };
36
49
  export const OPTIONAL_CAPABILITIES = Object.keys(CAPABILITY_NAMES);
50
+ /**
51
+ * The name an operator types, from the key the config stores.
52
+ *
53
+ * `mergePolicy` is an implementation detail of the JSON; `--skip merge-policy`
54
+ * is what the CLI accepts and what its output must therefore say back.
55
+ */
56
+ export function capabilityName(key) {
57
+ return Object.entries(CAPABILITY_NAMES).find(([, stored]) => stored === key)?.[0] ?? key;
58
+ }
37
59
  // The gate install is what creates Redline's labels — GitHub pre-declares the
38
60
  // gate's soft-fail labels there, and Azure creates pull request labels on use —
39
61
  // so a deselected gate takes the labels with it whatever the operator chose for
@@ -113,6 +135,17 @@ export function parseConfig(raw) {
113
135
  const menuObj = menuRaw;
114
136
  const menu = {};
115
137
  for (const key of MENU_KEYS) {
138
+ // A key this file has never heard of takes its default rather than failing
139
+ // the parse. Every menu key added since a repository was onboarded is
140
+ // absent from its `.redline.json`, and rejecting that made a CLI upgrade
141
+ // invalidate the config of every repository in the estate at once — every
142
+ // `redline verify` reporting "`.redline.json` is invalid" for a key nobody
143
+ // had the chance to write. A value that IS present and is not a boolean is
144
+ // still an error: that is a corrupt file, not an old one.
145
+ if (menuObj[key] === undefined) {
146
+ menu[key] = MENU_DEFAULTS[key];
147
+ continue;
148
+ }
116
149
  if (typeof menuObj[key] !== 'boolean')
117
150
  bad(`menu.${key} must be a boolean`);
118
151
  menu[key] = menuObj[key];
@@ -166,6 +199,11 @@ export function parseConfig(raw) {
166
199
  localRules: o['localRules'] === true,
167
200
  capabilities,
168
201
  commandFiles,
202
+ integrations: Array.isArray(o['integrations'])
203
+ ? o['integrations'].filter((id) => typeof id === 'string')
204
+ : [],
205
+ gateSource: o['gateSource'] === 'local' ? 'local' : 'org',
206
+ gateVersion: typeof o['gateVersion'] === 'string' ? o['gateVersion'] : '',
169
207
  };
170
208
  }
171
209
  export function readConfig(cwd) {
@@ -181,7 +219,30 @@ export function readConfig(cwd) {
181
219
  }
182
220
  return parseConfig(raw);
183
221
  }
222
+ // JSON has no comments, and this file is the only record of what a repository
223
+ // chose and why. Without something in the file itself, the first person to open
224
+ // it after onboarding finds eleven keys and no way to tell which are theirs to
225
+ // change from which are Redline's bookkeeping. `//` is the convention every
226
+ // JSON tool already ignores, and parseConfig ignores unknown keys, so it costs
227
+ // nothing to carry and is rewritten on every run.
228
+ const EXPLAINER = [
229
+ 'Written by `redline init`. Edit with the command, not by hand — the next run rewrites this file.',
230
+ 'menu.blockingGate — the gate blocks a merge rather than reporting. `redline init --blocking`.',
231
+ 'menu.adrForLargeDiffs — a diff over the threshold needs an ADR link in the pull request body.',
232
+ 'menu.accessibility — recorded for a later phase; nothing reads it yet.',
233
+ 'menu.speckit — renders the spec-driven development context into the standards artifacts.',
234
+ 'menu.tmf — renders the TM Forum context. `redline init --tmf` / `--no-tmf`.',
235
+ 'menu.sensitivePathReviewers — writes CODEOWNERS and requires code-owner review on those paths.',
236
+ 'capabilities.* — false means "this repository has its own"; Redline does not install or report it.',
237
+ 'rung — how hard the gate bites: observe, warn, block-blocker, block-high. Promotion needs evidence.',
238
+ 'pendingAdmin — capabilities an administrator still has to grant. Not a failure, a to-do list.',
239
+ 'gateSource — org: the gate lives in the organisation .github repo. local: vendored into this',
240
+ ' repository, which means a pull request can edit the gate judging it. `--gate-source`.',
241
+ 'gateVersion — the redlinegate version the vendored gate was written by. Empty when not vendored.',
242
+ 'commandFiles, standardsVersion, cliVersion, onboardedAt, lastRunAt — Redline\'s own bookkeeping.',
243
+ ];
184
244
  export function writeConfig(cwd, config) {
185
- writeFileSync(join(cwd, CONFIG_FILE), `${JSON.stringify(config, null, 2)}\n`);
245
+ const documented = { '//': EXPLAINER, ...config };
246
+ writeFileSync(join(cwd, CONFIG_FILE), `${JSON.stringify(documented, null, 2)}\n`);
186
247
  }
187
248
  //# sourceMappingURL=redline-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redline-json.js","sourceRoot":"","sources":["../../cli/config/redline-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAmC,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAa,MAAM,sBAAsB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AA8B3C,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AA0CjG,MAAM,CAAC,MAAM,SAAS,GAA6B;IACjD,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,SAAS;IACT,wBAAwB;CACzB,CAAC;AAEF,sEAAsE;AACtE,+EAA+E;AAC/E,2DAA2D;AAC3D,MAAM,gBAAgB,GAAmE;IACvF,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,aAAa;IAC7B,MAAM,EAAE,QAAQ;IAChB,kBAAkB,EAAE,iBAAiB;CACtC,CAAC;AAEF,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,gBAAgB,EACd,4FAA4F;QAC5F,wFAAwF;QACxF,mBAAmB;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEnE,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,yBAAyB;AACzB,MAAM,UAAU,mBAAmB,CAAC,YAAkC;IACpE,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oEAAoE;AACpE,MAAM,UAAU,sBAAsB,CACpC,IAAoB,EACpB,YAAkC;IAElC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,iBAAiB;YAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACnE,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACvF,OAAO,GAAG,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,+EAA+E;AAC/E,+EAA+E;AAC/E,YAAY;AACZ,MAAM,UAAU,mBAAmB,CAAC,IAAc,EAAE,IAAc;IAChE,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,+DAA+D,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI;QACxB,CAAC,IAAI,EAAE,KAAK,CAAC;QACb,CAAC,IAAI,EAAE,IAAI,CAAC;KACJ,EAAE,CAAC;QACX,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,EAAE;oBAAE,SAAS,CAAC,4BAA4B;gBAC9C,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,4BAA4B,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,uBAAuB,IAAI,aAAa,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,KAAK,iBAAiB;gBAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;;gBACjE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,IAAY,EAAS,EAAE;IAClC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,WAAW,gBAAgB,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7F,MAAM,CAAC,GAAG,GAA8B,CAAC;IAEzC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE,CAClC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,6BAA6B,CAAC,CAAC;IAE9G,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAE,KAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjG,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,OAAkC,CAAC;IACnD,MAAM,IAAI,GAAG,EAAoB,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAY,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,OAAoB,EAAE,CAAC;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAE,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5F,GAAG,CAAC,gDAAgD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,wEAAwE;IACxE,2CAA2C;IAC3C,MAAM,aAAa,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IACxC,MAAM,aAAa,GACjB,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1F,CAAC,CAAE,aAAyC;QAC5C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,YAAY,GAAG,EAA0B,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,eAAe;QAAE,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;IAEpF,MAAM,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IACrC,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACxF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAqC,CAAC,EAAE,CAAC;YAC/E,IAAI,OAAO,EAAE,KAAK,QAAQ;gBAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,kDAAkD;IAClD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAS,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzD,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAEjG,OAAO;QACL,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,CAAC;QACzC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC;QAC7B,IAAI,EAAE,IAAY;QAClB,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;QACvB,OAAO,EAAE,OAAmB;QAC5B,IAAI;QACJ,YAAY,EAAE,OAA4B;QAC1C,WAAW;QACX,SAAS;QACT,IAAI;QACJ,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI;QACpC,YAAY;QACZ,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,WAAW,oBAAoB,EAAE,mCAAmC,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,MAAqB;IAC5D,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"redline-json.js","sourceRoot":"","sources":["../../cli/config/redline-json.ts"],"names":[],"mappings":"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"}
package/dist/core/git.js CHANGED
@@ -1,6 +1,42 @@
1
1
  import { execFileSync } from 'node:child_process';
2
2
  import { RedlineError } from "./errors.js";
3
- export const execGit = (args, cwd) => execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
3
+ // Every git call here runs with stdin ignored and stderr captured, so anything
4
+ // git decides to ASK rather than answer has nowhere to print the question and
5
+ // nowhere to read the reply — it simply waits. A real onboarding sat on
6
+ // "committing and opening the pull request" forever because `git push` reached
7
+ // an ssh that wanted a passphrase, and the spinner kept turning over a process
8
+ // that was never going to finish.
9
+ //
10
+ // So the prompts are switched off rather than hidden: git fails immediately and
11
+ // says why, and `push()` below turns that into an error naming the branch the
12
+ // work is already committed on. An operator's own GIT_SSH_COMMAND wins — a
13
+ // repository reached through a custom ssh wrapper is a deliberate arrangement,
14
+ // and overriding it would break a working setup to fix a hanging one.
15
+ const NON_INTERACTIVE = {
16
+ // Suppresses the username/password prompt on an HTTPS remote.
17
+ GIT_TERMINAL_PROMPT: '0',
18
+ // BatchMode stops ssh asking for a passphrase or an unknown host key;
19
+ // ConnectTimeout stops a silently dropped connection replacing the prompt
20
+ // with an equally invisible wait.
21
+ GIT_SSH_COMMAND: 'ssh -o BatchMode=yes -o ConnectTimeout=10',
22
+ };
23
+ /**
24
+ * The environment git runs in: prompts off, unless the operator has already
25
+ * said otherwise.
26
+ *
27
+ * Exported to be asserted on. Which side of the merge wins is the whole
28
+ * decision — spread the defaults last and a custom ssh wrapper is silently
29
+ * replaced, which breaks a working setup in order to fix a hanging one.
30
+ */
31
+ export function gitEnv(from = process.env) {
32
+ return { ...NON_INTERACTIVE, ...from };
33
+ }
34
+ export const execGit = (args, cwd) => execFileSync('git', args, {
35
+ cwd,
36
+ encoding: 'utf8',
37
+ stdio: ['ignore', 'pipe', 'pipe'],
38
+ env: gitEnv(),
39
+ }).trim();
4
40
  // git is a real system boundary: a rejected push, a protected branch, an
5
41
  // expired credential and a failing pre-commit hook are all routine, and
6
42
  // execFileSync reports them as a raw "Command failed: git push …" that the
@@ -111,7 +147,16 @@ export function createGit(cwd, run = execGit) {
111
147
  stagePaths(paths) {
112
148
  if (paths.length === 0)
113
149
  return;
114
- g('add', '--', ...paths);
150
+ try {
151
+ g('add', '--', ...paths);
152
+ }
153
+ catch (error) {
154
+ // Reached when a caller listed a path nothing actually wrote, which
155
+ // git reports as `fatal: pathspec ... did not match any files`. The
156
+ // raw execFileSync message leaks the whole argv, so it is replaced
157
+ // with the failure and where the run left the operator.
158
+ throw new RedlineError('host', `could not stage the Redline changes: ${gitFailure(error)}`, 'nothing was committed and no pull request was opened — the path above was listed but never written, so re-run and report it if it recurs');
159
+ }
115
160
  },
116
161
  hasStagedChanges() {
117
162
  try {
@@ -144,7 +189,9 @@ export function createGit(cwd, run = execGit) {
144
189
  if (NON_FAST_FORWARD.test(stderrText(error))) {
145
190
  throw new RedlineError('failed', `origin already has a "${branch}" branch this push cannot fast-forward: ${gitFailure(error)}`, `a previous run left it behind — delete it (git push origin --delete ${branch}) or merge its open pull request, then re-run`);
146
191
  }
147
- throw new RedlineError('permission', `could not push "${branch}" to origin: ${gitFailure(error)}`, `the Redline changes are committed locally on "${branch}" — push that branch and open the pull request yourself, or get push access and re-run`);
192
+ throw new RedlineError('permission', `could not push "${branch}" to origin: ${gitFailure(error)}`, `the Redline changes are committed locally on "${branch}" — push that branch and open the pull request yourself, or get push access and re-run. ` +
193
+ 'Redline runs ssh in batch mode so a credential prompt cannot hang the run: if the error above is about a key or a host key, ' +
194
+ 'add the key to your agent (ssh-add) or accept the host once by hand, then re-run');
148
195
  }
149
196
  },
150
197
  };
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../cli/core/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../cli/core/git.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,10 @@ export function parseVersion(raw) {
12
12
  }
13
13
  const pkg = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
14
14
  export const CLI_VERSION = parseVersion(pkg);
15
+ // What package.json carries between releases: semantic-release stamps the real
16
+ // version at publish time, so a CLI running from a checkout reports this. Any
17
+ // artifact that pins the CLI has to recognise it, or a development run writes
18
+ // `redlinegate@0.0.0-development` into a real repository's gate — a pin to a
19
+ // version npm has never heard of, which fails every pull request it reaches.
20
+ export const UNPUBLISHED_VERSION = '0.0.0-development';
15
21
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../cli/core/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAI,GAA+B,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtG,MAAM,CAAC,MAAM,WAAW,GAAW,YAAY,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../cli/core/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAI,GAA+B,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,kDAAkD,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtG,MAAM,CAAC,MAAM,WAAW,GAAW,YAAY,CAAC,GAAG,CAAC,CAAC;AAErD,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ export const TOOL_PROBES = [
4
+ {
5
+ id: 'sonarqube',
6
+ label: 'SonarQube',
7
+ paths: ['sonar-project.properties', 'sonar-project-enterprise.properties'],
8
+ inCi: ['sonarqube', 'sonarcloud', 'SonarQubePrepare', 'sonar-scanner'],
9
+ // SonarQube is a static analyser: it overlaps Redline's deterministic
10
+ // policy tier, not its secret or dependency scanning.
11
+ standsDown: 'policy',
12
+ },
13
+ {
14
+ id: 'mend',
15
+ label: 'Mend',
16
+ paths: ['.whitesource', '.mend', 'mend.config.json'],
17
+ inCi: ['mend', 'whitesource'],
18
+ standsDown: 'dependencies',
19
+ },
20
+ {
21
+ id: 'snyk',
22
+ label: 'Snyk',
23
+ paths: ['.snyk'],
24
+ inCi: ['snyk'],
25
+ standsDown: 'dependencies',
26
+ },
27
+ {
28
+ id: 'dependabot',
29
+ label: 'Dependabot',
30
+ paths: ['.github/dependabot.yml', '.github/dependabot.yaml'],
31
+ standsDown: 'dependencies',
32
+ },
33
+ {
34
+ id: 'renovate',
35
+ label: 'Renovate',
36
+ paths: ['renovate.json', '.renovaterc', '.renovaterc.json', '.github/renovate.json'],
37
+ inCi: ['renovate'],
38
+ // Renovate raises upgrade pull requests; it does not fail a build on a
39
+ // vulnerable dependency entering one. It is reported so the operator knows
40
+ // Redline saw it, and stands nothing down.
41
+ standsDown: null,
42
+ },
43
+ {
44
+ id: 'gitleaks',
45
+ label: 'gitleaks',
46
+ paths: ['.gitleaks.toml', '.gitleaksignore'],
47
+ inCi: ['gitleaks'],
48
+ standsDown: 'secrets',
49
+ },
50
+ {
51
+ id: 'trufflehog',
52
+ label: 'trufflehog',
53
+ inCi: ['trufflehog', 'trufflesecurity'],
54
+ standsDown: 'secrets',
55
+ },
56
+ {
57
+ id: 'codeql',
58
+ label: 'CodeQL',
59
+ inCi: ['github/codeql-action', 'codeql'],
60
+ standsDown: 'policy',
61
+ },
62
+ ];
63
+ // Where CI definitions live. Azure Pipelines has no fixed location — VOXI keeps
64
+ // its stages under `cicd/` and its pull request template under `.vsts/` — so
65
+ // this is a list of the conventional homes rather than a spec. A repository
66
+ // that keeps its pipelines somewhere else is not detected, reports nothing, and
67
+ // gets the full install: the safe direction, because an undetected tool means
68
+ // Redline offers a check the repository may already have, which the operator
69
+ // can decline, rather than skipping one it does not.
70
+ const CI_DIRS = ['.github/workflows', 'cicd', '.azuredevops', '.vsts', '.pipelines', 'ci'];
71
+ const CI_ROOT_FILES = ['azure-pipelines.yml', 'azure-pipelines.yaml', '.gitlab-ci.yml'];
72
+ // A pipeline definition is YAML and small. The cap is here so that a repository
73
+ // with a generated or vendored file under one of these directories cannot turn
74
+ // onboarding into a full-tree read.
75
+ const MAX_CI_BYTES = 256 * 1024;
76
+ function readCiText(cwd) {
77
+ const parts = [];
78
+ const readFile = (abs) => {
79
+ try {
80
+ if (statSync(abs).size > MAX_CI_BYTES)
81
+ return;
82
+ parts.push(readFileSync(abs, 'utf8').toLowerCase());
83
+ }
84
+ catch {
85
+ // Unreadable is not a finding about the repository: a probe that cannot
86
+ // read a file reports nothing rather than claiming the tool is absent.
87
+ }
88
+ };
89
+ for (const dir of CI_DIRS) {
90
+ const abs = join(cwd, dir);
91
+ if (!existsSync(abs))
92
+ continue;
93
+ let entries;
94
+ try {
95
+ entries = readdirSync(abs);
96
+ }
97
+ catch {
98
+ continue;
99
+ }
100
+ for (const name of entries) {
101
+ if (!/\.ya?ml$/i.test(name))
102
+ continue;
103
+ readFile(join(abs, name));
104
+ }
105
+ }
106
+ for (const name of CI_ROOT_FILES) {
107
+ const abs = join(cwd, name);
108
+ if (existsSync(abs))
109
+ readFile(abs);
110
+ }
111
+ return parts.join('\n');
112
+ }
113
+ /**
114
+ * What the repository already runs, from the checkout alone.
115
+ *
116
+ * Deliberately no host calls: this decides what `redline init --dry-run` offers,
117
+ * and dry-run contacts no host and needs no credential. A survey that needed a
118
+ * token would make the safest way to preview onboarding the one that requires
119
+ * the most trust.
120
+ */
121
+ export function surveyRepo(cwd) {
122
+ const ci = readCiText(cwd);
123
+ const tools = [];
124
+ for (const probe of TOOL_PROBES) {
125
+ let evidence = null;
126
+ for (const path of probe.paths ?? []) {
127
+ if (existsSync(join(cwd, path))) {
128
+ evidence = path;
129
+ break;
130
+ }
131
+ }
132
+ if (evidence === null && ci !== '') {
133
+ for (const needle of probe.inCi ?? []) {
134
+ if (ci.includes(needle.toLowerCase())) {
135
+ evidence = `"${needle}" in this repository's CI definitions`;
136
+ break;
137
+ }
138
+ }
139
+ }
140
+ if (evidence === null)
141
+ continue;
142
+ tools.push({ id: probe.id, label: probe.label, evidence, standsDown: probe.standsDown });
143
+ }
144
+ const standDown = [
145
+ ...new Set(tools
146
+ .map((tool) => tool.standsDown)
147
+ .filter((job) => job !== null)),
148
+ ];
149
+ return { tools, standDown };
150
+ }
151
+ //# sourceMappingURL=existing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing.js","sourceRoot":"","sources":["../../cli/detect/existing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ // Dependabot's ecosystem ids, keyed by the file that proves the ecosystem is
4
+ // used here. A manifest is the only evidence taken: guessing an ecosystem from a
5
+ // file extension produces a config that opens pull requests against nothing.
6
+ const ECOSYSTEMS = [
7
+ ['package.json', 'npm', '/'],
8
+ ['requirements.txt', 'pip', '/'],
9
+ ['pyproject.toml', 'pip', '/'],
10
+ ['go.mod', 'gomod', '/'],
11
+ ['pom.xml', 'maven', '/'],
12
+ ['build.gradle', 'gradle', '/'],
13
+ ['build.gradle.kts', 'gradle', '/'],
14
+ ['Gemfile', 'bundler', '/'],
15
+ ['Cargo.toml', 'cargo', '/'],
16
+ ['composer.json', 'composer', '/'],
17
+ ['Dockerfile', 'docker', '/'],
18
+ ];
19
+ function ecosystemsIn(cwd) {
20
+ const found = new Map();
21
+ for (const [marker, ecosystem, directory] of ECOSYSTEMS) {
22
+ if (existsSync(join(cwd, marker)))
23
+ found.set(ecosystem, directory);
24
+ }
25
+ // Always present on a repository Redline gates: it installs the workflow that
26
+ // the gate runs on, and an unpatched action is as much a dependency as a
27
+ // package is.
28
+ if (existsSync(join(cwd, '.github', 'workflows')))
29
+ found.set('github-actions', '/');
30
+ return [...found].map(([ecosystem, directory]) => ({ ecosystem, directory }));
31
+ }
32
+ // CodeQL's language ids, from the stacks the chosen profile renders. Derived
33
+ // from the profile rather than from a file walk so it matches what the standards
34
+ // are actually reviewing.
35
+ const CODEQL_LANGUAGES = {
36
+ javascript: 'javascript-typescript',
37
+ react: 'javascript-typescript',
38
+ 'react-native': 'javascript-typescript',
39
+ angular: 'javascript-typescript',
40
+ vue: 'javascript-typescript',
41
+ svelte: 'javascript-typescript',
42
+ dom: 'javascript-typescript',
43
+ nodejs: 'javascript-typescript',
44
+ python: 'python',
45
+ go: 'go',
46
+ java: 'java-kotlin',
47
+ kotlin: 'java-kotlin',
48
+ csharp: 'csharp',
49
+ swift: 'swift',
50
+ };
51
+ export const INSTALLABLE = [
52
+ {
53
+ id: 'dependabot',
54
+ label: 'Dependabot version updates',
55
+ hint: 'writes .github/dependabot.yml — weekly, minor and patch grouped into one PR',
56
+ hosts: ['github'],
57
+ plan: (cwd) => {
58
+ const ecosystems = ecosystemsIn(cwd);
59
+ if (ecosystems.length === 0)
60
+ return null;
61
+ const blocks = ecosystems
62
+ .map(({ ecosystem, directory }) => [
63
+ ` - package-ecosystem: "${ecosystem}"`,
64
+ ` directory: "${directory}"`,
65
+ ' schedule:',
66
+ ' interval: "weekly"',
67
+ ' open-pull-requests-limit: 5',
68
+ ' groups:',
69
+ // One pull request a week for the routine bumps. Ungrouped, a repo
70
+ // with a real dependency tree gets a dozen, which is how a team
71
+ // learns to close Dependabot pull requests without reading them.
72
+ ' minor-and-patch:',
73
+ ' update-types:',
74
+ ' - "minor"',
75
+ ' - "patch"',
76
+ ].join('\n'))
77
+ .join('\n\n');
78
+ return {
79
+ path: '.github/dependabot.yml',
80
+ contents: [
81
+ '# Managed by Redline. Security alerts are enabled separately, by the',
82
+ '# security floor — this file is the version updates the floor does not cover.',
83
+ 'version: 2',
84
+ 'updates:',
85
+ blocks,
86
+ '',
87
+ ].join('\n'),
88
+ };
89
+ },
90
+ },
91
+ {
92
+ id: 'renovate',
93
+ label: 'Renovate',
94
+ hint: 'writes renovate.json — needs the Renovate app installed on the organisation',
95
+ hosts: ['github'],
96
+ plan: () => ({
97
+ path: 'renovate.json',
98
+ contents: JSON.stringify({
99
+ $schema: 'https://docs.renovatebot.com/renovate-schema.json',
100
+ extends: ['config:recommended'],
101
+ schedule: ['before 9am on monday'],
102
+ packageRules: [
103
+ {
104
+ matchUpdateTypes: ['minor', 'patch'],
105
+ groupName: 'minor and patch',
106
+ },
107
+ ],
108
+ }, null, 2) + '\n',
109
+ }),
110
+ },
111
+ {
112
+ id: 'codeql',
113
+ label: 'CodeQL',
114
+ hint: 'writes .github/workflows/codeql.yml — needs Advanced Security on a private repo',
115
+ hosts: ['github'],
116
+ plan: (_cwd, stacks) => {
117
+ const languages = [
118
+ ...new Set(stacks.flatMap((stack) => CODEQL_LANGUAGES[stack] ?? [])),
119
+ ];
120
+ if (languages.length === 0)
121
+ return null;
122
+ return {
123
+ path: '.github/workflows/codeql.yml',
124
+ contents: [
125
+ '# Managed by Redline.',
126
+ 'name: CodeQL',
127
+ '',
128
+ 'on:',
129
+ ' push:',
130
+ ' branches: [main, master]',
131
+ ' pull_request:',
132
+ ' schedule:',
133
+ " - cron: '0 3 * * 1'",
134
+ '',
135
+ 'permissions:',
136
+ ' contents: read',
137
+ ' security-events: write',
138
+ '',
139
+ 'jobs:',
140
+ ' analyze:',
141
+ ' runs-on: ubuntu-latest',
142
+ ' strategy:',
143
+ ' fail-fast: false',
144
+ ' matrix:',
145
+ ` language: [${languages.join(', ')}]`,
146
+ ' steps:',
147
+ // Pinned to the major tag, which is what GitHub's own documented
148
+ // workflow uses: a floating v3 takes security fixes to the scanner
149
+ // without a pull request, and a SHA pin here would go stale silently
150
+ // in every onboarded repository at once.
151
+ ' - uses: actions/checkout@v4',
152
+ ' - uses: github/codeql-action/init@v3',
153
+ ' with:',
154
+ ' languages: ${{ matrix.language }}',
155
+ ' - uses: github/codeql-action/autobuild@v3',
156
+ ' - uses: github/codeql-action/analyze@v3',
157
+ '',
158
+ ].join('\n'),
159
+ };
160
+ },
161
+ },
162
+ ];
163
+ /** What this host and this checkout can actually be offered. */
164
+ export function offerable(cwd, host, stacks) {
165
+ return INSTALLABLE.flatMap((integration) => {
166
+ if (!integration.hosts.includes(host))
167
+ return [];
168
+ const file = integration.plan(cwd, stacks);
169
+ return file === null ? [] : [{ integration, file }];
170
+ });
171
+ }
172
+ /**
173
+ * Write the chosen files, skipping any that already exist.
174
+ *
175
+ * Never overwrites: a repository with its own `renovate.json` has a considered
176
+ * one, and replacing it with a generated default is the kind of "help" that
177
+ * loses a team a week of tuning. The caller reports what was skipped.
178
+ */
179
+ export function applySetup(cwd, chosen, dryRun) {
180
+ const written = [];
181
+ const skipped = [];
182
+ for (const { file } of chosen) {
183
+ const absolute = join(cwd, file.path);
184
+ if (existsSync(absolute)) {
185
+ // Identical content is not a conflict, it is a no-op — a re-run must not
186
+ // report work it is not doing.
187
+ const current = readFileSync(absolute, 'utf8');
188
+ if (current !== file.contents)
189
+ skipped.push(file.path);
190
+ continue;
191
+ }
192
+ if (!dryRun) {
193
+ mkdirSync(dirname(absolute), { recursive: true });
194
+ writeFileSync(absolute, file.contents, 'utf8');
195
+ }
196
+ written.push(file.path);
197
+ }
198
+ return { written, skipped };
199
+ }
200
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../cli/detect/setup.ts"],"names":[],"mappings":"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"}