64 lines
1.2 KiB
Bash
64 lines
1.2 KiB
Bash
|
#!/bin/sh
|
||
|
# shellcheck shell=dash
|
||
|
|
||
|
# A simple script that is run on a remote host to download and install the
|
||
|
# agent binary.
|
||
|
|
||
|
set -u
|
||
|
|
||
|
# For Dev: file:///home/nikos/Projects/prymn/agent/target/debug/prymn_agent
|
||
|
GET_PRYMN_ROOT="${GET_PRYMN_ROOT:?You need to set GET_PRYMN_ROOT to the prymn_agent path for now}"
|
||
|
|
||
|
main() {
|
||
|
# Check for dependencies
|
||
|
check_for_command curl
|
||
|
check_for_command mktemp
|
||
|
|
||
|
local dir
|
||
|
if ! dir="$(mktemp -d)"; then
|
||
|
error "mktemp was not executed successfully"
|
||
|
fi
|
||
|
|
||
|
local file="${dir}/prymn_agent"
|
||
|
local url="${GET_PRYMN_ROOT}"
|
||
|
|
||
|
printf "downloading prymn agent...\n" 1>&2
|
||
|
|
||
|
ensure download "${url}" "${file}"
|
||
|
ensure chmod u+x "$file"
|
||
|
|
||
|
# Run the installer
|
||
|
"$file" --install
|
||
|
local ret=$?
|
||
|
|
||
|
rm "${file}"
|
||
|
rmdir "${dir}"
|
||
|
|
||
|
return $ret
|
||
|
}
|
||
|
|
||
|
download() {
|
||
|
local err
|
||
|
err=$(curl -sSfL "$1" -o "$2" 2>&1)
|
||
|
if [ -n "$err" ]; then
|
||
|
error "$err"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
error() {
|
||
|
printf "Error: %s\n" "$1" >&2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
check_for_command() {
|
||
|
if ! command -v "$1" > /dev/null 2>&1; then
|
||
|
error "get_prymn.sh requires the program '$1' but it was not found in your system."
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
ensure() {
|
||
|
"$@" || error "failed to execute: $*"
|
||
|
}
|
||
|
|
||
|
main "$@" || exit 1
|