buklo 0.1.12

Buklo is a simple CLI HTTP client
name: build

on:
  schedule:
    - cron: '0 0 * * 0'
  workflow_dispatch:
    inputs:
      tag_name:
        description: 'Tag name for release'
        required: false
        default: nightly
  push:
    tags: ["v[0-9]+.[0-9]+.[0-9]+*"]
  release:
    types: [published]

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  CARGO_TERM_COLOR: always
  REGISTRY: ghcr.io
  RUST_VERSION: 1.63.0

jobs:
  linux:
    runs-on: ubuntu-latest

    steps:
      - name: checkout repository
        uses: actions/checkout@v4
      - name: Setup Rust toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ env.RUST_VERSION }}
      - name: Init cache
        uses: Swatinem/rust-cache@a22603398250b864f7190077025cf752307154dc
      - name: Setup Mold
        uses: rui314/setup-mold@v1
        with:
          mold-version: 1.4.1
          make-default: false
      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install build-essential
      - name: Build
        run: cargo build --release
      - name: Gzip
        run: |
          mkdir buklo
          cp ./target/release/buklo buklo/
          tar -zcvf ./buklo-linux.tar.gz buklo
      - uses: actions/upload-artifact@v4
        with:
          name: buklo-linux
          path: |
            ./buklo-linux.tar.gz
          retention-days: 1
          
  publish:
    needs: [linux]
    runs-on: ubuntu-latest
    env:
      GH_REPO: ${{ github.repository }}
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4

      - uses: actions/download-artifact@v4          
      
      - if: github.event_name == 'workflow_dispatch'
        run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
      - if: github.event_name == 'schedule'
        run: echo 'TAG_NAME=nightly' >> $GITHUB_ENV
      - if: github.event_name == 'push'
        run: |
          TAG_NAME=${{ github.ref }}
          echo "TAG_NAME=${TAG_NAME#refs/tags/}" >> $GITHUB_ENV
      - if: env.TAG_NAME == 'nightly'
        run: |
          (echo 'SUBJECT=buklo development build';
           echo 'PRERELEASE=--prerelease') >> $GITHUB_ENV
          gh release delete nightly --yes || true
          git push origin :nightly || true
      - if: env.TAG_NAME != 'nightly'
        run: |
          (echo 'SUBJECT=buklo release build';
           echo 'PRERELEASE=') >> $GITHUB_ENV
      - name: Publish release
        run: |
          gh release create $TAG_NAME $PRERELEASE --title "$TAG_NAME" --target $GITHUB_SHA buklo-linux/*