name: publish on: pull_request: branches: ["main"] types: [closed] jobs: publish-to-site: name: Publish the document to the site runs-on: ubuntu-latest if: github.event.pull_request.merged == true env: RCLONE_CONFIG_FTP_TYPE: ftp RCLONE_CONFIG_FTP_HOST: ${{ secrets.FTP_SERVER }} RCLONE_CONFIG_FTP_USER: ${{ secrets.FTP_USERNAME }} RCLONE_CONFIG_FTP_PASS: ${{ secrets.FTP_PASSWORD }} RCLONE_CONFIG_FTP_TLS: false RCLONE_CONFIG_FTP_EXPLICIT_TLS: true FTP_SERVER_DIR: ${{ secrets.FTP_SERVER_DIR }} steps: - name: Checkout merge-commit uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.merge_commit_sha }} fetch-depth: 2 - name: Upload files to the site run: | sudo -v ; curl https://rclone.org/install.sh | sudo bash options='-v' git diff ${{ github.event.pull_request.merge_commit_sha }}^ --name-status | { while read line; do set $line case $1 in R*) echo "[RENAME] $2 -> $3" echo "> deletefile ftp:${FTP_SERVER_DIR}$2" rclone deletefile ftp:${FTP_SERVER_DIR}$2 $options echo "> copyto ./$3 ftp:${FTP_SERVER_DIR}$3" rclone copyto ./$3 ftp:${FTP_SERVER_DIR}$3 $options echo "> rmdir ftp:${FTP_SERVER_DIR}${2%/*}" rclone rmdir ftp:${FTP_SERVER_DIR}${2%/*} $options ;; M) echo "[MODIFY] $2" echo "> copyto ./$2 ftp:${FTP_SERVER_DIR}$2" rclone copyto ./$2 ftp:${FTP_SERVER_DIR}$2 $options ;; D) echo "[DELETE] $2" echo "> deletefile ftp:${FTP_SERVER_DIR}$2" rclone deletefile ftp:${FTP_SERVER_DIR}$2 $options echo "> rmdir ftp:${FTP_SERVER_DIR}${2%/*}" rclone rmdir ftp:${FTP_SERVER_DIR}${2%/*} $options ;; A) echo "[ADD] $2" echo "> copyto ./$2 ftp:${FTP_SERVER_DIR}$2" rclone copyto ./$2 ftp:${FTP_SERVER_DIR}$2 $options ;; esac done }