kind: pipeline
type: docker
name: Upstreaming

steps:
  - name: "Sync upstream to local"
    image: alpine/git
    when:
      event:
        - cron
        - promote
      target:
        - upstream
      branch:
        - core
    environment:
      GITEA_SSH_KEY:
        from_secret: gitea_ssh_key
    commands:
      - ./.drone/setup_ssh.sh
      - git fetch
      - git checkout devos
      - git remote add devos git@git.b12f.io:pub-solar/devos
      - git remote set-url origin git@git.b12f.io:pub-solar/os
      - git fetch --all
      - git merge -X theirs devos/core
      - git push origin devos

  - name: "Sync branch with upstream"
    image: alpine/git
    when:
      status:
        - success
      event:
        - cron
        - promote
      target:
        - upstream
    environment:
      GITEA_SSH_KEY:
        from_secret: gitea_ssh_key
    commands:
      - ./.drone/setup_ssh.sh
      - ./.drone/upstream-branch.sh

  - name: "Open pull request for failed merge"
    image: nixery.dev/shell/tea
    when:
      status:
        - failure
      event:
        - cron
        - promote
      target:
        - upstream
      branch:
        - core
    environment:
      TEA_CONFIG:
        from_secret: tea_config
    commands:
      - mkdir -p ~/.config/tea
      - echo "$$TEA_CONFIG" > ~/.config/tea/config.yml
      - tea pulls create --base core --head devos

  - name: "Notify matrix"
    image: plugins/matrix
    when:
      status:
        - success
        - failure
      event:
        - cron
        - promote
      target:
        - upstream
    settings:
      homeserver: https://matrix.pub.solar
      roomid: dfQBqwkhIzrFjMSsxy:pub.solar
      username:
        from_secret: matrix_username
      password:
        from_secret: matrix_password
      template: "Upstreaming {{ build.status }} [{{ build.branch }}#{{ truncate build.commit 8 }}]({{ build.link }}) by {{ build.author }}. [Pull requests](https://git.b12f.io/pub-solar/os/pulls)"