async function run()

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);
  }
}