in src/main.ts [77:141]
async function run(): Promise<void> {
try {
const params = getParams();
// 変更されたマークダウンの取得とパラメータのアップデート
const changedFiles = await getChangedFiles(params.commitSha);
debug(`changedFiles: ${changedFiles.toString()}`);
const changedMarkdowns = getMarkdowns(changedFiles);
debug(`markdowns: ${changedMarkdowns.toString()}`);
if (changedMarkdowns.length === 0) {
info("Markdown files is no changed.");
return;
}
info(`changedMarkdown: ${changedMarkdowns.toString()}`);
if (params.validateOnly) {
info("validate-only is true. Only validate metadata.");
for (const markdownPath of changedMarkdowns) {
const markdown = readFileSync(markdownPath);
info(`validate checking: ${markdownPath}`);
await validateMetadata(markdown);
}
return;
}
// マークダウンの保存とプッシュとプルリクエスト作成
const savedPaths = await saveUpdatedMarkdown(
params.zennMetadata,
changedMarkdowns
);
// dry-run = true の場合はプッシュ、プルリクエストの作成をスキップする
if (params.dryRun) {
info("dry-run is true. skip after process.");
return;
}
// 変更されたファイルごとにプッシュし、プルリクエストを作成する
for (const savedPath of savedPaths) {
if (await isChangedFile(savedPath)) {
info(`${savedPath} is not changed. skip create pull request.`);
continue;
}
const branchName = await pushChange(
savedPath,
params.commitSha,
params.isForcePush
);
const workflowBranch = process.env.GITHUB_REF;
if (!workflowBranch) {
throw new Error("GITHUB_REF is undefined");
}
const octokit = getOctokit(params.githubToken);
await createPullRequest(
octokit,
context.repo,
savedPath,
workflowBranch.replace(/refs\/heads\//, ""),
branchName
);
}
} catch (error: any) {
setFailed(error.message);
}
}