---
kind: pipeline
type: docker
name: Check messages.po

clone:
  disable: true

trigger:
  event:
    - pull_request

steps:
  - name: clone friendica base
    image: alpine/git
    commands:
      - git clone https://github.com/friendica/friendica.git .
      - git checkout $DRONE_COMMIT_BRANCH
  - name: clone friendica addon
    image: alpine/git
    commands:
      - git clone $DRONE_REPO_LINK addon
      - cd addon/
      - git checkout $DRONE_COMMIT_BRANCH
      - git fetch origin $DRONE_COMMIT_REF
      - git merge $DRONE_COMMIT_SHA
  - name: Run Xgettext for addons
    image: friendicaci/transifex
    commands:
      - /xgettext-addon.sh
  - name: Check update necessary
    image: friendicaci/transifex
    commands:
      - /check-addons.sh
---
kind: pipeline
type: docker
name: php-cs check

clone:
  disable: true

trigger:
  event:
    - pull_request

steps:
  - name: Clone friendica base
    image: alpine/git
    commands:
      - git clone https://github.com/friendica/friendica.git .
      - git checkout $DRONE_COMMIT_BRANCH
  - name: Clone friendica addon
    image: alpine/git
    commands:
      - git clone $DRONE_REPO_LINK addon
      - cd addon/
      - git checkout $DRONE_COMMIT_BRANCH
      - git fetch origin $DRONE_COMMIT_REF
      - git merge $DRONE_COMMIT_SHA
  - name: Install dependencies
    image: composer
    commands:
      - ./bin/composer.phar run cs:install
  - name: Run coding standards check
    image: friendicaci/php-cs
    commands:
      - cd addon/
      - export CHANGED_FILES="$(git diff --name-status ${DRONE_COMMIT_BEFORE}..${DRONE_COMMIT_AFTER} | grep ^A | cut -f2 | sed -e "s/^/addon\\//")"
      - cd ../
      - /check-php-cs.sh
---
kind: pipeline
type: docker
name: continuous-deployment

trigger:
  repo:
    - friendica/friendica-addons
  branch:
    - develop
    - 20*-rc
  event:
    - push

node:
  node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca

clone:
  disable: true

