diff --git a/.github/workflows/gen-diffs.yaml b/.github/workflows/gen-diffs.yaml new file mode 100644 index 0000000000..9611b342d6 --- /dev/null +++ b/.github/workflows/gen-diffs.yaml @@ -0,0 +1,37 @@ +name: Generate Kicad Diffs + +on: + push: + paths: + - 'hardware/**' + +jobs: + generate: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + fetch-depth: 0 + + - name: Install ncftp, kicad, and tk bindings + run: | + sudo add-apt-repository ppa:js-reynaud/kicad-5.1 + sudo apt-get update + sudo apt-get install ncftp kicad python3-tk + + - name: Get KiCad-Diff + run: git clone https://github.com/Gasman2014/KiCad-Diff.git + + - name: Set FTP variables + run: | + if [ "${{github.event_name}}" = "push" ] && [ "${{github.ref}}" = "refs/heads/master" ]; then + echo "::set-env name=RUSEFI_FTP_SERVER::${{secrets.RUSEFI_FTP_SERVER}}"; + echo "::set-env name=RUSEFI_DOXYGEN_FTP_USER::${{secrets.RUSEFI_DOXYGEN_FTP_USER}}"; + echo "::set-env name=RUSEFI_DOXYGEN_FTP_PASS::${{secrets.RUSEFI_DOXYGEN_FTP_PASS}}"; + fi + + - name: Generate diffs + working-directory: ./hardware + run: bash generate_diffs.sh diff --git a/hardware/generate_diffs.sh b/hardware/generate_diffs.sh new file mode 100644 index 0000000000..c41d23ede7 --- /dev/null +++ b/hardware/generate_diffs.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +function gendiffs() { + ../KiCad-Diff/kidiff_linux.py -w -s Git -b $(git rev-parse --short HEAD~1) -a $(git rev-parse --short HEAD) -d :0 $1 + if [ -d $(dirname "$1")/plots ] && [ -n "$RUSEFI_FTP_SERVER" ]; then + echo "mkdir diffs/plots_$(basename "$1" .kicad_pcb)" | ncftp -u "$RUSEFI_DOXYGEN_FTP_USER" -p "$RUSEFI_DOXYGEN_FTP_PASS" "$RUSEFI_FTP_SERVER" + ncftpput -R -v -u "$RUSEFI_DOXYGEN_FTP_USER" -p "$RUSEFI_DOXYGEN_FTP_PASS" "$RUSEFI_FTP_SERVER" /diffs/plots_$(basename "$1" .kicad_pcb) $(dirname "$1")/plots + fi +} +export -f gendiffs + +find . -name "*.kicad_pcb" -exec bash -c 'gendiffs "$0"' {} \;