# Copyright 2025 Signal Messenger, LLC
# SPDX-License-Identifier: AGPL-3.0-only
name: ICU Book
on:
  workflow_dispatch:
  push:
    tags:
      - 'v[0-9]+.[0-9]+.*'
jobs:
  build-icu-book:
    name: Build ICU Book
    runs-on: ubuntu-latest-8-cores
    if: ${{ github.repository == 'signalapp/Signal-Desktop-Private' }}
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
      - name: Setup pnpm
        uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
      - name: Setup node.js
        uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
        with:
          node-version-file: '.nvmrc'
          cache: 'pnpm'
          cache-dependency-path: 'pnpm-lock.yaml'
      - name: Cache .electron-gyp
        uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
        with:
          path: ~/.electron-gyp
          key: electron-gyp-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}

      # - name: Setup sccache
      #   uses: mozilla-actions/sccache-action@054db53350805f83040bf3e6e9b8cf5a139aa7c9 # v0.0.7
      # - name: Restore sccache
      #   uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
      #   id: cache-sccache
      #   with:
      #     path: ${{ env.SCCACHE_PATH }}
      #     key: sccache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'patches/**') }}

      - name: Install Desktop node_modules
        run: pnpm install
        env:
          # CC: sccache gcc
          # CXX: sccache g++
          # SCCACHE_GHA_ENABLED: "true"
          NPM_CONFIG_LOGLEVEL: verbose

      - run: pnpm run build:storybook
      - run: ./node_modules/.bin/playwright install chromium
      - run: ./node_modules/.bin/run-p --race test:storybook:serve test:storybook:test
        env:
          ARTIFACTS_DIR: stories
      - run: pnpm run build:esbuild
      - run: node ts/scripts/compile-stories-icu-lookup.node.js stories

      - name: Upload test artifacts
        if: github.event_name == 'workflow_dispatch'
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
        with:
          name: desktop-test-icu
          path: stories
          compression-level: 9

      - name: Upload release artifacts
        if: github.event_name != 'workflow_dispatch'
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
        with:
          name: desktop-${{ github.ref_name }}-icu
          path: stories
          compression-level: 9
