You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.5 KiB
JavaScript
137 lines
3.5 KiB
JavaScript
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
// eslint-disable-next-line import/order
|
|
const { Octokit } = require('@octokit/rest');
|
|
|
|
const octokit = new Octokit({
|
|
auth: process.env.PERSONAL_TOKEN,
|
|
});
|
|
|
|
const prettier = require('prettier');
|
|
const { getPackagesSync } = require('@manypkg/get-packages');
|
|
const minimist = require('minimist');
|
|
|
|
async function createCommit({ owner, repo, message, branch, files }) {
|
|
const currentBranchRef = await octokit.git.getRef({
|
|
owner,
|
|
repo,
|
|
ref: `heads/${branch}`,
|
|
});
|
|
|
|
const tree = [];
|
|
|
|
for (const file of files) {
|
|
const { data: blobData } = await octokit.git.createBlob({ owner, repo, content: file.content });
|
|
|
|
tree.push({
|
|
path: file.path,
|
|
mode: '100644',
|
|
type: 'blob',
|
|
sha: blobData.sha,
|
|
});
|
|
}
|
|
|
|
const { data: treeData } = await octokit.git.createTree({
|
|
owner,
|
|
repo,
|
|
base_tree: currentBranchRef.data.object.sha,
|
|
tree,
|
|
});
|
|
|
|
const { data: commitData } = await octokit.git.createCommit({
|
|
owner,
|
|
repo,
|
|
message,
|
|
tree: treeData.sha,
|
|
parents: [currentBranchRef.data.object.sha],
|
|
});
|
|
|
|
await octokit.git.updateRef({
|
|
owner,
|
|
repo,
|
|
ref: `heads/${branch}`,
|
|
sha: commitData.sha,
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
const args = minimist(process.argv.slice(2));
|
|
const [branch, nextVersion] = args._;
|
|
const appPkgJson = require('../package.json');
|
|
const workspace = path.join(__dirname, '../../../');
|
|
const workspacePkgPath = path.join(workspace, 'package.json');
|
|
const workspacePkgJson = require(workspacePkgPath);
|
|
const pksPath = path.join(__dirname, '../package.json');
|
|
const versions = {
|
|
version: nextVersion || appPkgJson.version,
|
|
deps: {},
|
|
};
|
|
|
|
console.log('next version is', nextVersion);
|
|
|
|
const getCode = (info) => {
|
|
return `
|
|
(function () {
|
|
window.__frontend = ${JSON.stringify(info, null, 2)};
|
|
})();
|
|
`;
|
|
};
|
|
|
|
const { packages } = getPackagesSync(workspace);
|
|
|
|
packages.forEach((pkg) => {
|
|
const pkgInFrontend = appPkgJson.dependencies[pkg.packageJson.name];
|
|
if (pkgInFrontend) {
|
|
versions.deps[pkg.packageJson.name] = pkg.packageJson.version;
|
|
}
|
|
});
|
|
|
|
fs.writeFileSync(
|
|
path.join(__dirname, '../dist/frontend_version.js'),
|
|
prettier.format(getCode(versions), {
|
|
singleQuote: true,
|
|
trailingComma: 'all',
|
|
proseWrap: 'never',
|
|
endOfLine: 'lf',
|
|
tabWidth: 2,
|
|
printWidth: 120,
|
|
}),
|
|
'utf-8',
|
|
);
|
|
|
|
console.log('Inject frontend info success!');
|
|
|
|
try {
|
|
if (nextVersion && branch !== 'online') {
|
|
appPkgJson.version = nextVersion;
|
|
workspacePkgJson.version = nextVersion;
|
|
fs.writeFileSync(path.join(__dirname, '../package.json'), JSON.stringify(appPkgJson, null, 2), 'utf-8');
|
|
fs.writeFileSync(workspacePkgPath, JSON.stringify(workspacePkgJson, null, 2), 'utf-8');
|
|
|
|
await createCommit({
|
|
owner: 'opendatalab',
|
|
repo: 'labelU-Kit',
|
|
message: `chore: update frontend package.json version to ${nextVersion} [skip ci]`,
|
|
files: [
|
|
{
|
|
content: JSON.stringify(appPkgJson, null, 2),
|
|
path: path.relative(workspace, pksPath),
|
|
},
|
|
{
|
|
content: JSON.stringify(workspacePkgJson, null, 2),
|
|
path: path.relative(workspace, workspacePkgPath),
|
|
},
|
|
],
|
|
branch,
|
|
});
|
|
|
|
console.log('update package.json version success!');
|
|
}
|
|
} catch (e) {
|
|
console.log('update package.json version failed!', e);
|
|
}
|
|
}
|
|
|
|
main();
|