name: Package Raspbian

on:
  workflow_call:
  workflow_dispatch:

permissions:
  contents: write
  packages: write

jobs:
  build-raspbian_armv7l:
    uses: ./.github/workflows/build_raspbian_armv7l.yml

  package-raspbian_armv7l:
    runs-on: ubuntu-22.04
    needs: build-raspbian_armv7l
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          submodules: recursive
          ref: ${{github.event.pull_request.head.ref}}
          repository: ${{github.event.pull_request.head.repo.full_name}}

      - name: Pull web ui
        uses: dsaltares/fetch-gh-release-asset@master
        with:
          repo: meshtastic/web
          file: build.tar
          target: build.tar
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get release version string
        run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
        id: version

      - name: Download artifacts
        uses: actions/download-artifact@v4
        with:
          name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip
          merge-multiple: true

      - name: Display structure of downloaded files
        run: ls -R

      - name: build .debpkg
        run: |
          mkdir -p .debpkg/DEBIAN
          mkdir -p .debpkg/usr/share/doc/meshtasticd/web
          mkdir -p .debpkg/usr/sbin
          mkdir -p .debpkg/etc/meshtasticd
          mkdir -p .debpkg/usr/lib/systemd/system/
          tar -xf build.tar -C .debpkg/usr/share/doc/meshtasticd/web
          gunzip .debpkg/usr/share/doc/meshtasticd/web/*.gz
          cp release/meshtasticd_linux_armv7l .debpkg/usr/sbin/meshtasticd
          cp bin/config-dist.yaml .debpkg/etc/meshtasticd/config.yaml
          chmod +x .debpkg/usr/sbin/meshtasticd
          cp bin/meshtasticd.service .debpkg/usr/lib/systemd/system/meshtasticd.service
          echo "/etc/meshtasticd/config.yaml" > .debpkg/DEBIAN/conffiles
          chmod +x .debpkg/DEBIAN/conffiles

      - uses: jiro4989/build-deb-action@v3
        with:
          package: meshtasticd
          package_root: .debpkg
          maintainer: Jonathan Bennett
          version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.*
          arch: armhf
          depends: libyaml-cpp0.7, openssl, libulfius2.7
          desc: Native Linux Meshtastic binary.

      - uses: actions/upload-artifact@v4
        with:
          name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb
          overwrite: true
          path: |
            ./*.deb