Skip to content

Commit

Permalink
ci(publish): split script
Browse files Browse the repository at this point in the history
  • Loading branch information
Rubilmax committed Oct 18, 2024
1 parent a4ff73a commit 403e7aa
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 37 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,12 @@ jobs:

- run: pnpm install

# First, set version of each package to the latest tagged so they are referenced correclty in dependencies.
- run: pnpm -r --parallel --no-reporter-hide-prefix -c exec 'node ../../scripts/release/version.js'

- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc

- run: pnpm -r --parallel --no-reporter-hide-prefix -c exec 'node ../../release.js'
- run: pnpm -r --parallel --no-reporter-hide-prefix -c exec 'node ../../scripts/release/publish.js'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

33 changes: 33 additions & 0 deletions scripts/release/bumper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { basename } from "node:path";
import { Bumper } from "conventional-recommended-bump";

export const prefix = `@morpho-org/${basename(process.cwd())}-`;
export const bumper = new Bumper().tag({ prefix }).commits({ path: "." });

export const whatBump = (commits) => {
if (commits.length === 0) return;

let level = 2;

commits.forEach((commit) => {
if (commit.notes.length > 0) {
level = 0;
} else if (commit.type === "feat") {
if (level === 2) {
level = 1;
}
}
});

return { level };
};

export const [branch, version] = await Promise.all([
bumper.gitClient.getCurrentBranch(),
bumper.gitClient.getVersionFromTags({ prefix }),
]);

if (!version) {
console.error("Cannot find version from tags");
process.exit(1);
}
39 changes: 3 additions & 36 deletions release.js → scripts/release/publish.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,8 @@
import { spawnSync } from "node:child_process";
import { basename } from "node:path";
import { Bumper } from "conventional-recommended-bump";
import { inc } from "semver";
import { branch, bumper, prefix, version, whatBump } from "./bumper.js";

const prefix = `@morpho-org/${basename(process.cwd())}-`;
const bumper = new Bumper().tag({ prefix }).commits({ path: "." });

let { releaseType } = await bumper.bump((commits) => {
if (commits.length === 0) return;

let level = 2;

commits.forEach((commit) => {
if (commit.notes.length > 0) {
level = 0;
} else if (commit.type === "feat") {
if (level === 2) {
level = 1;
}
}
});

return { level };
});

const [branch, version] = await Promise.all([
bumper.gitClient.getCurrentBranch(),
bumper.gitClient.getVersionFromTags({ prefix }),
]);

if (!version) {
console.error("Cannot find version from tags");
process.exit(1);
}
let { releaseType } = await bumper.bump(whatBump);

if (releaseType) {
if (branch !== "main") releaseType = "prerelease";
Expand All @@ -51,8 +21,7 @@ if (releaseType) {
let { stderr, stdout, error } = spawnSync("pnpm", ["version", newVersion], {
encoding: "utf8",
});
if (stdout) console.log(stdout);
if (stderr) console.log(stderr); // Ignore versioning errors.
if (stdout) console.log(stdout); // Ignore versioning errors.

({ stderr, stdout, error } = spawnSync(
"pnpm",
Expand Down Expand Up @@ -126,5 +95,3 @@ if (releaseType) {
process.exit(1);
}
} else console.debug(`No version bump from ${version} on branch ${branch}`);

process.exit(0);
7 changes: 7 additions & 0 deletions scripts/release/version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { version } from "./bumper.js";

const { stdout } = spawnSync("pnpm", ["version", version], {
encoding: "utf8",
});

if (stdout) console.log(stdout); // Ignore versioning errors.

0 comments on commit 403e7aa

Please sign in to comment.