name: deploy

on:
  # 每当 push 到 main 分支时触发部署
  # Deployment is triggered whenever a push is made to the main branch.
  push:
    branches: [main]
  # 手动触发部署
  # Manually trigger deployment
  workflow_dispatch:

jobs:
  docs:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:
          # “最近更新时间” 等 git 日志相关信息，需要拉取全部提交记录
          # "Last updated time" and other git log-related information require fetching all commit records.
          fetch-depth: 0

{{#if (equal packageManager "pnpm")}}
      - name: Setup pnpm
        uses: pnpm/action-setup@v4

{{/if}}
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          # 选择要使用的 node 版本
          node-version: 22

{{#if (equal packageManager "npm")}}
      # 安装依赖
      # Install dependencies
      - name: Install Dependencies
        run: npm ci
{{/if}}

{{#if (equal packageManager "pnpm")}}
      # 安装依赖
      # Install dependencies
      - name: Install Dependencies
        run: pnpm install --frozen-lockfile
{{/if}}

{{#if (equal packageManager "yarn")}}
      - name: Run install
        uses: borales/actions-yarn@v4
        with:
          cmd: install
{{/if}}

      # 运行构建脚本
      # Run the build script
{{#unless (equal packageManager "yarn")}}
      - name: Build VuePress site
        env:
          NODE_OPTIONS: --max_old_space_size=8192
        run: {{packageManager}} run docs:build
{{/unless}}
{{#if (equal packageManager "yarn")}}
      - name: Build VuePress site
        uses: borales/actions-yarn@v4
        env:
          NODE_OPTIONS: --max_old_space_size=8192
        with:
          cmd: docs:build
{{/if}}


      # 查看 workflow 的文档来获取更多信息
      # @see https://github.com/crazy-max/ghaction-github-pages
      - name: Deploy to GitHub Pages
        uses: crazy-max/ghaction-github-pages@v4
        with:
          # 部署到 gh-pages 分支
          target_branch: gh-pages
          # 部署目录为 VuePress 的默认输出目录
          build_dir: {{docsDir}}/.vuepress/dist
        env:
          # @see https://docs.github.com/cn/actions/reference/authentication-in-a-workflow#about-the-github_token-secret
          GITHUB_TOKEN: $\{{ secrets.GITHUB_TOKEN }}
