name: remote ssh command
on: [push]

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

jobs:

  build:
    name: Build
    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: 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: 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