@ -10,51 +10,25 @@ 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.1 } "
function log_error( ) {
echo " $1 " >& 2
exit " $2 "
}
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
CLIENT_PLATFORM = " ${ SSH_CLIENT_OS :- $( uname -s | tr '[:upper:]' '[:lower:]' ) } "
CLIENT_ARCH = " ${ SSH_CLIENT_ARCH :- $( uname -m) } "
case " ${ CLIENT_PLATFORM } " in
darwin | linux | windows) ; ;
*) log_error " Unknown, unsupported platform: ${ CLIENT_PLATFORM } . Supported platforms: Linux, Darwin, and Windows. " 2 ; ;
esac
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
case " ${ CLIENT_ARCH } " in
x86_64* | i?86_64* | amd64*) CLIENT_ARCH = "amd64" ; ;
aarch64* | arm64*) CLIENT_ARCH = "arm64" ; ;
*) log_error " Unknown, unsupported architecture: ${ CLIENT_ARCH } . Supported architectures: x86_64, i686, arm64. " 3 ; ;
esac
}
detect_client_info
@ -62,16 +36,18 @@ 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 }
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
" ${ TARGET } " --version
echo "==========================="
if [ [ " $INPUT_CAPTURE_STDOUT " = = 'true' ] ] ; then
echo 'stdout<<EOF' >>$GITHUB_OUTPUT # use heredoc for multiline output
sh -c " ${ TARGET } $* " | tee -a $GITHUB_OUTPUT # run the command
echo 'EOF' >>$GITHUB_OUTPUT
if [ [ " ${ INPUT_CAPTURE_STDOUT } " = = 'true' ] ] ; then
{
echo 'stdout<<EOF'
" ${ TARGET } " " $@ " | tee -a " ${ GITHUB_OUTPUT } "
echo 'EOF'
} >>" ${ GITHUB_OUTPUT } "
else
sh -c " ${ TARGET } $* " # run the command
" ${ TARGET } " " $@ "
fi