mirror of
https://github.com/garronej/ts-ci.git
synced 2025-11-30 21:43:05 +00:00
Follow up from https://github.com/garronej/github_actions_toolkit
This commit is contained in:
commit
5297ab00ab
54 changed files with 18162 additions and 0 deletions
92
src/sync_package_and_package_lock_version.ts
Normal file
92
src/sync_package_and_package_lock_version.ts
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
import { getActionParamsFactory } from "./inputHelper";
|
||||
import * as st from "scripting-tools";
|
||||
import * as fs from "fs";
|
||||
import { gitCommit } from "./tools/gitCommit";
|
||||
|
||||
export const { getActionParams } = getActionParamsFactory({
|
||||
"inputNameSubset": [
|
||||
"owner",
|
||||
"repo",
|
||||
"branch",
|
||||
"github_token"
|
||||
] as const
|
||||
});
|
||||
|
||||
export type Params = ReturnType<typeof getActionParams>;
|
||||
|
||||
type CoreLike = {
|
||||
debug: (message: string) => void;
|
||||
};
|
||||
|
||||
export async function action(
|
||||
_actionName: "sync_package_and_package_lock_version",
|
||||
params: Params,
|
||||
core: CoreLike
|
||||
) {
|
||||
|
||||
core.debug(JSON.stringify(params));
|
||||
|
||||
const { owner, repo, branch, github_token } = params;
|
||||
|
||||
await gitCommit({
|
||||
owner,
|
||||
repo,
|
||||
github_token,
|
||||
"commitAuthorEmail": "actions@github.com",
|
||||
"performChanges": async () => {
|
||||
|
||||
await st.exec(`git checkout ${branch}`);
|
||||
|
||||
const { version } = JSON.parse(
|
||||
fs.readFileSync("package.json")
|
||||
.toString("utf8")
|
||||
);
|
||||
|
||||
if (!fs.existsSync("package-lock.json")) {
|
||||
core.debug(`No package-lock.json tracked by ${owner}/${repo}#${branch}`);
|
||||
return { "commit": false };
|
||||
}
|
||||
|
||||
const packageLockJsonRaw = fs.readFileSync("package-lock.json")
|
||||
.toString("utf8")
|
||||
;
|
||||
|
||||
const packageLockJsonParsed = JSON.parse(
|
||||
packageLockJsonRaw
|
||||
);
|
||||
|
||||
if (packageLockJsonParsed.version === version) {
|
||||
core.debug("Nothing to do, version in package.json and package-lock.json are the same");
|
||||
return { "commit": false };
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
"package-lock.json",
|
||||
Buffer.from(
|
||||
JSON.stringify(
|
||||
(() => {
|
||||
packageLockJsonParsed.version = version;
|
||||
packageLockJsonParsed.packages[""].version = version;
|
||||
return packageLockJsonParsed;
|
||||
})(),
|
||||
null,
|
||||
packageLockJsonRaw
|
||||
.replace(/\t/g, " ")
|
||||
.match(/^(\s*)\"version\"/m)![1].length
|
||||
) + packageLockJsonRaw.match(/}([\r\n]*)$/)![1],
|
||||
"utf8"
|
||||
)
|
||||
);
|
||||
|
||||
return {
|
||||
"commit": true,
|
||||
"addAll": false,
|
||||
"message": "Sync package.json and package.lock version"
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue