# gh_install vi/websocat websocat.x86_64-unknown-linux-musl gh_install() { echo "Number of arguments: $#" echo "All arguments as separate words: $@" echo "All arguments as a single string: $*" if [[ $# -ne 3 ]]; then echo "Please set repo, arch, and filename" return 1 fi local repo="$1" local arch="$2" local filename="$3" echo "Set repo: $repo, arch: $arch, filename: $filename" local url local count=0 while [[ -z "$url" && $count -lt 5 ]]; do content=$(curl -s -L -H "Accept: application/vnd.github+json" "https://api.github.com/repos/$repo/releases") url=$(echo "$content" | jq -r --arg arch "$arch" '.[0] | .assets[] | .browser_download_url | select(endswith($arch))') count=$((count + 1)) done if [[ -z "$url" ]]; then echo "Failed to find a valid download URL after $count attempts." return 1 fi echo "Download URL: $url" wget -q "$url" -O "$filename" && echo "Downloaded $filename successfully." || echo "Failed to download $filename." } check_installed() { if [ "$#" -ne 1 ]; then echo "Usage: check_installed " return 1 fi if which "$1" &>/dev/null; then >&2 echo "$1 is installed" >&1 echo 0 else >&2 echo "$1 is not installed" >&1 echo 1 fi } # check_installed docker 1>/dev/null # check_installed docker 2>/dev/null # check_installed docker &>/dev/null # Utility functions for managing processes ps_kill() { echo "Number of arguments: $#" echo "All arguments as separate words: $@" echo "All arguments as a single string: $*" if [[ $# -ne 1 ]]; then echo "Please set program" return 1 fi program="$1" ps -A -o tid,cmd | grep -v grep | grep "$program" | awk '{print $1}' | xargs -I {} /bin/bash -c 'sudo kill -9 {} ' } install_docker() { if ! which docker &>/dev/null; then echo "Docker is not installed. Installing..." curl -fsSL https://get.docker.com | sh sudo systemctl --now enable docker echo "Docker installed successfully." else echo "Docker is already installed." fi } create_user() { if [ "$#" -ne 1 ]; then echo "Usage: create_user " return 1 fi export USERNAME="$1" export MUID=$(id -u) export MGID=$(id -g) # add user without password sudo groupadd $USERNAME # same uid with host user # sudo useradd -u $MUID -g $MGID -m -s /bin/bash $USERNAME sudo useradd -g $MGID -m -s /bin/bash $USERNAME sudo passwd -d $USERNAME sudo usermod -a -G sudo $USERNAME sudo usermod -a -G $USERNAME $USERNAME install_docker sudo usermod -a -G docker $USERNAME echo "User $USERNAME created and added to sudo and docker groups." }