#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail export GITHUB="true" GITHUB_ACTION_PATH="${GITHUB_ACTION_PATH%/}" DRONE_SSH_RELEASE_URL="${DRONE_SSH_RELEASE_URL:-https://github.com/appleboy/drone-ssh/releases/download}" DRONE_SSH_VERSION="${DRONE_SSH_VERSION:-1.8.0}" function detect_client_info() { if [ -n "${SSH_CLIENT_OS-}" ]; then CLIENT_PLATFORM="${SSH_CLIENT_OS}" else local kernel kernel="$(uname -s)" case "${kernel}" in Darwin) CLIENT_PLATFORM="darwin" ;; Linux) CLIENT_PLATFORM="linux" ;; Windows) CLIENT_PLATFORM="windows" ;; *) echo "Unknown, unsupported platform: ${kernel}." >&2 echo "Supported platforms: Linux, Darwin and Windows." >&2 echo "Bailing out." >&2 exit 2 ;; esac fi if [ -n "${SSH_CLIENT_ARCH-}" ]; then CLIENT_ARCH="${SSH_CLIENT_ARCH}" else local machine machine="$(uname -m)" case "${machine}" in x86_64* | i?86_64* | amd64*) CLIENT_ARCH="amd64" ;; aarch64* | arm64*) CLIENT_ARCH="arm64" ;; *) echo "Unknown, unsupported architecture (${machine})." >&2 echo "Supported architectures x86_64, i686, arm64." >&2 echo "Bailing out." >&2 exit 3 ;; esac fi } detect_client_info DOWNLOAD_URL_PREFIX="${DRONE_SSH_RELEASE_URL}/v${DRONE_SSH_VERSION}" CLIENT_BINARY="drone-ssh-${DRONE_SSH_VERSION}-${CLIENT_PLATFORM}-${CLIENT_ARCH}" TARGET="${GITHUB_ACTION_PATH}/${CLIENT_BINARY}" echo "Will download ${CLIENT_BINARY} from ${DOWNLOAD_URL_PREFIX}" curl -fsSL --retry 5 --keepalive-time 2 "${DOWNLOAD_URL_PREFIX}/${CLIENT_BINARY}" -o ${TARGET} chmod +x ${TARGET} echo "======= CLI Version =======" sh -c "${TARGET} --version" # print version echo "===========================" if [[ "$INPUT_CAPTURE_STDOUT" == 'true' ]]; then echo 'stdout<> $GITHUB_OUTPUT # use heredoc for multiline output sh -c "${TARGET} $*" | tee -a $GITHUB_OUTPUT # run the command echo 'EOF' >> $GITHUB_OUTPUT else sh -c "${TARGET} $*" # run the command fi