@ucdjs/release-scripts 0.1.0-beta.45 → 0.1.0-beta.46
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/dist/index.d.mts +4 -0
- package/dist/index.mjs +37 -18
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -90,6 +90,10 @@ interface PackageRelease {
|
|
|
90
90
|
* Whether this package has direct changes (vs being updated due to dependency changes)
|
|
91
91
|
*/
|
|
92
92
|
hasDirectChanges: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Why/how this release entry exists.
|
|
95
|
+
*/
|
|
96
|
+
changeKind: "auto" | "manual" | "as-is" | "dependent";
|
|
93
97
|
}
|
|
94
98
|
//#endregion
|
|
95
99
|
//#region src/types.d.ts
|
package/dist/index.mjs
CHANGED
|
@@ -1059,7 +1059,10 @@ async function selectPackagePrompt(packages) {
|
|
|
1059
1059
|
if (!response.selectedPackages || response.selectedPackages.length === 0) return [];
|
|
1060
1060
|
return response.selectedPackages;
|
|
1061
1061
|
}
|
|
1062
|
-
async function selectVersionPrompt(workspaceRoot, pkg, currentVersion, suggestedVersion) {
|
|
1062
|
+
async function selectVersionPrompt(workspaceRoot, pkg, currentVersion, suggestedVersion, options) {
|
|
1063
|
+
const defaultChoice = options?.defaultChoice ?? "auto";
|
|
1064
|
+
const suggestedSuffix = options?.suggestedHint ? farver.dim(` (${options.suggestedHint})`) : "";
|
|
1065
|
+
const initial = defaultChoice === "skip" ? 0 : defaultChoice === "suggested" ? 4 : defaultChoice === "as-is" ? 5 : suggestedVersion === currentVersion ? 0 : 4;
|
|
1063
1066
|
const answers = await prompts([{
|
|
1064
1067
|
type: "autocomplete",
|
|
1065
1068
|
name: "version",
|
|
@@ -1083,7 +1086,7 @@ async function selectVersionPrompt(workspaceRoot, pkg, currentVersion, suggested
|
|
|
1083
1086
|
},
|
|
1084
1087
|
{
|
|
1085
1088
|
value: "suggested",
|
|
1086
|
-
title: `suggested ${farver.bold(suggestedVersion)}`
|
|
1089
|
+
title: `suggested ${farver.bold(suggestedVersion)}${suggestedSuffix}`
|
|
1087
1090
|
},
|
|
1088
1091
|
{
|
|
1089
1092
|
value: "as-is",
|
|
@@ -1094,7 +1097,7 @@ async function selectVersionPrompt(workspaceRoot, pkg, currentVersion, suggested
|
|
|
1094
1097
|
title: "custom"
|
|
1095
1098
|
}
|
|
1096
1099
|
],
|
|
1097
|
-
initial
|
|
1100
|
+
initial
|
|
1098
1101
|
}, {
|
|
1099
1102
|
type: (prev) => prev === "custom" ? "text" : null,
|
|
1100
1103
|
name: "custom",
|
|
@@ -1415,7 +1418,8 @@ function createVersionUpdate(pkg, bump, hasDirectChanges) {
|
|
|
1415
1418
|
currentVersion: pkg.version,
|
|
1416
1419
|
newVersion,
|
|
1417
1420
|
bumpType: bump,
|
|
1418
|
-
hasDirectChanges
|
|
1421
|
+
hasDirectChanges,
|
|
1422
|
+
changeKind: "dependent"
|
|
1419
1423
|
};
|
|
1420
1424
|
}
|
|
1421
1425
|
function determineBumpType(commit) {
|
|
@@ -1637,40 +1641,50 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
|
|
|
1637
1641
|
logger.section(`📝 Commits for ${farver.cyan(pkg.name)}`);
|
|
1638
1642
|
formatCommitsForDisplay(allCommitsForPackage).split("\n").forEach((line) => logger.item(line));
|
|
1639
1643
|
logger.emptyLine();
|
|
1640
|
-
const selectedVersion = await selectVersionPrompt(workspaceRoot, pkg, pkg.version, newVersion
|
|
1644
|
+
const selectedVersion = await selectVersionPrompt(workspaceRoot, pkg, pkg.version, newVersion, {
|
|
1645
|
+
defaultChoice: override ? "suggested" : "auto",
|
|
1646
|
+
suggestedHint: override ? "from override" : void 0
|
|
1647
|
+
});
|
|
1641
1648
|
if (selectedVersion === null) continue;
|
|
1642
1649
|
const userBump = calculateBumpType(pkg.version, selectedVersion);
|
|
1643
1650
|
finalBumpType = userBump;
|
|
1644
1651
|
if (selectedVersion === pkg.version) {
|
|
1645
1652
|
excludedPackages.add(pkgName);
|
|
1646
1653
|
if (determinedBump !== "none") {
|
|
1647
|
-
|
|
1654
|
+
const nextOverride = {
|
|
1648
1655
|
type: "none",
|
|
1649
1656
|
version: pkg.version
|
|
1650
1657
|
};
|
|
1651
|
-
|
|
1658
|
+
if (!override || override.type !== nextOverride.type || override.version !== nextOverride.version) {
|
|
1659
|
+
newOverrides[pkgName] = nextOverride;
|
|
1660
|
+
logger.info(`Override set for ${pkgName}: suggested as-is (${pkg.version}) from auto ${determinedBump}`);
|
|
1661
|
+
}
|
|
1652
1662
|
} else if (newOverrides[pkgName]) {
|
|
1653
1663
|
delete newOverrides[pkgName];
|
|
1654
|
-
logger.info(`
|
|
1664
|
+
logger.info(`Override cleared for ${pkgName}.`);
|
|
1655
1665
|
}
|
|
1656
1666
|
versionUpdates.push({
|
|
1657
1667
|
package: pkg,
|
|
1658
1668
|
currentVersion: pkg.version,
|
|
1659
1669
|
newVersion: pkg.version,
|
|
1660
1670
|
bumpType: "none",
|
|
1661
|
-
hasDirectChanges: allCommitsForPackage.length > 0
|
|
1671
|
+
hasDirectChanges: allCommitsForPackage.length > 0,
|
|
1672
|
+
changeKind: "as-is"
|
|
1662
1673
|
});
|
|
1663
1674
|
continue;
|
|
1664
1675
|
}
|
|
1665
1676
|
if (bumpRanks[userBump] < bumpRanks[determinedBump]) {
|
|
1666
|
-
|
|
1677
|
+
const nextOverride = {
|
|
1667
1678
|
type: userBump,
|
|
1668
1679
|
version: selectedVersion
|
|
1669
1680
|
};
|
|
1670
|
-
|
|
1681
|
+
if (!override || override.type !== nextOverride.type || override.version !== nextOverride.version) {
|
|
1682
|
+
newOverrides[pkgName] = nextOverride;
|
|
1683
|
+
logger.info(`Override set for ${pkgName}: suggested ${userBump} (${selectedVersion}) from auto ${determinedBump}`);
|
|
1684
|
+
}
|
|
1671
1685
|
} else if (newOverrides[pkgName] && bumpRanks[userBump] >= bumpRanks[determinedBump]) {
|
|
1672
1686
|
delete newOverrides[pkgName];
|
|
1673
|
-
logger.info(`
|
|
1687
|
+
logger.info(`Override cleared for ${pkgName}.`);
|
|
1674
1688
|
}
|
|
1675
1689
|
newVersion = selectedVersion;
|
|
1676
1690
|
}
|
|
@@ -1679,7 +1693,8 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
|
|
|
1679
1693
|
currentVersion: pkg.version,
|
|
1680
1694
|
newVersion,
|
|
1681
1695
|
bumpType: finalBumpType,
|
|
1682
|
-
hasDirectChanges: allCommitsForPackage.length > 0
|
|
1696
|
+
hasDirectChanges: allCommitsForPackage.length > 0,
|
|
1697
|
+
changeKind: canPrompt ? "manual" : "auto"
|
|
1683
1698
|
});
|
|
1684
1699
|
}
|
|
1685
1700
|
if (!isCI && showPrompt) for (const pkg of workspacePackages) {
|
|
@@ -1699,7 +1714,8 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
|
|
|
1699
1714
|
currentVersion: pkg.version,
|
|
1700
1715
|
newVersion,
|
|
1701
1716
|
bumpType,
|
|
1702
|
-
hasDirectChanges: false
|
|
1717
|
+
hasDirectChanges: false,
|
|
1718
|
+
changeKind: "manual"
|
|
1703
1719
|
});
|
|
1704
1720
|
}
|
|
1705
1721
|
return {
|
|
@@ -1896,8 +1912,9 @@ async function prepareWorkflow(options) {
|
|
|
1896
1912
|
});
|
|
1897
1913
|
if (!updatesResult.ok) exitWithError("Failed to calculate package updates.", void 0, updatesResult.error);
|
|
1898
1914
|
const { allUpdates, applyUpdates, overrides: newOverrides } = updatesResult.value;
|
|
1899
|
-
|
|
1900
|
-
|
|
1915
|
+
const hasOverrideChanges = JSON.stringify(existingOverrides) !== JSON.stringify(newOverrides);
|
|
1916
|
+
if (Object.keys(newOverrides).length > 0 && hasOverrideChanges) {
|
|
1917
|
+
logger.step("Writing version overrides file...");
|
|
1901
1918
|
try {
|
|
1902
1919
|
await mkdir(join(options.workspaceRoot, ".github"), { recursive: true });
|
|
1903
1920
|
await writeFile(overridesPath, JSON.stringify(newOverrides, null, 2), "utf-8");
|
|
@@ -1905,7 +1922,7 @@ async function prepareWorkflow(options) {
|
|
|
1905
1922
|
} catch (e) {
|
|
1906
1923
|
logger.error("Failed to write version overrides file:", e);
|
|
1907
1924
|
}
|
|
1908
|
-
}
|
|
1925
|
+
} else if (Object.keys(newOverrides).length > 0) logger.step("Version overrides unchanged. Skipping write.");
|
|
1909
1926
|
if (Object.keys(newOverrides).length === 0 && Object.keys(existingOverrides).length > 0) {
|
|
1910
1927
|
let shouldRemoveOverrides = false;
|
|
1911
1928
|
for (const update of allUpdates) {
|
|
@@ -1931,7 +1948,7 @@ async function prepareWorkflow(options) {
|
|
|
1931
1948
|
logger.section("🔄 Version Updates");
|
|
1932
1949
|
logger.item(`Updating ${allUpdates.length} packages (including dependents)`);
|
|
1933
1950
|
for (const update of allUpdates) {
|
|
1934
|
-
const suffix = update.
|
|
1951
|
+
const suffix = update.changeKind === "as-is" ? farver.dim(" (as-is)") : "";
|
|
1935
1952
|
logger.item(`${update.package.name}: ${update.currentVersion} → ${update.newVersion}${suffix}`);
|
|
1936
1953
|
}
|
|
1937
1954
|
await applyUpdates();
|
|
@@ -1983,6 +2000,8 @@ async function prepareWorkflow(options) {
|
|
|
1983
2000
|
if (!prResult.ok) exitWithError("Failed to sync release pull request.", void 0, prResult.error);
|
|
1984
2001
|
if (prResult.value.pullRequest) {
|
|
1985
2002
|
logger.item("No updates needed, PR is already up to date");
|
|
2003
|
+
const checkoutResult = await checkoutBranch(options.branch.default, options.workspaceRoot);
|
|
2004
|
+
if (!checkoutResult.ok) exitWithError(`Failed to checkout branch: ${options.branch.default}`, void 0, checkoutResult.error);
|
|
1986
2005
|
return {
|
|
1987
2006
|
updates: allUpdates,
|
|
1988
2007
|
prUrl: prResult.value.pullRequest.html_url,
|