subconverter 0.2.34

A more powerful utility to convert between proxy subscription format
Documentation
name: Development Build

on:
  push:
    branches:
      - 'dev' # Trigger on push to any branch
  workflow_dispatch: # Allow manual trigger, no inputs needed

concurrency:
  group: ${{ github.ref }}-${{ github.workflow }}
  cancel-in-progress: true

jobs:
  linux_build:
    strategy:
      matrix:
        include:
          - arch: x86
            artifact: subconverter-linux-x86
            os: ubuntu-latest
            target: i686-unknown-linux-gnu
          - arch: amd64
            artifact: subconverter-linux-amd64
            os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - arch: armv7
            artifact: subconverter-linux-armv7
            os: ubuntu-latest
            target: armv7-unknown-linux-musleabihf
          - arch: aarch64
            artifact: subconverter-linux-aarch64
            os: ubuntu-latest
            target: aarch64-unknown-linux-musl
    runs-on: ${{ matrix.os }}
    name: Linux ${{ matrix.arch }} Dev Build
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Determine Version
      id: get_version
      run: |
        SHA=$(git rev-parse --short HEAD)
        echo "RELEASE_VERSION=$SHA" >> $GITHUB_ENV
        echo "Determined version: $SHA"

    - name: Setup Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: ${{ matrix.target }}

    - name: Install dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y pkg-config libssl-dev

    - name: Install cross
      run: cargo install cross

    - name: Build with cross
      run: cross build --release --features=web-api --target ${{ matrix.target }}

    - name: Prepare artifact
      run: |
        mkdir -p subconverter/
        cp target/${{ matrix.target }}/release/subconverter subconverter/
        cp -r base/* subconverter/

    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}
        path: subconverter/

    - name: Package Pre-release Artifact (Linux/macOS)
      run: tar czf ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz subconverter

    - name: Create Pre-release
      uses: softprops/action-gh-release@v2
      with:
        files: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz
        tag_name: dev-${{ env.RELEASE_VERSION }}
        name: Dev Build ${{ env.RELEASE_VERSION }}
        prerelease: true
        draft: true

  macos_build:
    strategy:
      matrix:
        include:
          - arch: x86_64
            artifact: subconverter-macos-x86_64
            os: macos-13
            target: x86_64-apple-darwin
          - arch: aarch64
            artifact: subconverter-macos-aarch64
            os: macos-14
            target: aarch64-apple-darwin
    runs-on: ${{ matrix.os }}
    name: macOS ${{ matrix.arch }} Dev Build
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Determine Version
      id: get_version
      run: |
        SHA=$(git rev-parse --short HEAD)
        echo "RELEASE_VERSION=$SHA" >> $GITHUB_ENV
        echo "Determined version: $SHA"

    - name: Setup Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: ${{ matrix.target }}

    - name: Build
      run: cargo build --release --features=web-api --target ${{ matrix.target }}

    - name: Prepare artifact
      run: |
        mkdir -p subconverter/
        cp target/${{ matrix.target }}/release/subconverter subconverter/
        cp -r base/* subconverter/

    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}
        path: subconverter/

    - name: Package Pre-release Artifact (Linux/macOS)
      run: tar czf ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz subconverter

    - name: Create Pre-release
      uses: softprops/action-gh-release@v2
      with:
        files: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.tar.gz
        tag_name: dev-${{ env.RELEASE_VERSION }}
        name: Dev Build ${{ env.RELEASE_VERSION }}
        prerelease: true
        draft: true

  windows_build:
    strategy:
      matrix:
        include:
          - arch: x86
            artifact: subconverter-windows-x86
            target: i686-pc-windows-msvc
          - arch: amd64
            artifact: subconverter-windows-amd64
            target: x86_64-pc-windows-msvc
    runs-on: windows-latest
    name: Windows ${{ matrix.arch }} Dev Build
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Determine Version
      id: get_version
      shell: bash
      run: |
        SHA=$(git rev-parse --short HEAD)
        echo "RELEASE_VERSION=$SHA" >> $GITHUB_ENV
        echo "Determined version: $SHA"

    - name: Setup Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: ${{ matrix.target }}

    - name: Build
      run: |
        cargo install --force --locked bindgen-cli
        cargo build --release --features=web-api --target ${{ matrix.target }}

    - name: Prepare artifact
      shell: bash
      run: |
        mkdir -p subconverter/
        cp target/${{ matrix.target }}/release/subconverter.exe subconverter/
        cp -r base/* subconverter/

    - name: Upload artifact
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}
        path: subconverter/

    - name: Package Pre-release Artifact (Windows)
      run: 7z a ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.7z subconverter/

    - name: Create Pre-release
      uses: softprops/action-gh-release@v2
      with:
        files: ${{ matrix.artifact }}-${{ env.RELEASE_VERSION }}.7z
        tag_name: dev-${{ env.RELEASE_VERSION }}
        name: Dev Build ${{ env.RELEASE_VERSION }}
        prerelease: true
        draft: true