/**
* 记录发布时的commit信息,用于区分内网版本包之间的差异
*/
import path from 'path';
import {writeFileSync} from 'fs';
import {execSync} from 'child_process';
let outputFileName = process.argv[2];
if (!outputFileName) {
outputFileName = 'revision.json';
}
try {
const rootDir = execSync('git rev-parse --show-toplevel').toString().trim();
// 分支
const branch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim();
// commit id
const SHA1 = execSync('git rev-parse --short HEAD').toString().trim();
// commit body
const commit = execSync(
`git log -n 1 --date=format:'%Y-%m-%d %H:%M:%S' --format="%s%n%an%n%cd"`
)
.toString()
.trim();
const [message, author, date] = commit.split('\n');
const content = JSON.stringify(
{branch, SHA1, message, author, date},
undefined,
2
);
writeFileSync(path.join(rootDir, outputFileName), content, {
encoding: 'utf8'
});
console.log(
'\x1b[32m%s\x1b[0m',
'✨ [amis] revision.json generated successfully!'
);
process.exit();
} catch (error) {
console.log('\x1b[31m%s\x1b[0m', '❌ [amis] revision.json failed to write!');
process.exit(1);
}