# This is a basic workflow to help you get started with Actions

name: Upload to the upload server

# Controls when the workflow will run
on:
  push:
    branches: develop

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      - name: getting owner-repo name
        shell: bash
        run: echo "##[set-output name=owner-repo;]$(echo ${GITHUB_REPOSITORY})"
        id: owner-repo_name
      - name: get all tags
        uses: octokit/request-action@v2.x
        id: get_all_tags
        with:
          route: GET /repos/${{ steps.owner-repo_name.outputs.owner-repo }}/git/matching-refs/tags
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: generate tags file
        uses: "finnp/create-file-action@master"
        env:
          FILE_NAME: "tags.json"
          FILE_DATA: "${{ steps.get_all_tags.outputs.data }}"
      - name: getting branch name
        shell: bash
        run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
        id: branch_name
      - name: getting tag name
        shell: bash
        run: echo "##[set-output name=tag;]$(echo ${GITHUB_REF_NAME})"
        id: tag_name
      - name: zipping files
        run: zip -r ${{ github.event.repository.name }}_${{ steps.tag_name.outputs.tag }}.zip . -x '*.git*' '*.idea*'
      - name: echo-step
        run: echo "${{ github.event.release.target_commitish }}"
      
      - name: uploading archive to prod
        if: ${{ steps.branch_name.outputs.branch == 'main' || github.event.release.target_commitish == 'main'}}
        uses: wlixcc/SFTP-Deploy-Action@v1.0
        with:
          username: ${{ secrets.USERNAME }}
          server: ${{ secrets.SERVER }}
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
          local_path: ${{ github.event.repository.name }}_${{ steps.tag_name.outputs.tag }}.zip
          remote_path: '${{ secrets.STG_UPLOAD_URL }}'
          args: '-o ConnectTimeout=5'
          
      - name: uploading archive to staging
        if: ${{ steps.branch_name.outputs.branch == 'develop' || github.event.release.target_commitish == 'develop' }}
        uses: wlixcc/SFTP-Deploy-Action@v1.0
        with:
          username: ${{ secrets.USERNAME }}
          server: ${{ secrets.SERVER }}
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
          local_path: ${{ github.event.repository.name }}_${{ steps.tag_name.outputs.tag }}.zip
          remote_path: '${{ secrets.STG_UPLOAD_URL }}'
          args: '-o ConnectTimeout=5'

