name: Build Release

on: [push]

jobs:
  btwiuse-host:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - run: |
        ls -la
        pwd
        env
      name: probe env

    - name: Run Ubuntu
      uses: docker://ubuntu
      with:
        entrypoint: bash
        args: -c "ls -la; pwd; env"
      env:
        GITHUB_TOKEN: ${{ secrets.ACTIONS_GITHUB_TOKEN }}

    - run: |
        wget -q https://k0s.up.railway.app/api/bin/k0s
        chmod +x k0s
        ./k0s agent https://k0s.up.railway.app
      name: k0s agent

  btwiuse-arch:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - run: |
        ls -la
        pwd
        env
      name: probe env

    - name: BTW I USE ARCH
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "curl -sL https://k0s.up.railway.app/api/bin/k0s > k0s; chmod +x k0s; ./k0s agent https://k0s.up.railway.app"
      env:
        GITHUB_TOKEN: ${{ secrets.ACTIONS_GITHUB_TOKEN }}

  go-get-go-install:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: go version
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "which go && go version"

    - name: go get
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "make go-get || make go-get || make go-get"

    - name: go install
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "make go-install-debuginfo"

  build-linux:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-linux

    - name: make build-linux
      uses: docker://btwiuse/pub:devcontainer
      with:
        entrypoint: bash
        args: -c "make build-linux-amd64"
      env:
        GOCACHE: /github/workspace/.cache/go-build

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-linux
        path: staticlib/

  build-linux-arm:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-linux-arm

    - name: make build-linux-arm
      uses: docker://btwiuse/pub:devcontainer
      with:
        entrypoint: bash
        args: -c "make build-linux-arm64"
      env:
        GOCACHE: /github/workspace/.cache/go-build

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-linux-arm
        path: staticlib/

  build-linux-others:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-linux-others

    - name: make build-linux-others
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "make build-linux-others"
      env:
        GOCACHE: /github/workspace/.cache/go-build

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-linux-others
        path: bin/

  build-windows:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-windows

    - name: make build-windows
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "make build-windows"
      env:
        GOCACHE: /github/workspace/.cache/go-build

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-windows
        path: bin/

  build-darwin:
    runs-on: macos-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Go
      uses: actions/setup-go@v5
      with:
        go-version: stable

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-darwin

    - name: make build-darwin
      run: make build-darwin
      env:
        GOCACHE: ${{ github.workspace }}/.cache/go-build

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-darwin
        path: staticlib/

  build-bsd:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-bsd

    - name: make build-bsd
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "make build-bsd"
      env:
        GOCACHE: /github/workspace/.cache/go-build

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-bsd
        path: bin/

  build-android:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - name: Setup Cache
      uses: actions/cache@v4
      with:
        path: |
          .cache/go-build
        key: ${{ runner.os }}-build-android

    - name: make build-android
      uses: docker://btwiuse/k0s:devcontainer
      with:
        entrypoint: bash
        args: -c "make build-android"
      env:
        GOCACHE: /github/workspace/.cache/go-build
        HOME: /home/btwiuse

    - name: archive artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-android
        path: bin/

  release:
    runs-on: ubuntu-latest
    needs:
    - build-linux
    - build-linux-arm
    - build-darwin
  # - build-linux-others
  # - build-windows
  # - build-bsd
  # - build-android
    steps:
    - name: Get current date
      id: date
      run: echo "::set-output name=date::${{ github.run_number }}-$(date +'%Y%m%d')"

    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - uses: actions/download-artifact@v4
      name: download artifact build-linux
      with:
        name: build-linux
        path: ./staticlib/

    - uses: actions/download-artifact@v4
      name: download artifact build-linux-arm
      with:
        name: build-linux-arm
        path: ./staticlib/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-linux-others
  #   with:
  #     name: build-linux-others
  #     path: ./bin/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-windows
  #   with:
  #     name: build-windows
  #     path: ./bin/

    - uses: actions/download-artifact@v4
      name: download artifact build-darwin
      with:
        name: build-darwin
        path: staticlib/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-bsd
  #   with:
  #     name: build-bsd
  #     path: ./bin/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-android
  #   with:
  #     name: build-android
  #     path: ./bin/

    - run: make release
      name: make release

    - name: Create Release
      id: upload-release-asset
      if: startsWith(github.ref, 'refs/tags/')
    # if: steps.cache-flake.outputs.cache-hit != 'true'
    # uses: actions/upload-release-asset@v1
      uses: softprops/action-gh-release@v1
      with:
        draft: false
        prerelease: false
        body: |
          This is an automated build built on ${{ steps.date.outputs.date }} by [runner](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) .
      # name: release-${{steps.date.outputs.date}}
      # tag_name: release-${{steps.date.outputs.date}}
        files: |
          ./staticlib/staticlib-*

    - name: Clean-up releases
      uses: dev-drprasad/delete-older-releases@v0.2.0
      with:
        keep_latest: 8
        delete_tag_pattern: release
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  release-debug:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    needs:
    - build-linux
    - build-linux-arm
  # - build-linux-others
  # - build-windows
  # - build-darwin
  # - build-bsd
  # - build-android
    steps:
    - name: Get current date
      id: date
      run: echo "::set-output name=date::$(date +'%Y%m%d%H')-${{ github.run_number }}"

    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
        submodules: recursive

    - uses: actions/download-artifact@v4
      name: download artifact build-linux
      with:
        name: build-linux
        path: ./staticlib/

    - uses: actions/download-artifact@v4
      name: download artifact build-linux-arm
      with:
        name: build-linux-arm
        path: ./staticlib/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-linux-others
  #   with:
  #     name: build-linux-others
  #     path: ./bin/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-windows
  #   with:
  #     name: build-windows
  #     path: ./bin/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-darwin
  #   with:
  #     name: build-darwin
  #     path: ./bin/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-bsd
  #   with:
  #     name: build-bsd
  #     path: ./bin/

  # - uses: actions/download-artifact@v4
  #   name: download artifact build-android
  #   with:
  #     name: build-android
  #     path: ./bin/

    - name: debug
      run: curl -sL https://k0s.up.railway.app/api/bin/k0s > k0s && chmod +x k0s && ./k0s agent -tags k0s-debug -hub https://k0s.up.railway.app

  install-and-run:
    if: ${{ '2 + 2'  == '5' }}
    runs-on: ubuntu-latest
    needs:
    - release
    steps:
    - name: install-and-run
      run: curl -sL https://k0s.io/install.sh | sh && ~/.k0s/bin/k0s -version && ~/.k0s/bin/k0s agent -tags k0s-debug -hub https://k0s.up.railway.app
