neverest 0.1.0

CLI to synchronize and backup emails
Documentation
name: release

on:
  push:
    tags:
      - v*

jobs:
  create-release:
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.create-release.outputs.upload_url }}
    steps:
      - name: Create release
        id: create-release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}
          draft: false
          prerelease: false

  deploy-releases:
    runs-on: ${{ matrix.os }}
    needs: create-release
    strategy:
      fail-fast: false
      matrix:
        include:
          - target: x86_64-linux
            os: ubuntu-latest
          - target: arm64-linux
            os: ubuntu-latest
          - target: x86_64-windows
            os: ubuntu-latest
          - target: x86_64-macos
            os: macos-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2        
      - name: Install Nix
        uses: cachix/install-nix-action@v24
        with:
          nix_path: nixpkgs=channel:nixos-23.11
          extra_nix_config: |
            experimental-features = nix-command flakes
      - uses: cachix/cachix-action@v12
        with:
          name: soywod
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
      - name: Build release archive
        run: |
          nix build -L .#${{ matrix.target }}
          cp result/bin/neverest* .
      - name: Upload tgz release archive
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create-release.outputs.upload_url }}
          asset_path: neverest.tgz
          asset_name: neverest.${{ matrix.target }}.tgz
          asset_content_type: application/gzip
      - name: Upload zip release archive
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create-release.outputs.upload_url }}
          asset_path: neverest.zip
          asset_name: neverest.${{ matrix.target }}.zip
          asset_content_type: application/zip

  publish-crate:
    runs-on: ubuntu-latest
    needs: deploy-releases
    steps:
      - name: Checkout code
        uses: actions/checkout@v2        
      - name: Install Nix
        uses: cachix/install-nix-action@v24
        with:
          nix_path: nixpkgs=channel:nixos-23.11
          extra_nix_config: |
            experimental-features = nix-command flakes
      - name: Publish crate to crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: |
          nix develop -c cargo publish --no-verify --token ${CARGO_REGISTRY_TOKEN}