steps:
  - name: Clone friendica base
    image: alpine/git
    commands:
      - git clone https://github.com/friendica/friendica.git .
      - git checkout $DRONE_COMMIT_BRANCH
  - name: Clone friendica addon
    image: alpine/git
    commands:
      - git clone $DRONE_REPO_LINK addon
      - cd addon/
      - git checkout $DRONE_COMMIT_BRANCH
      - git fetch origin $DRONE_COMMIT_REF
      - git merge $DRONE_COMMIT_SHA
  - name: Create artifacts
    image: debian
    commands:
      - apt-get update
      - apt-get install bzip2
      - export VERSION="$(cat VERSION)"
      - export RELEASE="friendica-addons-$VERSION"
      - export ARTIFACT="$RELEASE.tar.gz"
      - mkdir ./build
      - # Create artifact for friendica-addons
      - tar
        --exclude='.tx'
        --exclude='.git'
        --exclude='.editorconfig'
        --exclude='.gitattributes'
        --exclude='.gitignore'
        --exclude='.drone.yml'
        --exclude='**/*/messages.po'
        -cvzf ./build/$ARTIFACT addon/
      - # calculate SHA256 checksum
      - cd ./build
      - sha256sum "$ARTIFACT" > "$ARTIFACT.sum256"
      - chmod 664 ./*
      - ls -lh
      - # output the sha256 sum for checking
      - cat "$ARTIFACT.sum256"
      - sha256sum "$ARTIFACT"
  - name: Sign artifacts
    image: plugins/gpgsign
    settings:
      key:
        from_secret: gpg_key
      passphrase:
        from_secret: gpg_password
      files:
        - build/*
      exclude:
        - build/*.sum256
      detach_sign: true
  - name: Upload artifacts
    image: alpine
    environment:
      LFTP_HOST:
        from_secret: sftp_host
      LFTP_USER:
        from_secret: sftp_user
      LFTP_KEY:
        from_secret: ssh_key
      LFTP_PORT: "22"
      LFTP_SOURCE: "build"
      LFTP_TARGET: "/http"
    commands:
      - apk add lftp openssh openssl
      - touch drone.key
      - chmod 400 drone.key
      - echo "$LFTP_KEY" | openssl base64 -A -d > drone.key
      - lftp -c "
        set net:timeout 5;
        set net:max-retries 2;
        set net:reconnect-interval-base 5;
        set sftp:auto-confirm true;
        set sftp:connect-program 'ssh -q -a -x -i drone.key';
        connect sftp://$LFTP_USER:@$LFTP_HOST:$LFTP_PORT;
        cd $LFTP_TARGET;
        mput $LFTP_SOURCE/*;
        "
      - rm drone.key

volumes:
  - name: cache
    host:
      path: /tmp/drone-cache
---
kind: pipeline
type: docker
name: release-deployment

trigger:
  repo:
    - friendica/friendica-addons
  branch:
    - stable
  event:
    - tag

node:
  node: releaser # This prevents executing this pipeline at other servers than drone.friendi.ca

clone:
  disable: true

steps:
  - name: Clone friendica base
    image: alpine/git
    commands:
      - git clone https://github.com/friendica/friendica.git .
      - git checkout $DRONE_COMMIT_BRANCH
  - name: Clone friendica addon
    image: alpine/git
    commands:
      - git clone $DRONE_REPO_LINK addon
      - cd addon/
      - git checkout $DRONE_COMMIT_BRANCH
      - git fetch origin $DRONE_COMMIT_REF
      - git merge $DRONE_COMMIT_SHA
  - name: Create artifacts
    image: debian
    commands:
      - apt-get update
      - apt-get install bzip2
      - export VERSION="$(cat VERSION)"
      - export RELEASE="friendica-addons-$VERSION"
      - export ARTIFACT="$RELEASE.tar.gz"
      - mkdir ./build
      - # Create artifact for friendica-addons
      - tar
        --exclude='.tx'
        --exclude='.git'
        --exclude='.editorconfig'
        --exclude='.gitattributes'
        --exclude='.gitignore'
        --exclude='.drone.yml'
        --exclude='**/*/messages.po'
        -cvzf ./build/$ARTIFACT addon/
      - # calculate SHA256 checksum
      - cd ./build
      - sha256sum "$ARTIFACT" > "$ARTIFACT.sum256"
      - chmod 664 ./*
      - ls -lh
      - # output the sha256 sum for checking
      - cat "$ARTIFACT.sum256"
      - sha256sum "$ARTIFACT"
  - name: Sign artifacts
    image: plugins/gpgsign
    settings:
      key:
        from_secret: gpg_key
      passphrase:
        from_secret: gpg_password
      files:
        - build/*
      exclude:
        - build/*.sum256
      detach_sign: true
  - name: Upload artifacts
    image: alpine
    environment:
      LFTP_HOST:
        from_secret: sftp_host
      LFTP_USER:
        from_secret: sftp_user
      LFTP_KEY:
        from_secret: ssh_key
      LFTP_PORT: "22"
      LFTP_SOURCE: "build"
      LFTP_TARGET: "/http"
    commands:
      - apk add lftp openssh openssl
      - touch drone.key
      - chmod 400 drone.key
      - echo "$LFTP_KEY" | openssl base64 -A -d > drone.key
      - lftp -c "
        set net:timeout 5;
        set net:max-retries 2;
        set net:reconnect-interval-base 5;
        set sftp:auto-confirm true;
        set sftp:connect-program 'ssh -q -a -x -i drone.key';
        connect sftp://$LFTP_USER:@$LFTP_HOST:$LFTP_PORT;
        cd $LFTP_TARGET;
        mput $LFTP_SOURCE/*;
        "
      - rm drone.key

volumes:
  - name: cache
    host:
      path: /tmp/drone-cache
