@biffo/cli 0.313.0 → 0.313.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.
Files changed (2) hide show
  1. package/dist/index.js +49 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -719,7 +719,8 @@ function checkCoreOwnership({
719
719
  branch = "",
720
720
  commitMessage = "",
721
721
  warnOnly = [],
722
- templateShippedPaths = null
722
+ templateShippedPaths = null,
723
+ upgradeCommitFiles = null
723
724
  }) {
724
725
  const empty = {
725
726
  blocked: [],
@@ -729,8 +730,13 @@ function checkCoreOwnership({
729
730
  knownOrphans: []
730
731
  };
731
732
  if (!isInstance) return { skipped: "template", ...empty };
732
- if (branch.startsWith(UPGRADE_BRANCH_PREFIX)) return { skipped: "upgrade-branch", ...empty };
733
- const manifestTemplateOwned = changedFiles.filter((f) => isTemplateOwned(f, manifest));
733
+ let effectiveChangedFiles = changedFiles;
734
+ if (branch.startsWith(UPGRADE_BRANCH_PREFIX)) {
735
+ const exempt = new Set(upgradeCommitFiles ?? []);
736
+ effectiveChangedFiles = changedFiles.filter((f) => !exempt.has(f));
737
+ if (effectiveChangedFiles.length === 0) return { skipped: "upgrade-branch", ...empty };
738
+ }
739
+ const manifestTemplateOwned = effectiveChangedFiles.filter((f) => isTemplateOwned(f, manifest));
734
740
  const knownOrphans = [];
735
741
  const templateOwned = [];
736
742
  for (const path of manifestTemplateOwned) {
@@ -12722,7 +12728,37 @@ async function fetchTemplateShippedPaths(repoRoot, runner = defaultRunner) {
12722
12728
  return paths.length > 0 ? new Set(paths) : null;
12723
12729
  }
12724
12730
 
12731
+ // src/lib/upgrade-commit-files.ts
12732
+ var defaultRunner2 = async (args, cwd) => {
12733
+ const result = await execa("git", args, { cwd, reject: false, timeout: 15e3 });
12734
+ return { stdout: String(result.stdout ?? ""), exitCode: result.exitCode ?? null };
12735
+ };
12736
+ var splitLines = (stdout) => stdout.split("\n").map((line) => line.trim()).filter(Boolean);
12737
+ async function resolveUpgradeCommitFiles(repoRoot, base, opts = {}, runner = defaultRunner2) {
12738
+ let rev;
12739
+ try {
12740
+ rev = await runner(["rev-list", "--reverse", `${base}..HEAD`], repoRoot);
12741
+ } catch {
12742
+ return null;
12743
+ }
12744
+ if (rev.exitCode !== 0) return null;
12745
+ const commits = splitLines(rev.stdout);
12746
+ if (commits.length === 0) {
12747
+ return opts.stagedFallbackFiles ?? null;
12748
+ }
12749
+ const first = commits[0];
12750
+ let diff;
12751
+ try {
12752
+ diff = await runner(["diff-tree", "--no-commit-id", "--name-only", "-r", first], repoRoot);
12753
+ } catch {
12754
+ return null;
12755
+ }
12756
+ if (diff.exitCode !== 0) return null;
12757
+ return splitLines(diff.stdout);
12758
+ }
12759
+
12725
12760
  // src/scripts/check-core-ownership.ts
12761
+ var LOCAL_UPGRADE_BASE = "origin/dev";
12726
12762
  var BOLD = "\x1B[1m";
12727
12763
  var DIM = "\x1B[2m";
12728
12764
  var RED = "\x1B[31m";
@@ -12748,6 +12784,7 @@ async function runOwnershipCheck(argv) {
12748
12784
  let changedFiles;
12749
12785
  let deletedFiles = [];
12750
12786
  let commitMessage = "";
12787
+ let ciBase = null;
12751
12788
  if (staged) {
12752
12789
  const { stdout } = await execa("git", ["diff", "--cached", "--name-status"], { cwd: root });
12753
12790
  ({ changed: changedFiles, deleted: deletedFiles } = parseNameStatus(stdout));
@@ -12762,11 +12799,12 @@ async function runOwnershipCheck(argv) {
12762
12799
  process.exit(2);
12763
12800
  }
12764
12801
  await execa("git", ["fetch", "--quiet", "origin", base], { cwd: root, reject: false });
12765
- const { stdout } = await execa("git", ["diff", "--name-status", `origin/${base}...HEAD`], {
12802
+ ciBase = `origin/${base}`;
12803
+ const { stdout } = await execa("git", ["diff", "--name-status", `${ciBase}...HEAD`], {
12766
12804
  cwd: root
12767
12805
  });
12768
12806
  ({ changed: changedFiles, deleted: deletedFiles } = parseNameStatus(stdout));
12769
- const { stdout: log2 } = await execa("git", ["log", "--format=%B", `origin/${base}..HEAD`], {
12807
+ const { stdout: log2 } = await execa("git", ["log", "--format=%B", `${ciBase}..HEAD`], {
12770
12808
  cwd: root,
12771
12809
  reject: false
12772
12810
  });
@@ -12777,6 +12815,11 @@ async function runOwnershipCheck(argv) {
12777
12815
  reject: false
12778
12816
  });
12779
12817
  const branch = resolveBranch(process.env, gitBranch);
12818
+ const upgradeCommitFiles = branch.startsWith(UPGRADE_BRANCH_PREFIX) ? await resolveUpgradeCommitFiles(
12819
+ root,
12820
+ ciBase ?? LOCAL_UPGRADE_BASE,
12821
+ staged ? { stagedFallbackFiles: changedFiles } : {}
12822
+ ) : null;
12780
12823
  const templateShippedPaths = staged ? null : await fetchTemplateShippedPaths(root);
12781
12824
  if (!staged && templateShippedPaths === null) {
12782
12825
  console.error(
@@ -12790,6 +12833,7 @@ async function runOwnershipCheck(argv) {
12790
12833
  branch,
12791
12834
  commitMessage,
12792
12835
  warnOnly: readDivergenceConfig(root).warnOnly,
12836
+ upgradeCommitFiles,
12793
12837
  templateShippedPaths
12794
12838
  });
12795
12839
  if (result.knownOrphans.length > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biffo/cli",
3
- "version": "0.313.0",
3
+ "version": "0.313.1",
4
4
  "description": "Biffo project scaffolding CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",