name: Build distribution theme

on:
  release:
    types:
      - created

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16
      - name: Compress zip
        run: |
          PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json)
          PRE_ZIP_FOLDER=halo-theme-hao-${PACKAGE_VERSION}
          ARTIFACT_NAME=${PRE_ZIP_FOLDER}.zip
          ARTIFACT_PATHNAME=dist/${ARTIFACT_NAME}
          echo "halo-theme-hao version $PACKAGE_VERSION"
          echo "Artifact name: ${ARTIFACT_NAME}"
          echo "Artifact pathname: ${ARTIFACT_PATHNAME}"
          echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV
          echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
          echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV
          echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV
          mkdir $PRE_ZIP_FOLDER
          mkdir dist
          cp -r theme.yaml settings.yaml annotation-setting.yaml templates $PRE_ZIP_FOLDER/
          zip -r $ARTIFACT_PATHNAME $PRE_ZIP_FOLDER
      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: halo-theme-hao
          path: |
            dist/*.zip
          retention-days: 7

  github-release:
    runs-on: ubuntu-latest
    if: github.event_name == 'release'
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: false
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16
      - name: Compress zip
        run: |
          PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json)
          PRE_ZIP_FOLDER=halo-theme-hao-${PACKAGE_VERSION}
          ARTIFACT_NAME=${PRE_ZIP_FOLDER}.zip
          ARTIFACT_PATHNAME=dist/${ARTIFACT_NAME}
          echo "halo-theme-hao version $PACKAGE_VERSION"
          echo "Artifact name: ${ARTIFACT_NAME}"
          echo "Artifact pathname: ${ARTIFACT_PATHNAME}"
          echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV
          echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
          echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV
          echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV
          mkdir $PRE_ZIP_FOLDER
          mkdir dist
          cp -r theme.yaml settings.yaml annotation-setting.yaml templates $PRE_ZIP_FOLDER/
          zip -r $ARTIFACT_PATHNAME $PRE_ZIP_FOLDER
      - name: Upload a release asset
        uses: actions/github-script@v2
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const fs = require('fs').promises;
            const { repo: { owner, repo }, sha } = context;
            console.log({ owner, repo, sha });
            const releaseId = process.env.RELEASE_ID
            const artifactPathName = process.env.ARTIFACT_PATHNAME
            const artifactName = process.env.ARTIFACT_NAME
            console.log('Releasing', releaseId, artifactPathName, artifactName)
            await github.repos.uploadReleaseAsset({
              owner, repo,
              release_id: releaseId,
              name: artifactName,
              data: await fs.readFile(artifactPathName)
            });
