@cliz/translate-weekly
Version:
Docschina weekly translate tool
42 lines (41 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const cli_1 = require("@cliz/cli");
const config_1 = require("../config");
const core_1 = require("../core");
exports.default = (0, cli_1.defineSubCommand)(createCommand => {
return createCommand('translate-weekly release')
.action(async ({ logger }) => {
logger.info(`1. 切换分支到 ${config_1.default.branch.master} ...`);
await cli_1.api.$ `git checkout ${config_1.default.branch.master}`;
logger.info('2. 拉取远程更新 ...');
await cli_1.api.$ `git pull origin ${config_1.default.branch.master}`;
logger.info('3. 选择发布期数 ...');
const files = await cli_1.api.fs.listDir(config_1.default.docsDir);
const docs = await Promise.all(files
.filter(e => /\.md$/.test(e.name))
.map(async (file) => {
const stat = await cli_1.api.fs.stat(file.absolutePath);
const content = await cli_1.api.fs.readFile(file.absolutePath, { encoding: 'utf-8' });
const isTranslated = /> 编辑/.test(content.slice(0, 512));
return {
period: +file.name.replace('.md', ''),
isTranslated,
createdAt: cli_1.doreamon.date(stat.ctimeMs).format('YYYY-MM-DD'),
};
}));
const periods = docs
.sort((a, b) => {
return b.period - a.period;
})
.map(e => {
return {
name: `第 ${e.period} 期`,
value: e.period,
};
});
const period = periods[0].value;
const post = await core_1.default.release.getLatestPost(period);
await core_1.default.release.release(period, post, logger);
});
});