@biffo/cli 0.228.9 → 0.229.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.
Files changed (2) hide show
  1. package/dist/index.js +34 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2476,6 +2476,21 @@ function stampCarriedFrom(content, templateFile) {
2476
2476
  return content.replace(REVISION_RE, (m) => `${CARRIED_FROM_MARKER} ${templateFile}
2477
2477
  ${m}`);
2478
2478
  }
2479
+ var BODY_CHANGE_MARKER = "# biffo:body-change:";
2480
+ var BODY_CHANGE_LINE_RE = /^[ \t]*# biffo:body-change:[ \t]*(.*)$/m;
2481
+ var BODY_CHANGE_VALUE_RE = /^(replay-safe|outcome-changing)\b[ \t]*[-—:]*[ \t]*(.+?)[ \t]*$/;
2482
+ function parseBodyChangeDeclaration(content) {
2483
+ const line = BODY_CHANGE_LINE_RE.exec(content);
2484
+ if (!line) return null;
2485
+ const rest = (line[1] ?? "").trim();
2486
+ const value = BODY_CHANGE_VALUE_RE.exec(rest);
2487
+ if (!value) {
2488
+ throw new Error(
2489
+ `Malformed ${BODY_CHANGE_MARKER} marker: expected "${BODY_CHANGE_MARKER} replay-safe \u2014 <reason>" or "${BODY_CHANGE_MARKER} outcome-changing \u2014 <reason>", got "${rest}".`
2490
+ );
2491
+ }
2492
+ return { classification: value[1], reason: value[2] };
2493
+ }
2479
2494
  var DOCSTRING_OPEN_RE = /^[rRuU]?("""|''')/;
2480
2495
  var DEF_OR_CLASS_RE = /^(async\s+def|def|class)\b/;
2481
2496
  var HEADER_END_RE = /:\s*(#.*)?$/;
@@ -2564,10 +2579,12 @@ function planMigrationCarry(options) {
2564
2579
  recognised.push({ file: m.file, instanceFile: already.instance.file, how: already.how });
2565
2580
  }
2566
2581
  if (migrationBodyHash(m.content) !== migrationBodyHash(already.instance.content)) {
2582
+ const declared = parseBodyChangeDeclaration(m.content);
2567
2583
  divergedBodies.push({
2568
2584
  file: m.file,
2569
2585
  instanceFile: already.instance.file,
2570
- how: already.how
2586
+ how: already.how,
2587
+ ...declared && { declared }
2571
2588
  });
2572
2589
  }
2573
2590
  continue;
@@ -3485,10 +3502,25 @@ function readCarriedPrs(templateRepo, from, to) {
3485
3502
  return [];
3486
3503
  }
3487
3504
  }
3505
+ var COMMIT_BODY_MAX_LINE = 100;
3488
3506
  function carriedPrsSection(carriedPrs) {
3489
3507
  if (carriedPrs.length === 0) return [];
3490
3508
  const unique = [...new Set(carriedPrs)].sort((a, b) => a - b);
3491
- return ["", `<!-- ${CARRIED_PRS_MARKER}${unique.join(",")} -->`];
3509
+ const single = `<!-- ${CARRIED_PRS_MARKER}${unique.join(",")} -->`;
3510
+ if (single.length <= COMMIT_BODY_MAX_LINE) return ["", single];
3511
+ const lines = [`<!-- ${CARRIED_PRS_MARKER}`];
3512
+ let current = "";
3513
+ for (const n of unique) {
3514
+ const token = `${n},`;
3515
+ if (current.length + token.length > COMMIT_BODY_MAX_LINE) {
3516
+ lines.push(current);
3517
+ current = "";
3518
+ }
3519
+ current += token;
3520
+ }
3521
+ lines.push(current.replace(/,$/, ""));
3522
+ lines.push("-->");
3523
+ return ["", ...lines];
3492
3524
  }
3493
3525
  function buildCommitMessage(from, to, carriedPrs) {
3494
3526
  const subject = `chore(core): upgrade template core ${from} -> ${to}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biffo/cli",
3
- "version": "0.228.9",
3
+ "version": "0.229.0",
4
4
  "description": "Biffo project scaffolding CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",