kind: pipeline
type: docker
name: "Release firmware"

platform:
  os: linux
  arch: amd64

steps:
  - name: "Update submodules"
    image: alpine/git
    commands:
      - git submodule sync
      - git -c protocol.version=2 submodule update --init --force --recursive --jobs 4
      - git submodule foreach git config --local gc.auto 0
      - git log -1 --format='%H'

  - name: "Build clean"
    image: hfdj/fztools
    pull: never
    commands:
      - export DIST_SUFFIX=${DRONE_TAG}c
      - export WORKFLOW_BRANCH_OR_TAG=release-cfw
      - export FORCE_NO_DIRTY=yes
      - export FBT_GIT_SUBMODULE_SHALLOW=1
      - rm -rf applications/main/clock_app/resources/apps/
      - rm -rf build/
      - rm -rf dist/
      - rm -rf .sconsign.dblite
      - ./fbt COMPACT=1 DEBUG=0 updater_package
      - mkdir artifacts-clean
      - mv dist/f7-C/* artifacts-clean/
      - ls -laS artifacts-clean
      - ls -laS artifacts-clean/f7-update-${DRONE_TAG}c
    environment:
      FBT_TOOLS_CUSTOM_LINK:
        from_secret: fbt_link

  - name: "Build default"
    image: hfdj/fztools
    pull: never
    commands:
      - export DIST_SUFFIX=${DRONE_TAG}
      - export WORKFLOW_BRANCH_OR_TAG=release-cfw
      - export FORCE_NO_DIRTY=yes
      - export FBT_GIT_SUBMODULE_SHALLOW=1
      - wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
      - tar zxf all-the-apps-base.tgz
      - mkdir -p applications/main/clock_app/resources/apps
      - mkdir -p applications/main/clock_app/resources/apps_data
      - cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
      - cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
      - rm -rf base_pack_build
      - rm -rf all-the-apps-base.tgz
      - rm -f build/f7-firmware-C/toolbox/version.*
      - ./fbt COMPACT=1 DEBUG=0 updater_package
      - mkdir artifacts-default
      - mv dist/f7-C/* artifacts-default/
      - ls -laS artifacts-default
      - ls -laS artifacts-default/f7-update-${DRONE_TAG}
    environment:
      FBT_TOOLS_CUSTOM_LINK:
        from_secret: fbt_link

  - name: "Build with extra apps"
    image: hfdj/fztools
    pull: never
    commands:
      - wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-extra.tgz
      - tar zxf all-the-apps-extra.tgz
      - mkdir -p applications/main/clock_app/resources/apps
      - cp -R extra_pack_build/artifacts-extra/* applications/main/clock_app/resources/apps/
      - rm -rf extra_pack_build
      - export DIST_SUFFIX=${DRONE_TAG}e
      - export WORKFLOW_BRANCH_OR_TAG=release-cfw
      - export FORCE_NO_DIRTY=yes
      - export FBT_GIT_SUBMODULE_SHALLOW=1
      - rm -f build/f7-firmware-C/toolbox/version.*
      - ./fbt COMPACT=1 DEBUG=0 updater_package
      - mkdir artifacts-extra-apps
      - mv dist/f7-C/* artifacts-extra-apps/
      - ls -laS artifacts-extra-apps
      - ls -laS artifacts-extra-apps/f7-update-${DRONE_TAG}e
      - sed -i 's/(version)/'${DRONE_TAG}'/g' CHANGELOG.md
      - echo '# Install FW via Web Updater:' >> CHANGELOG.md
      - echo '### [Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/${DRONE_TAG}/flipper-z-f7-update-'${DRONE_TAG}'.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}') > ` `' >> CHANGELOG.md
      - echo '' >> CHANGELOG.md
      - echo '### [Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}'e) > `e`' >> CHANGELOG.md
      - echo '' >> CHANGELOG.md
      - echo '### [No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'c.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}'c) > `c`' >> CHANGELOG.md
    environment:
      FBT_TOOLS_CUSTOM_LINK:
        from_secret: fbt_link

  - name: "Bundle self-update packages"
    image: joshkeegan/zip
    commands:
      - cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.tgz .
      - cp artifacts-clean/flipper-z-f7-update-${DRONE_TAG}c.tgz .
      - cp artifacts-default/flipper-z-f7-update-${DRONE_TAG}.tgz .
      - zip -r artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.zip artifacts-extra-apps/f7-update-${DRONE_TAG}e
      - zip -r artifacts-clean/flipper-z-f7-update-${DRONE_TAG}c.zip artifacts-clean/f7-update-${DRONE_TAG}c
      - zip -r artifacts-default/flipper-z-f7-update-${DRONE_TAG}.zip artifacts-default/f7-update-${DRONE_TAG}
      - tar czpf artifacts-default/flipper-z-any-scripts-${DRONE_TAG}.tgz scripts
      - rm -rf artifacts-extra-apps/f7-update-${DRONE_TAG}
      - rm -rf artifacts-clean/f7-update-${DRONE_TAG}
      - rm -rf artifacts-default/f7-update-${DRONE_TAG}
      - ls -laS artifacts-extra-apps
      - ls -laS artifacts-clean
      - ls -laS artifacts-default
      - mv artifacts-default/ ${DRONE_TAG}
      - ls -laS ${DRONE_TAG}

  - name: "Upload default to updates srv"
    image: appleboy/drone-scp:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      target:
        from_secret: dep_target_new
      source:
        - ${DRONE_TAG}/*.tgz
        - ${DRONE_TAG}/*.zip
        - ${DRONE_TAG}/*.json
        - ${DRONE_TAG}/*.elf
        - ${DRONE_TAG}/*.dfu
        - ${DRONE_TAG}/*.bin

  - name: "Upload extra apps version to updates srv"
    image: appleboy/drone-scp:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      target:
        from_secret: dep_target_extra
      source: flipper-z-f7-update-${DRONE_TAG}e.tgz

  - name: "Upload clean version to updates srv"
    image: appleboy/drone-scp:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      target:
        from_secret: dep_target_extra
      source: flipper-z-f7-update-${DRONE_TAG}c.tgz

  - name: "Do Github release"
    image: ddplugins/github-release
    pull: never
    settings:
      github_url: https://github.com
      repo_owner:
        from_secret: github_repoowner
      api_key:
        from_secret: github_apikey
      files:
        - ${DRONE_TAG}/*.tgz
        - ${DRONE_TAG}/*.zip
        - artifacts-extra-apps/*.tgz
        - artifacts-clean/*.tgz
      title: ${DRONE_TAG}
      note: CHANGELOG.md
      checksum:
        - md5
        - sha1
        - crc32

  - name: "Trigger update server reindex"
    image: hfdj/fztools
    pull: never
    environment:
      UPD_KEY:
        from_secret: git_update_serv_token
      UPD_URL:
        from_secret: git_update_server_url
    commands:
      - curl -X POST -F 'key='$UPD_KEY'' $UPD_URL

  - name: "Send discord notification"
    image: hfdj/fztools
    pull: never
    environment:
      DISCORD_WEBHOOK:
        from_secret: dis_release_webhook
    commands:
      - wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
      - chmod +x ./discord.sh
      - sed -n '/## Main changes/,/## Other changes/p' CHANGELOG.md | sed -e 's/## Main changes//' -e 's/## Other changes//' > changelogcut.txt
      - head -c 1200 changelogcut.txt > changelogcutfin.txt
      - truncate -s -1 changelogcutfin.txt
      - tail -c +2 changelogcutfin.txt > changelogready.txt
      - rm -f changelogcut.txt
      - rm -f changelogcutfin.txt
      - echo '' >> changelogready.txt
      - echo '## [Read full changelog](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/'${DRONE_TAG}')' >> changelogready.txt
      - sed -i 's/(releasever)/'${DRONE_TAG}'/g' .ci_files/release_msg_discord.txt
      - sed -i 's/(releasever)/'${DRONE_TAG}'/g' .ci_files/release_msg_telegram.txt
      - cp .ci_files/release_msg_telegram.txt tg_release_message.tpl
      - ./discord.sh --title "Main changes" --description "$(jq -Rs . <changelogready.txt | cut -c 2- | rev | cut -c 2- | rev)" --timestamp --text "$(jq -Rs . <.ci_files/release_msg_discord.txt | cut -c 2- | rev | cut -c 2- | rev)" 

  - name: "Send notification to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid
      format: markdown
      message_file: tg_release_message.tpl

  - name: "Send default build to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid
      format: markdown
      message: "Default build:"
      document:
        - ${DRONE_TAG}/flipper-z-f7-update-${DRONE_TAG}.tgz

  - name: "Send clean build to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid
      format: markdown
      message: "Build with only main apps:"
      document:
        - flipper-z-f7-update-${DRONE_TAG}c.tgz

  - name: "Send extra pack build to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid
      format: markdown
      message: "Build with extra apps:"
      document:
        - flipper-z-f7-update-${DRONE_TAG}e.tgz

trigger:
  event:
    - tag

node:
  typ: dev2

---
kind: pipeline
type: docker
name: "Dev build"

platform:
  os: linux
  arch: amd64

steps:
  - name: "Update submodules"
    image: alpine/git
    commands:
      - git submodule sync
      - git -c protocol.version=2 submodule update --init --force --recursive --jobs 4
      - git submodule foreach git config --local gc.auto 0
      - git log -1 --format='%H'

  - name: "Build dev clean"
    image: hfdj/fztools
    pull: never
    commands:
      - export DIST_SUFFIX=${DRONE_BUILD_NUMBER}c
      - export WORKFLOW_BRANCH_OR_TAG=dev-cfw
      - export FORCE_NO_DIRTY=yes
      - export FBT_GIT_SUBMODULE_SHALLOW=1
      - rm -rf applications/main/clock_app/resources/apps/
      - rm -rf build/
      - rm -rf dist/
      - rm -rf .sconsign.dblite
      - ./fbt COMPACT=1 DEBUG=0 updater_package
      - mkdir artifacts-clean
      - mv dist/f7-C/* artifacts-clean/
      - ls -laS artifacts-clean
      - ls -laS artifacts-clean/f7-update-${DRONE_BUILD_NUMBER}c
    environment:
      FBT_TOOLS_CUSTOM_LINK:
        from_secret: fbt_link


  - name: "Build dev default"
    image: hfdj/fztools
    pull: never
    commands:
      - export DIST_SUFFIX=${DRONE_BUILD_NUMBER}
      - export WORKFLOW_BRANCH_OR_TAG=dev-cfw
      - export FORCE_NO_DIRTY=yes
      - export FBT_GIT_SUBMODULE_SHALLOW=1
      - wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
      - tar zxf all-the-apps-base.tgz
      - mkdir -p applications/main/clock_app/resources/apps
      - mkdir -p applications/main/clock_app/resources/apps_data
      - cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
      - cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
      - rm -rf base_pack_build
      - rm -rf all-the-apps-base.tgz
      - rm -f build/f7-firmware-C/toolbox/version.*
      - ./fbt COMPACT=1 DEBUG=0 updater_package
      - mkdir artifacts-default
      - mv dist/f7-C/* artifacts-default/
      - ls -laS artifacts-default
      - ls -laS artifacts-default/f7-update-${DRONE_BUILD_NUMBER}
    environment:
      FBT_TOOLS_CUSTOM_LINK:
        from_secret: fbt_link

  - name: "Build dev with extra apps"
    image: hfdj/fztools
    pull: never
    commands:
      - wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-extra.tgz
      - tar zxf all-the-apps-extra.tgz
      - mkdir -p applications/main/clock_app/resources/apps
      - cp -R extra_pack_build/artifacts-extra/* applications/main/clock_app/resources/apps/
      - rm -rf extra_pack_build
      - export DIST_SUFFIX=${DRONE_BUILD_NUMBER}e
      - export WORKFLOW_BRANCH_OR_TAG=dev-cfw
      - export FORCE_NO_DIRTY=yes
      - export FBT_GIT_SUBMODULE_SHALLOW=1
      - rm -f build/f7-firmware-C/toolbox/version.*
      - ./fbt COMPACT=1 DEBUG=0 updater_package
      - mkdir artifacts-extra-apps
      - mv dist/f7-C/* artifacts-extra-apps/
      - ls -laS artifacts-extra-apps
      - ls -laS artifacts-extra-apps/f7-update-${DRONE_BUILD_NUMBER}e
    environment:
      FBT_TOOLS_CUSTOM_LINK:
        from_secret: fbt_link

  - name: "Bundle self-update packages"
    image: joshkeegan/zip
    commands:
      - cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz .
      - cp artifacts-clean/flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz .
      - cp artifacts-default/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz .
      - rm -rf artifacts-default/f7-update-${DRONE_BUILD_NUMBER}
      - ls -laS artifacts-default
      - mv artifacts-default/ dev
      - ls -laS dev

  - name: "Clean dev folder"
    image: appleboy/drone-ssh:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      command_timeout: 30s
      script:
        - cd web/unleashedflip.com/public_html/fw/dev && rm -f ./*

  - name: "Upload default to updates srv"
    image: appleboy/drone-scp:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      target:
        from_secret: dep_target_new
      source:
        - dev/*.tgz
        - dev/*.zip
        - dev/*.json
        - dev/*.elf
        - dev/*.dfu
        - dev/*.bin

  - name: "Upload extra apps version to updates srv"
    image: appleboy/drone-scp:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      target:
        from_secret: dep_target_extra
      source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz

  - name: "Upload clean version to updates srv"
    image: appleboy/drone-scp:linux-amd64
    settings:
      host:
        from_secret: dep_host
      username:
        from_secret: dep_user
      password:
        from_secret: dep_passwd
      port:
        from_secret: dep_port
      target:
        from_secret: dep_target_extra
      source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz

  - name: "Trigger update server reindex"
    image: hfdj/fztools
    pull: never
    environment:
      UPD_KEY:
        from_secret: git_update_serv_token
      UPD_URL:
        from_secret: git_update_server_url
    commands:
      - curl -X POST -F 'key='$UPD_KEY'' $UPD_URL

  - name: "Send discord notification"
    image: hfdj/fztools
    pull: never
    environment:
      DISCORD_WEBHOOK:
        from_secret: dis_dev_webhook
    commands:
      - wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
      - chmod +x ./discord.sh
      - sed -n '/## Main changes/,/## Other changes/p' CHANGELOG.md | sed -e 's/## Main changes//' -e 's/## Other changes//' > changelogcut.txt
      - head -c 1200 changelogcut.txt > changelogcutfin.txt
      - truncate -s -1 changelogcutfin.txt
      - tail -c +2 changelogcutfin.txt > changelogready.txt
      - rm -f changelogcut.txt
      - rm -f changelogcutfin.txt
      - echo '' >> changelogready.txt
      - echo '## [Read full changelog](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md)' >> changelogready.txt
      - sed -i 's/(buildnum)/'${DRONE_BUILD_NUMBER}'/g' .ci_files/devbuild_msg_discord.txt
      - sed -i 's/(commitsha)/'${DRONE_COMMIT_SHA}'/g' .ci_files/devbuild_msg_discord.txt
      - sed -i 's/(buildnum)/'${DRONE_BUILD_NUMBER}'/g' .ci_files/devbuild_msg_telegram.txt
      - sed -i 's/(commitsha)/'${DRONE_COMMIT_SHA}'/g' .ci_files/devbuild_msg_telegram.txt
      - cp .ci_files/devbuild_msg_telegram.txt tg_dev_message.tpl
      - ./discord.sh --title "Changelog" --description "$(jq -Rs . <changelogready.txt | cut -c 2- | rev | cut -c 2- | rev)" --timestamp --text "$(jq -Rs . <.ci_files/devbuild_msg_discord.txt | cut -c 2- | rev | cut -c 2- | rev)" 

  - name: "Send message to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid_dev
      format: markdown
      message_file: tg_dev_message.tpl

  - name: "Send default build to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid_dev
      format: markdown
      message: "Default Build:"
      document:
        - dev/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz

  - name: "Send clean build to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid_dev
      format: markdown
      message: "Clean (Main apps only) Build:"
      document:
        - flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz

  - name: "Send extra pack build to telegram"
    image: appleboy/drone-telegram
    settings:
      token:
        from_secret: tgtoken
      to:
        from_secret: tgid_dev
      format: markdown
      message: "Build with extra apps:"
      document:
        - flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz

trigger:
  branch:
    - dev
  event:
    - push

node:
  typ: dev2
