name: remote ssh command
on: [push]

env:
  FOO: "BAR"
  BAR: "FOO"

jobs:

  testing01:
    name: default flag testing
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v1

    - name: correct password but wrong key
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        key: "1234"
        port: ${{ secrets.PORT }}
        script: whoami

    - name: wrong password but correct key
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: "abcdef"
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        script: whoami

    - name: executing remote ssh commands using password
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: whoami

    - name: executing remote ssh commands using ssh key
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        script: whoami

    - name: multiple command
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        script: |
          whoami
          ls -al

    - name: stop script if command error
      uses: ./
      continue-on-error: true
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        script_stop: true
        sync: true
        debug: true
        script: |
          mkdir abc/def
          ls -al

    - name: ssh key passphrase
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SSH2 }}
        port: ${{ secrets.PORT }}
        passphrase: ${{ secrets.PASSPHRASE }}
        script: |
          whoami
          ls -al

    - name: use insecure cipher
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: |
            ls \
              -lah
        use_insecure_cipher: true

    # https://github.com/appleboy/ssh-action/issues/75#issuecomment-668314271
    - name: Multiline SSH commands interpreted as single lines
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script_stop: true
        script: |
            ls \
              -lah
        use_insecure_cipher: true

    # https://github.com/appleboy/ssh-action/issues/85
    - name: Deployment to multiple hosts with different ports
      uses: ./
      with:
        host: "${{ secrets.HOST }}:${{ secrets.PORT }}"
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: 1024
        script_stop: true
        script: |
            ls \
              -lah
        use_insecure_cipher: true

    # - name: SSH ED25519 Private Key
    #   uses: ./
    #   with:
    #     host: ${{ secrets.TUNNEL_HOST }}
    #     username: ${{ secrets.TUNNEL_USERNAME }}
    #     key: ${{ secrets.ID_ED25519 }}
    #     port: ${{ secrets.TUNNEL_PORT }}
    #     script: whoami

  testing02:
    name: testing with envs
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v1

    - name: pass environment
      uses: ./
      env:
        FOO: "BAR"
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        envs: FOO
        script: |
          echo "I am $FOO, thanks"
          echo "I am $BAR, thanks"

    - name: pass multiple environment
      uses: ./
      env:
        FOO: "BAR"
        BAR: "FOO"
        SHA: ${{ github.sha }}
        PORT: ${{ secrets.PORT }}
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        envs: FOO,BAR,SHA,PORT
        script: |
          echo "I am $FOO, thanks"
          echo "I am $BAR, thanks"
          echo "sha: $SHA"
          echo "port: $PORT"
          sh test.sh

    - name: custom envs format
      uses: ./
      env:
        FOO: "BAR"
        AAA: "BBB"
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        envs: FOO,BAR,AAA
        envs_format: export TEST_{NAME}={VALUE}
        script: |
          echo "I am $TEST_FOO, thanks"
          echo "I am $TEST_BAR, thanks"
          echo "I am $BAR, thanks"
          echo "I am $TEST_AAA, thanks"

  testing03:
    name: git clone and pull
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v1

    - name: clone private repository
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        script_stop: true
        script: |
          git clone https://appleboy:${{ secrets.TEST_TOKEN }}@github.com/go-training/self-runner.git test_repository
          rm -rf test_repository