termfoto 0.6.2

Fast terminal photo viewer — keyboard-driven, chafa-rendered
name: Release

on:
  push:
    tags: ["v*"]

jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4

      - name: 安装 Rust
        uses: dtolnay/rust-toolchain@stable

      - name: 安装系统依赖
        run: |
          sudo apt-get update -qq
          sudo apt-get install -y libchafa-dev libglib2.0-dev libsysprof-capture-4-dev

      - name: 从 tag 同步版本号
        run: |
          TAG_VERSION="${GITHUB_REF_NAME#v}"
          sed -i "s/^version = .*/version = \"${TAG_VERSION}\"/" Cargo.toml
          echo "Synced Cargo.toml version to ${TAG_VERSION}"

      - name: 编译 release
        run: cargo build --release --no-default-features --features chafa-static

      - name: 打包 .deb
        run: |
          VERSION="${GITHUB_REF_NAME#v}"
          PKG="termfoto_${VERSION}_amd64"
          mkdir -p "${PKG}/DEBIAN"
          mkdir -p "${PKG}/usr/local/bin"
          cp target/release/termfoto "${PKG}/usr/local/bin/"
          cat > "${PKG}/DEBIAN/control" <<EOF
          Package: termfoto
          Version: ${VERSION}
          Architecture: amd64
          Maintainer: termfoto
          Description: 终端图片浏览器——高效、轻量、chafa 渲染
          EOF
          dpkg-deb --build "${PKG}"
          cp "${PKG}.deb" termfoto_latest_amd64.deb
        env:
          GITHUB_REF_NAME: ${{ github.ref_name }}

      - name: 发布到 GitHub Releases
        uses: softprops/action-gh-release@v1
        with:
          files: |
            target/release/termfoto
            termfoto_*.deb

  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 安装 Rust
        uses: dtolnay/rust-toolchain@stable

      - name: 从 tag 同步版本号
        run: |
          TAG_VERSION="${GITHUB_REF_NAME#v}"
          sed -i "s/^version = .*/version = \"${TAG_VERSION}\"/" Cargo.toml
          echo "Synced Cargo.toml version to ${TAG_VERSION}"

      - name: 发布到 crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: cargo publish --allow-dirty

  npm-publish:
    needs: release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: "20"
          registry-url: "https://registry.npmjs.org"

      - name: 从 tag 同步版本号
        run: |
          TAG_VERSION="${GITHUB_REF_NAME#v}"
          cd npm
          npm version "${TAG_VERSION}" --no-git-tag-version --allow-same-version
          echo "Synced npm version to ${TAG_VERSION}"

      - name: 发布到 npm
        working-directory: npm
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: npm publish --access public