From f004e1983865949a29af8dacf781283275d91cf9 Mon Sep 17 00:00:00 2001 From: "Waylon S. Walker" Date: Fri, 27 Sep 2024 08:17:40 -0500 Subject: [PATCH] update installers --- distrobox/distrobox.ini | 1 + docker/Dockerfile | 3 +- installer/BurntSushi_ripgrep.sh | 12 +- installer/MordechaiHadad_bob.sh | 12 +- installer/bitnami-labs_sealed-secrets.sh | 173 ++++++++++++++++++++++ installer/charmbracelet_vhs.sh | 14 +- installer/cli_cli.sh | 14 +- installer/eza-community_eza.sh | 8 +- installer/go-task_task.sh | 22 +-- installer/homeport_termshot.sh | 10 +- installer/install.sh | 15 +- installer/jmorganca_ollama.sh | 8 +- installer/jqlang_jq.sh | 174 ++++++++++++++++++++++ installer/nats-io_nats-server.sh | 181 +++++++++++++++++++++++ installer/nats-io_natscli.sh | 181 +++++++++++++++++++++++ installer/sharkdp_pastel.sh | 10 +- installer/svenstaro_miniserve.sh | 177 ++++++++++++++++++++++ installer/sxyazi_yazi.sh | 10 +- installer/twpayne_chezmoi.sh | 30 ++-- justfile | 11 +- 20 files changed, 988 insertions(+), 78 deletions(-) create mode 100755 installer/bitnami-labs_sealed-secrets.sh create mode 100755 installer/jqlang_jq.sh create mode 100755 installer/nats-io_nats-server.sh create mode 100755 installer/nats-io_natscli.sh create mode 100755 installer/svenstaro_miniserve.sh diff --git a/distrobox/distrobox.ini b/distrobox/distrobox.ini index e18206a..f652fea 100644 --- a/distrobox/distrobox.ini +++ b/distrobox/distrobox.ini @@ -13,6 +13,7 @@ pull=true root=false replace=true start_now=true +extra_mounts=/run/user/$(id -u)/podman/podman.sock:/run/user/$(id -u)/podman/podman.sock [ubuntu] additional_packages="git vim tmux nodejs" diff --git a/docker/Dockerfile b/docker/Dockerfile index 1f8c7f3..69cd017 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -16,12 +16,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ git \ golang \ + podman \ ripgrep \ sqlite3 \ stow \ tmux \ unzip \ - xclip \ + vlc \ xclip \ zsh \ ca-certificates && \ diff --git a/installer/BurntSushi_ripgrep.sh b/installer/BurntSushi_ripgrep.sh index 1ed949a..aea0a70 100755 --- a/installer/BurntSushi_ripgrep.sh +++ b/installer/BurntSushi_ripgrep.sh @@ -19,7 +19,7 @@ function install { PROG="ripgrep" ASPROG="" MOVE="false" - RELEASE="14.1.0" + RELEASE="14.1.1" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,23 +80,23 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_arm64") - URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep-14.1.0-aarch64-apple-darwin.tar.gz" + URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep-14.1.1-aarch64-apple-darwin.tar.gz" FTYPE=".tar.gz" ;; "linux_arm64") - URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep-14.1.0-aarch64-unknown-linux-gnu.tar.gz" + URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep-14.1.1-aarch64-unknown-linux-gnu.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep-14.1.0-armv7-unknown-linux-gnueabihf.tar.gz" + URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep-14.1.1-armv7-unknown-linux-gnueabihf.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep-14.1.0-i686-unknown-linux-gnu.tar.gz" + URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep-14.1.1-i686-unknown-linux-gnu.tar.gz" FTYPE=".tar.gz" ;; "darwin_amd64") - URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep-14.1.0-x86_64-apple-darwin.tar.gz" + URL="https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep-14.1.1-x86_64-apple-darwin.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/MordechaiHadad_bob.sh b/installer/MordechaiHadad_bob.sh index 93efab0..3d62c29 100755 --- a/installer/MordechaiHadad_bob.sh +++ b/installer/MordechaiHadad_bob.sh @@ -19,7 +19,7 @@ function install { PROG="bob" ASPROG="" MOVE="false" - RELEASE="v4.0.1" + RELEASE="v4.0.2" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -85,15 +85,19 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "linux_arm64") - URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.1/bob-linux-aarch64.zip" + URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.2/bob-linux-aarch64.zip" FTYPE=".zip" ;; "linux_amd64") - URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.1/bob-linux-x86_64-openssl.zip" + URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.2/bob-linux-x86_64-openssl.zip" FTYPE=".zip" ;; "darwin_arm") - URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.1/bob-macos-arm-openssl.zip" + URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.2/bob-macos-arm-openssl.zip" + FTYPE=".zip" + ;; + "darwin_amd64") + URL="https://github.com/MordechaiHadad/bob/releases/download/v4.0.2/bob-macos-x86_64-openssl.zip" FTYPE=".zip" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/bitnami-labs_sealed-secrets.sh b/installer/bitnami-labs_sealed-secrets.sh new file mode 100755 index 0000000..cdef787 --- /dev/null +++ b/installer/bitnami-labs_sealed-secrets.sh @@ -0,0 +1,173 @@ +#!/bin/bash +if [ "$DEBUG" == "1" ]; then + set -x +fi +TMP_DIR=$(mktemp -d -t jpillora-installer-XXXXXXXXXX) +function cleanup { + rm -rf $TMP_DIR > /dev/null +} +function fail { + cleanup + msg=$1 + echo "============" + echo "Error: $msg" 1>&2 + exit 1 +} +function install { + #settings + USER="bitnami-labs" + PROG="sealed-secrets" + ASPROG="" + MOVE="false" + RELEASE="v0.27.1" + INSECURE="false" + OUT_DIR="$(pwd)" + GH="https://github.com" + #bash check + [ ! "$BASH_VERSION" ] && fail "Please use bash instead" + [ ! -d $OUT_DIR ] && fail "output directory missing: $OUT_DIR" + #dependency check, assume we are a standard POISX machine + which find > /dev/null || fail "find not installed" + which xargs > /dev/null || fail "xargs not installed" + which sort > /dev/null || fail "sort not installed" + which tail > /dev/null || fail "tail not installed" + which cut > /dev/null || fail "cut not installed" + which du > /dev/null || fail "du not installed" + #choose an HTTP client + GET="" + if which curl > /dev/null; then + GET="curl" + if [[ $INSECURE = "true" ]]; then GET="$GET --insecure"; fi + GET="$GET --fail -# -L" + elif which wget > /dev/null; then + GET="wget" + if [[ $INSECURE = "true" ]]; then GET="$GET --no-check-certificate"; fi + GET="$GET -qO-" + else + fail "neither wget/curl are installed" + fi + #debug HTTP + if [ "$DEBUG" == "1" ]; then + GET="$GET -v" + fi + #optional auth to install from private repos + #NOTE: this also needs to be set on your instance of installer + AUTH="${GITHUB_TOKEN}" + if [ ! -z "$AUTH" ]; then + GET="$GET -H 'Authorization: $AUTH'" + fi + #find OS #TODO BSDs and other posixs + case `uname -s` in + Darwin) OS="darwin";; + Linux) OS="linux";; + *) fail "unknown os: $(uname -s)";; + esac + #find ARCH + if uname -m | grep -E '(arm|arch)64' > /dev/null; then + ARCH="arm64" + + elif uname -m | grep 64 > /dev/null; then + ARCH="amd64" + elif uname -m | grep arm > /dev/null; then + ARCH="arm" #TODO armv6/v7 + elif uname -m | grep 386 > /dev/null; then + ARCH="386" + else + fail "unknown arch: $(uname -m)" + fi + #choose from asset list + URL="" + FTYPE="" + case "${OS}_${ARCH}" in + "darwin_amd64") + URL="https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/kubeseal-0.27.1-darwin-amd64.tar.gz" + FTYPE=".tar.gz" + ;; + "darwin_arm64") + URL="https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/kubeseal-0.27.1-darwin-arm64.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_amd64") + URL="https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/kubeseal-0.27.1-linux-amd64.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_arm") + URL="https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/kubeseal-0.27.1-linux-arm.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_arm64") + URL="https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.1/kubeseal-0.27.1-linux-arm64.tar.gz" + FTYPE=".tar.gz" + ;; + *) fail "No asset for platform ${OS}-${ARCH}";; + esac + #got URL! download it... + echo -n "Downloading" + echo -n " $USER/$PROG" + if [ ! -z "$RELEASE" ]; then + echo -n " $RELEASE" + fi + if [ ! -z "$ASPROG" ]; then + echo -n " as $ASPROG" + fi + echo -n " (${OS}/${ARCH})" + + echo "....." + + #enter tempdir + mkdir -p $TMP_DIR + cd $TMP_DIR + if [[ $FTYPE = ".gz" ]]; then + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | gzip -d - > $PROG || fail "download failed" + elif [[ $FTYPE = ".tar.bz" ]] || [[ $FTYPE = ".tar.bz2" ]]; then + which tar > /dev/null || fail "tar is not installed" + which bzip2 > /dev/null || fail "bzip2 is not installed" + bash -c "$GET $URL" | tar jxf - || fail "download failed" + elif [[ $FTYPE = ".tar.gz" ]] || [[ $FTYPE = ".tgz" ]]; then + which tar > /dev/null || fail "tar is not installed" + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | tar zxf - || fail "download failed" + elif [[ $FTYPE = ".zip" ]]; then + which unzip > /dev/null || fail "unzip is not installed" + bash -c "$GET $URL" > tmp.zip || fail "download failed" + unzip -o -qq tmp.zip || fail "unzip failed" + rm tmp.zip || fail "cleanup failed" + elif [[ $FTYPE = ".bin" ]]; then + bash -c "$GET $URL" > "sealed-secrets_${OS}_${ARCH}" || fail "download failed" + else + fail "unknown file type: $FTYPE" + fi + #search subtree largest file (bin) + TMP_BIN=$(find . -type f | xargs du | sort -n | tail -n 1 | cut -f 2) + if [ ! -f "$TMP_BIN" ]; then + fail "could not find find binary (largest file)" + fi + #ensure its larger than 1MB + #TODO linux=elf/darwin=macho file detection? + if [[ $(du -m $TMP_BIN | cut -f1) -lt 1 ]]; then + fail "no binary found ($TMP_BIN is not larger than 1MB)" + fi + #move into PATH or cwd + chmod +x $TMP_BIN || fail "chmod +x failed" + DEST="$OUT_DIR/$PROG" + if [ ! -z "$ASPROG" ]; then + DEST="$OUT_DIR/$ASPROG" + fi + #move without sudo + OUT=$(mv $TMP_BIN $DEST 2>&1) + STATUS=$? + # failed and string contains "Permission denied" + if [ $STATUS -ne 0 ]; then + if [[ $OUT =~ "Permission denied" ]]; then + echo "mv with sudo..." + sudo mv $TMP_BIN $DEST || fail "sudo mv failed" + else + fail "mv failed ($OUT)" + fi + fi + echo "Downloaded to $DEST" + #done + cleanup +} +install diff --git a/installer/charmbracelet_vhs.sh b/installer/charmbracelet_vhs.sh index 582976d..0b5ab90 100755 --- a/installer/charmbracelet_vhs.sh +++ b/installer/charmbracelet_vhs.sh @@ -19,7 +19,7 @@ function install { PROG="vhs" ASPROG="" MOVE="false" - RELEASE="v0.7.2" + RELEASE="v0.8.0" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,27 +80,27 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_arm64") - URL="https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_Darwin_arm64.tar.gz" + URL="https://github.com/charmbracelet/vhs/releases/download/v0.8.0/vhs_0.8.0_Darwin_arm64.tar.gz" FTYPE=".tar.gz" ;; "darwin_amd64") - URL="https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_Darwin_x86_64.tar.gz" + URL="https://github.com/charmbracelet/vhs/releases/download/v0.8.0/vhs_0.8.0_Darwin_x86_64.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_Linux_arm.tar.gz" + URL="https://github.com/charmbracelet/vhs/releases/download/v0.8.0/vhs_0.8.0_Linux_arm.tar.gz" FTYPE=".tar.gz" ;; "linux_arm64") - URL="https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_Linux_arm64.tar.gz" + URL="https://github.com/charmbracelet/vhs/releases/download/v0.8.0/vhs_0.8.0_Linux_arm64.tar.gz" FTYPE=".tar.gz" ;; "linux_386") - URL="https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_Linux_i386.tar.gz" + URL="https://github.com/charmbracelet/vhs/releases/download/v0.8.0/vhs_0.8.0_Linux_i386.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_Linux_x86_64.tar.gz" + URL="https://github.com/charmbracelet/vhs/releases/download/v0.8.0/vhs_0.8.0_Linux_x86_64.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/cli_cli.sh b/installer/cli_cli.sh index 35210fc..f6072ad 100755 --- a/installer/cli_cli.sh +++ b/installer/cli_cli.sh @@ -19,7 +19,7 @@ function install { PROG="cli" ASPROG="" MOVE="false" - RELEASE="v2.55.0" + RELEASE="v2.57.0" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,27 +80,27 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "linux_386") - URL="https://github.com/cli/cli/releases/download/v2.55.0/gh_2.55.0_linux_386.tar.gz" + URL="https://github.com/cli/cli/releases/download/v2.57.0/gh_2.57.0_linux_386.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/cli/cli/releases/download/v2.55.0/gh_2.55.0_linux_amd64.tar.gz" + URL="https://github.com/cli/cli/releases/download/v2.57.0/gh_2.57.0_linux_amd64.tar.gz" FTYPE=".tar.gz" ;; "linux_arm64") - URL="https://github.com/cli/cli/releases/download/v2.55.0/gh_2.55.0_linux_arm64.tar.gz" + URL="https://github.com/cli/cli/releases/download/v2.57.0/gh_2.57.0_linux_arm64.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/cli/cli/releases/download/v2.55.0/gh_2.55.0_linux_armv6.tar.gz" + URL="https://github.com/cli/cli/releases/download/v2.57.0/gh_2.57.0_linux_armv6.tar.gz" FTYPE=".tar.gz" ;; "darwin_amd64") - URL="https://github.com/cli/cli/releases/download/v2.55.0/gh_2.55.0_macOS_amd64.zip" + URL="https://github.com/cli/cli/releases/download/v2.57.0/gh_2.57.0_macOS_amd64.zip" FTYPE=".zip" ;; "darwin_arm64") - URL="https://github.com/cli/cli/releases/download/v2.55.0/gh_2.55.0_macOS_arm64.zip" + URL="https://github.com/cli/cli/releases/download/v2.57.0/gh_2.57.0_macOS_arm64.zip" FTYPE=".zip" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/eza-community_eza.sh b/installer/eza-community_eza.sh index 0375205..ce442d6 100755 --- a/installer/eza-community_eza.sh +++ b/installer/eza-community_eza.sh @@ -19,7 +19,7 @@ function install { PROG="eza" ASPROG="" MOVE="false" - RELEASE="v0.19.1" + RELEASE="v0.20.0" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -85,15 +85,15 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "linux_arm64") - URL="https://github.com/eza-community/eza/releases/download/v0.19.1/eza_aarch64-unknown-linux-gnu.tar.gz" + URL="https://github.com/eza-community/eza/releases/download/v0.20.0/eza_aarch64-unknown-linux-gnu.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/eza-community/eza/releases/download/v0.19.1/eza_arm-unknown-linux-gnueabihf.tar.gz" + URL="https://github.com/eza-community/eza/releases/download/v0.20.0/eza_arm-unknown-linux-gnueabihf.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/eza-community/eza/releases/download/v0.19.1/eza_x86_64-unknown-linux-gnu.tar.gz" + URL="https://github.com/eza-community/eza/releases/download/v0.20.0/eza_x86_64-unknown-linux-gnu.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/go-task_task.sh b/installer/go-task_task.sh index fcce90d..a7f3dbb 100755 --- a/installer/go-task_task.sh +++ b/installer/go-task_task.sh @@ -19,7 +19,7 @@ function install { PROG="task" ASPROG="" MOVE="false" - RELEASE="v3.38.0" + RELEASE="v3.39.2" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,43 +80,43 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_amd64") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_darwin_amd64.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_darwin_amd64.tar.gz" FTYPE=".tar.gz" ;; "darwin_arm64") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_darwin_arm64.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_darwin_arm64.tar.gz" FTYPE=".tar.gz" ;; "freebsd_386") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_freebsd_386.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_freebsd_386.tar.gz" FTYPE=".tar.gz" ;; "freebsd_amd64") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_freebsd_amd64.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_freebsd_amd64.tar.gz" FTYPE=".tar.gz" ;; "freebsd_arm") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_freebsd_arm.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_freebsd_arm.tar.gz" FTYPE=".tar.gz" ;; "freebsd_arm64") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_freebsd_arm64.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_freebsd_arm64.tar.gz" FTYPE=".tar.gz" ;; "linux_386") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_linux_386.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_linux_386.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_linux_amd64.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_linux_amd64.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_linux_arm.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_linux_arm.tar.gz" FTYPE=".tar.gz" ;; "linux_arm64") - URL="https://github.com/go-task/task/releases/download/v3.38.0/task_linux_arm64.tar.gz" + URL="https://github.com/go-task/task/releases/download/v3.39.2/task_linux_arm64.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/homeport_termshot.sh b/installer/homeport_termshot.sh index ff54637..ac065b3 100755 --- a/installer/homeport_termshot.sh +++ b/installer/homeport_termshot.sh @@ -19,7 +19,7 @@ function install { PROG="termshot" ASPROG="" MOVE="false" - RELEASE="v0.2.8" + RELEASE="v0.2.9" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,19 +80,19 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_amd64") - URL="https://github.com/homeport/termshot/releases/download/v0.2.8/termshot_0.2.8_darwin_amd64.tar.gz" + URL="https://github.com/homeport/termshot/releases/download/v0.2.9/termshot_0.2.9_darwin_amd64.tar.gz" FTYPE=".tar.gz" ;; "darwin_arm64") - URL="https://github.com/homeport/termshot/releases/download/v0.2.8/termshot_0.2.8_darwin_arm64.tar.gz" + URL="https://github.com/homeport/termshot/releases/download/v0.2.9/termshot_0.2.9_darwin_arm64.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/homeport/termshot/releases/download/v0.2.8/termshot_0.2.8_linux_amd64.tar.gz" + URL="https://github.com/homeport/termshot/releases/download/v0.2.9/termshot_0.2.9_linux_amd64.tar.gz" FTYPE=".tar.gz" ;; "linux_arm64") - URL="https://github.com/homeport/termshot/releases/download/v0.2.8/termshot_0.2.8_linux_arm64.tar.gz" + URL="https://github.com/homeport/termshot/releases/download/v0.2.9/termshot_0.2.9_linux_arm64.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/install.sh b/installer/install.sh index a7253b3..9d28bbd 100755 --- a/installer/install.sh +++ b/installer/install.sh @@ -6,6 +6,7 @@ set -e /installer/atuinsh_atuin.sh /installer/avencera_rustywind.sh /installer/benbjohnson_litestream.sh +/installer/bitnami-labs_sealed-secrets.sh /installer/bootandy_dust.sh /installer/casey_just.sh /installer/charmbracelet_vhs.sh @@ -16,7 +17,6 @@ set -e /installer/dbrgn_tealdeer.sh /installer/derailed_k9s.sh /installer/ducaale_xh.sh -/installer/ducaale_xh.sh /installer/extrawurst_gitui.sh /installer/eza-community_eza.sh /installer/go-task_task.sh @@ -26,7 +26,10 @@ set -e /installer/imsnif_diskonaut.sh /installer/jmorganca_ollama.sh /installer/johanhaleby_kubetail.sh +/installer/jqlang_jq.sh /installer/mgdm_htmlq.sh +/installer/nats-io_nats-server.sh +/installer/nats-io_natscli.sh /installer/neovim_neovim.sh /installer/ogham_dog.sh /installer/packwiz_packwiz.sh @@ -34,17 +37,23 @@ set -e /installer/sharkdp_pastel.sh /installer/sirwart_ripsecrets.sh /installer/starship_starship.sh +/installer/svenstaro_miniserve.sh /installer/sxyazi_yazi.sh /installer/topgrade-rs_topgrade.sh /installer/twpayne_chezmoi.sh /installer/zellij-org_zellij.sh mv cli gh +mv Clipboard cp mv tealdeer tldr tldr --update +mv sealed-secrets kubeseal +curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" +curl https://raw.githubusercontent.com/ahmetb/kubectx/refs/heads/master/kubectx > ~/.local/bin/kubectx if [[ -f /usr/bin/batcat ]]; then - ln -s /usr/bin/batcat ~/.local/bin/bat + ln -s /usr/bin/batcat ~/.local/bin/bat fi if [[ -f /usr/bin/fdfind ]]; then - ln -s /usr/bin/fdfind ~/.local/bin/fd + ln -s /usr/bin/fdfind ~/.local/bin/fd fi + diff --git a/installer/jmorganca_ollama.sh b/installer/jmorganca_ollama.sh index 3de1759..88ed489 100755 --- a/installer/jmorganca_ollama.sh +++ b/installer/jmorganca_ollama.sh @@ -19,7 +19,7 @@ function install { PROG="ollama" ASPROG="" MOVE="false" - RELEASE="v0.3.9" + RELEASE="v0.3.12" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -85,15 +85,15 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_amd64") - URL="https://github.com/ollama/ollama/releases/download/v0.3.9/ollama-darwin" + URL="https://github.com/ollama/ollama/releases/download/v0.3.12/ollama-darwin" FTYPE=".bin" ;; "linux_amd64") - URL="https://github.com/ollama/ollama/releases/download/v0.3.9/ollama-linux-amd64-rocm.tgz" + URL="https://github.com/ollama/ollama/releases/download/v0.3.12/ollama-linux-amd64-rocm.tgz" FTYPE=".tgz" ;; "linux_arm64") - URL="https://github.com/ollama/ollama/releases/download/v0.3.9/ollama-linux-arm64.tgz" + URL="https://github.com/ollama/ollama/releases/download/v0.3.12/ollama-linux-arm64.tgz" FTYPE=".tgz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/jqlang_jq.sh b/installer/jqlang_jq.sh new file mode 100755 index 0000000..3753b7b --- /dev/null +++ b/installer/jqlang_jq.sh @@ -0,0 +1,174 @@ +#!/bin/bash +if [ "$DEBUG" == "1" ]; then + set -x +fi +TMP_DIR=$(mktemp -d -t jpillora-installer-XXXXXXXXXX) +function cleanup { + rm -rf $TMP_DIR > /dev/null +} +function fail { + cleanup + msg=$1 + echo "============" + echo "Error: $msg" 1>&2 + exit 1 +} +function install { + #settings + USER="jqlang" + PROG="jq" + ASPROG="" + MOVE="false" + RELEASE="jq-1.7.1" + INSECURE="false" + OUT_DIR="$(pwd)" + GH="https://github.com" + #bash check + [ ! "$BASH_VERSION" ] && fail "Please use bash instead" + [ ! -d $OUT_DIR ] && fail "output directory missing: $OUT_DIR" + #dependency check, assume we are a standard POISX machine + which find > /dev/null || fail "find not installed" + which xargs > /dev/null || fail "xargs not installed" + which sort > /dev/null || fail "sort not installed" + which tail > /dev/null || fail "tail not installed" + which cut > /dev/null || fail "cut not installed" + which du > /dev/null || fail "du not installed" + #choose an HTTP client + GET="" + if which curl > /dev/null; then + GET="curl" + if [[ $INSECURE = "true" ]]; then GET="$GET --insecure"; fi + GET="$GET --fail -# -L" + elif which wget > /dev/null; then + GET="wget" + if [[ $INSECURE = "true" ]]; then GET="$GET --no-check-certificate"; fi + GET="$GET -qO-" + else + fail "neither wget/curl are installed" + fi + #debug HTTP + if [ "$DEBUG" == "1" ]; then + GET="$GET -v" + fi + #optional auth to install from private repos + #NOTE: this also needs to be set on your instance of installer + AUTH="${GITHUB_TOKEN}" + if [ ! -z "$AUTH" ]; then + GET="$GET -H 'Authorization: $AUTH'" + fi + #find OS #TODO BSDs and other posixs + case `uname -s` in + Darwin) OS="darwin";; + Linux) OS="linux";; + *) fail "unknown os: $(uname -s)";; + esac + #find ARCH + if uname -m | grep -E '(arm|arch)64' > /dev/null; then + ARCH="arm64" + + # no m1 assets. if on mac arm64, rosetta allows fallback to amd64 + if [[ $OS = "darwin" ]]; then + ARCH="amd64" + fi + + elif uname -m | grep 64 > /dev/null; then + ARCH="amd64" + elif uname -m | grep arm > /dev/null; then + ARCH="arm" #TODO armv6/v7 + elif uname -m | grep 386 > /dev/null; then + ARCH="386" + else + fail "unknown arch: $(uname -m)" + fi + #choose from asset list + URL="" + FTYPE="" + case "${OS}_${ARCH}" in + "linux_amd64") + URL="https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64" + FTYPE=".bin" + ;; + "linux_arm64") + URL="https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-arm64" + FTYPE=".bin" + ;; + "linux_arm") + URL="https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-armel" + FTYPE=".bin" + ;; + "linux_386") + URL="https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-i386" + FTYPE=".bin" + ;; + *) fail "No asset for platform ${OS}-${ARCH}";; + esac + #got URL! download it... + echo -n "Downloading" + echo -n " $USER/$PROG" + if [ ! -z "$RELEASE" ]; then + echo -n " $RELEASE" + fi + if [ ! -z "$ASPROG" ]; then + echo -n " as $ASPROG" + fi + echo -n " (${OS}/${ARCH})" + + echo "....." + + #enter tempdir + mkdir -p $TMP_DIR + cd $TMP_DIR + if [[ $FTYPE = ".gz" ]]; then + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | gzip -d - > $PROG || fail "download failed" + elif [[ $FTYPE = ".tar.bz" ]] || [[ $FTYPE = ".tar.bz2" ]]; then + which tar > /dev/null || fail "tar is not installed" + which bzip2 > /dev/null || fail "bzip2 is not installed" + bash -c "$GET $URL" | tar jxf - || fail "download failed" + elif [[ $FTYPE = ".tar.gz" ]] || [[ $FTYPE = ".tgz" ]]; then + which tar > /dev/null || fail "tar is not installed" + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | tar zxf - || fail "download failed" + elif [[ $FTYPE = ".zip" ]]; then + which unzip > /dev/null || fail "unzip is not installed" + bash -c "$GET $URL" > tmp.zip || fail "download failed" + unzip -o -qq tmp.zip || fail "unzip failed" + rm tmp.zip || fail "cleanup failed" + elif [[ $FTYPE = ".bin" ]]; then + bash -c "$GET $URL" > "jq_${OS}_${ARCH}" || fail "download failed" + else + fail "unknown file type: $FTYPE" + fi + #search subtree largest file (bin) + TMP_BIN=$(find . -type f | xargs du | sort -n | tail -n 1 | cut -f 2) + if [ ! -f "$TMP_BIN" ]; then + fail "could not find find binary (largest file)" + fi + #ensure its larger than 1MB + #TODO linux=elf/darwin=macho file detection? + if [[ $(du -m $TMP_BIN | cut -f1) -lt 1 ]]; then + fail "no binary found ($TMP_BIN is not larger than 1MB)" + fi + #move into PATH or cwd + chmod +x $TMP_BIN || fail "chmod +x failed" + DEST="$OUT_DIR/$PROG" + if [ ! -z "$ASPROG" ]; then + DEST="$OUT_DIR/$ASPROG" + fi + #move without sudo + OUT=$(mv $TMP_BIN $DEST 2>&1) + STATUS=$? + # failed and string contains "Permission denied" + if [ $STATUS -ne 0 ]; then + if [[ $OUT =~ "Permission denied" ]]; then + echo "mv with sudo..." + sudo mv $TMP_BIN $DEST || fail "sudo mv failed" + else + fail "mv failed ($OUT)" + fi + fi + echo "Downloaded to $DEST" + #done + cleanup +} +install diff --git a/installer/nats-io_nats-server.sh b/installer/nats-io_nats-server.sh new file mode 100755 index 0000000..2c9b6af --- /dev/null +++ b/installer/nats-io_nats-server.sh @@ -0,0 +1,181 @@ +#!/bin/bash +if [ "$DEBUG" == "1" ]; then + set -x +fi +TMP_DIR=$(mktemp -d -t jpillora-installer-XXXXXXXXXX) +function cleanup { + rm -rf $TMP_DIR > /dev/null +} +function fail { + cleanup + msg=$1 + echo "============" + echo "Error: $msg" 1>&2 + exit 1 +} +function install { + #settings + USER="nats-io" + PROG="nats-server" + ASPROG="" + MOVE="false" + RELEASE="v2.10.21" + INSECURE="false" + OUT_DIR="$(pwd)" + GH="https://github.com" + #bash check + [ ! "$BASH_VERSION" ] && fail "Please use bash instead" + [ ! -d $OUT_DIR ] && fail "output directory missing: $OUT_DIR" + #dependency check, assume we are a standard POISX machine + which find > /dev/null || fail "find not installed" + which xargs > /dev/null || fail "xargs not installed" + which sort > /dev/null || fail "sort not installed" + which tail > /dev/null || fail "tail not installed" + which cut > /dev/null || fail "cut not installed" + which du > /dev/null || fail "du not installed" + #choose an HTTP client + GET="" + if which curl > /dev/null; then + GET="curl" + if [[ $INSECURE = "true" ]]; then GET="$GET --insecure"; fi + GET="$GET --fail -# -L" + elif which wget > /dev/null; then + GET="wget" + if [[ $INSECURE = "true" ]]; then GET="$GET --no-check-certificate"; fi + GET="$GET -qO-" + else + fail "neither wget/curl are installed" + fi + #debug HTTP + if [ "$DEBUG" == "1" ]; then + GET="$GET -v" + fi + #optional auth to install from private repos + #NOTE: this also needs to be set on your instance of installer + AUTH="${GITHUB_TOKEN}" + if [ ! -z "$AUTH" ]; then + GET="$GET -H 'Authorization: $AUTH'" + fi + #find OS #TODO BSDs and other posixs + case `uname -s` in + Darwin) OS="darwin";; + Linux) OS="linux";; + *) fail "unknown os: $(uname -s)";; + esac + #find ARCH + if uname -m | grep -E '(arm|arch)64' > /dev/null; then + ARCH="arm64" + + elif uname -m | grep 64 > /dev/null; then + ARCH="amd64" + elif uname -m | grep arm > /dev/null; then + ARCH="arm" #TODO armv6/v7 + elif uname -m | grep 386 > /dev/null; then + ARCH="386" + else + fail "unknown arch: $(uname -m)" + fi + #choose from asset list + URL="" + FTYPE="" + case "${OS}_${ARCH}" in + "darwin_amd64") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-darwin-amd64.tar.gz" + FTYPE=".tar.gz" + ;; + "darwin_arm64") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-darwin-arm64.tar.gz" + FTYPE=".tar.gz" + ;; + "freebsd_amd64") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-freebsd-amd64.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_386") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-linux-386.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_amd64") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-linux-amd64.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_arm") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-linux-arm6.tar.gz" + FTYPE=".tar.gz" + ;; + "linux_arm64") + URL="https://github.com/nats-io/nats-server/releases/download/v2.10.21/nats-server-v2.10.21-linux-arm64.tar.gz" + FTYPE=".tar.gz" + ;; + *) fail "No asset for platform ${OS}-${ARCH}";; + esac + #got URL! download it... + echo -n "Downloading" + echo -n " $USER/$PROG" + if [ ! -z "$RELEASE" ]; then + echo -n " $RELEASE" + fi + if [ ! -z "$ASPROG" ]; then + echo -n " as $ASPROG" + fi + echo -n " (${OS}/${ARCH})" + + echo "....." + + #enter tempdir + mkdir -p $TMP_DIR + cd $TMP_DIR + if [[ $FTYPE = ".gz" ]]; then + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | gzip -d - > $PROG || fail "download failed" + elif [[ $FTYPE = ".tar.bz" ]] || [[ $FTYPE = ".tar.bz2" ]]; then + which tar > /dev/null || fail "tar is not installed" + which bzip2 > /dev/null || fail "bzip2 is not installed" + bash -c "$GET $URL" | tar jxf - || fail "download failed" + elif [[ $FTYPE = ".tar.gz" ]] || [[ $FTYPE = ".tgz" ]]; then + which tar > /dev/null || fail "tar is not installed" + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | tar zxf - || fail "download failed" + elif [[ $FTYPE = ".zip" ]]; then + which unzip > /dev/null || fail "unzip is not installed" + bash -c "$GET $URL" > tmp.zip || fail "download failed" + unzip -o -qq tmp.zip || fail "unzip failed" + rm tmp.zip || fail "cleanup failed" + elif [[ $FTYPE = ".bin" ]]; then + bash -c "$GET $URL" > "nats-server_${OS}_${ARCH}" || fail "download failed" + else + fail "unknown file type: $FTYPE" + fi + #search subtree largest file (bin) + TMP_BIN=$(find . -type f | xargs du | sort -n | tail -n 1 | cut -f 2) + if [ ! -f "$TMP_BIN" ]; then + fail "could not find find binary (largest file)" + fi + #ensure its larger than 1MB + #TODO linux=elf/darwin=macho file detection? + if [[ $(du -m $TMP_BIN | cut -f1) -lt 1 ]]; then + fail "no binary found ($TMP_BIN is not larger than 1MB)" + fi + #move into PATH or cwd + chmod +x $TMP_BIN || fail "chmod +x failed" + DEST="$OUT_DIR/$PROG" + if [ ! -z "$ASPROG" ]; then + DEST="$OUT_DIR/$ASPROG" + fi + #move without sudo + OUT=$(mv $TMP_BIN $DEST 2>&1) + STATUS=$? + # failed and string contains "Permission denied" + if [ $STATUS -ne 0 ]; then + if [[ $OUT =~ "Permission denied" ]]; then + echo "mv with sudo..." + sudo mv $TMP_BIN $DEST || fail "sudo mv failed" + else + fail "mv failed ($OUT)" + fi + fi + echo "Downloaded to $DEST" + #done + cleanup +} +install diff --git a/installer/nats-io_natscli.sh b/installer/nats-io_natscli.sh new file mode 100755 index 0000000..7b0b898 --- /dev/null +++ b/installer/nats-io_natscli.sh @@ -0,0 +1,181 @@ +#!/bin/bash +if [ "$DEBUG" == "1" ]; then + set -x +fi +TMP_DIR=$(mktemp -d -t jpillora-installer-XXXXXXXXXX) +function cleanup { + rm -rf $TMP_DIR > /dev/null +} +function fail { + cleanup + msg=$1 + echo "============" + echo "Error: $msg" 1>&2 + exit 1 +} +function install { + #settings + USER="nats-io" + PROG="natscli" + ASPROG="" + MOVE="false" + RELEASE="v0.1.5" + INSECURE="false" + OUT_DIR="$(pwd)" + GH="https://github.com" + #bash check + [ ! "$BASH_VERSION" ] && fail "Please use bash instead" + [ ! -d $OUT_DIR ] && fail "output directory missing: $OUT_DIR" + #dependency check, assume we are a standard POISX machine + which find > /dev/null || fail "find not installed" + which xargs > /dev/null || fail "xargs not installed" + which sort > /dev/null || fail "sort not installed" + which tail > /dev/null || fail "tail not installed" + which cut > /dev/null || fail "cut not installed" + which du > /dev/null || fail "du not installed" + #choose an HTTP client + GET="" + if which curl > /dev/null; then + GET="curl" + if [[ $INSECURE = "true" ]]; then GET="$GET --insecure"; fi + GET="$GET --fail -# -L" + elif which wget > /dev/null; then + GET="wget" + if [[ $INSECURE = "true" ]]; then GET="$GET --no-check-certificate"; fi + GET="$GET -qO-" + else + fail "neither wget/curl are installed" + fi + #debug HTTP + if [ "$DEBUG" == "1" ]; then + GET="$GET -v" + fi + #optional auth to install from private repos + #NOTE: this also needs to be set on your instance of installer + AUTH="${GITHUB_TOKEN}" + if [ ! -z "$AUTH" ]; then + GET="$GET -H 'Authorization: $AUTH'" + fi + #find OS #TODO BSDs and other posixs + case `uname -s` in + Darwin) OS="darwin";; + Linux) OS="linux";; + *) fail "unknown os: $(uname -s)";; + esac + #find ARCH + if uname -m | grep -E '(arm|arch)64' > /dev/null; then + ARCH="arm64" + + elif uname -m | grep 64 > /dev/null; then + ARCH="amd64" + elif uname -m | grep arm > /dev/null; then + ARCH="arm" #TODO armv6/v7 + elif uname -m | grep 386 > /dev/null; then + ARCH="386" + else + fail "unknown arch: $(uname -m)" + fi + #choose from asset list + URL="" + FTYPE="" + case "${OS}_${ARCH}" in + "darwin_amd64") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-darwin-amd64.zip" + FTYPE=".zip" + ;; + "darwin_arm64") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-darwin-arm64.zip" + FTYPE=".zip" + ;; + "freebsd_amd64") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-freebsd-amd64.zip" + FTYPE=".zip" + ;; + "linux_386") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-linux-386.zip" + FTYPE=".zip" + ;; + "linux_amd64") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-linux-amd64.zip" + FTYPE=".zip" + ;; + "linux_arm") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-linux-arm6.zip" + FTYPE=".zip" + ;; + "linux_arm64") + URL="https://github.com/nats-io/natscli/releases/download/v0.1.5/nats-0.1.5-linux-arm64.zip" + FTYPE=".zip" + ;; + *) fail "No asset for platform ${OS}-${ARCH}";; + esac + #got URL! download it... + echo -n "Downloading" + echo -n " $USER/$PROG" + if [ ! -z "$RELEASE" ]; then + echo -n " $RELEASE" + fi + if [ ! -z "$ASPROG" ]; then + echo -n " as $ASPROG" + fi + echo -n " (${OS}/${ARCH})" + + echo "....." + + #enter tempdir + mkdir -p $TMP_DIR + cd $TMP_DIR + if [[ $FTYPE = ".gz" ]]; then + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | gzip -d - > $PROG || fail "download failed" + elif [[ $FTYPE = ".tar.bz" ]] || [[ $FTYPE = ".tar.bz2" ]]; then + which tar > /dev/null || fail "tar is not installed" + which bzip2 > /dev/null || fail "bzip2 is not installed" + bash -c "$GET $URL" | tar jxf - || fail "download failed" + elif [[ $FTYPE = ".tar.gz" ]] || [[ $FTYPE = ".tgz" ]]; then + which tar > /dev/null || fail "tar is not installed" + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | tar zxf - || fail "download failed" + elif [[ $FTYPE = ".zip" ]]; then + which unzip > /dev/null || fail "unzip is not installed" + bash -c "$GET $URL" > tmp.zip || fail "download failed" + unzip -o -qq tmp.zip || fail "unzip failed" + rm tmp.zip || fail "cleanup failed" + elif [[ $FTYPE = ".bin" ]]; then + bash -c "$GET $URL" > "natscli_${OS}_${ARCH}" || fail "download failed" + else + fail "unknown file type: $FTYPE" + fi + #search subtree largest file (bin) + TMP_BIN=$(find . -type f | xargs du | sort -n | tail -n 1 | cut -f 2) + if [ ! -f "$TMP_BIN" ]; then + fail "could not find find binary (largest file)" + fi + #ensure its larger than 1MB + #TODO linux=elf/darwin=macho file detection? + if [[ $(du -m $TMP_BIN | cut -f1) -lt 1 ]]; then + fail "no binary found ($TMP_BIN is not larger than 1MB)" + fi + #move into PATH or cwd + chmod +x $TMP_BIN || fail "chmod +x failed" + DEST="$OUT_DIR/$PROG" + if [ ! -z "$ASPROG" ]; then + DEST="$OUT_DIR/$ASPROG" + fi + #move without sudo + OUT=$(mv $TMP_BIN $DEST 2>&1) + STATUS=$? + # failed and string contains "Permission denied" + if [ $STATUS -ne 0 ]; then + if [[ $OUT =~ "Permission denied" ]]; then + echo "mv with sudo..." + sudo mv $TMP_BIN $DEST || fail "sudo mv failed" + else + fail "mv failed ($OUT)" + fi + fi + echo "Downloaded to $DEST" + #done + cleanup +} +install diff --git a/installer/sharkdp_pastel.sh b/installer/sharkdp_pastel.sh index 429aaea..7c1346d 100755 --- a/installer/sharkdp_pastel.sh +++ b/installer/sharkdp_pastel.sh @@ -19,7 +19,7 @@ function install { PROG="pastel" ASPROG="" MOVE="false" - RELEASE="v0.9.0" + RELEASE="v0.10.0" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -85,19 +85,19 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "linux_arm64") - URL="https://github.com/sharkdp/pastel/releases/download/v0.9.0/pastel-v0.9.0-aarch64-unknown-linux-gnu.tar.gz" + URL="https://github.com/sharkdp/pastel/releases/download/v0.10.0/pastel-v0.10.0-aarch64-unknown-linux-gnu.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/sharkdp/pastel/releases/download/v0.9.0/pastel-v0.9.0-arm-unknown-linux-gnueabihf.tar.gz" + URL="https://github.com/sharkdp/pastel/releases/download/v0.10.0/pastel-v0.10.0-arm-unknown-linux-gnueabihf.tar.gz" FTYPE=".tar.gz" ;; "linux_amd64") - URL="https://github.com/sharkdp/pastel/releases/download/v0.9.0/pastel-v0.9.0-i686-unknown-linux-gnu.tar.gz" + URL="https://github.com/sharkdp/pastel/releases/download/v0.10.0/pastel-v0.10.0-i686-unknown-linux-gnu.tar.gz" FTYPE=".tar.gz" ;; "darwin_amd64") - URL="https://github.com/sharkdp/pastel/releases/download/v0.9.0/pastel-v0.9.0-x86_64-apple-darwin.tar.gz" + URL="https://github.com/sharkdp/pastel/releases/download/v0.10.0/pastel-v0.10.0-x86_64-apple-darwin.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/svenstaro_miniserve.sh b/installer/svenstaro_miniserve.sh new file mode 100755 index 0000000..66de302 --- /dev/null +++ b/installer/svenstaro_miniserve.sh @@ -0,0 +1,177 @@ +#!/bin/bash +if [ "$DEBUG" == "1" ]; then + set -x +fi +TMP_DIR=$(mktemp -d -t jpillora-installer-XXXXXXXXXX) +function cleanup { + rm -rf $TMP_DIR > /dev/null +} +function fail { + cleanup + msg=$1 + echo "============" + echo "Error: $msg" 1>&2 + exit 1 +} +function install { + #settings + USER="svenstaro" + PROG="miniserve" + ASPROG="" + MOVE="false" + RELEASE="v0.28.0" + INSECURE="false" + OUT_DIR="$(pwd)" + GH="https://github.com" + #bash check + [ ! "$BASH_VERSION" ] && fail "Please use bash instead" + [ ! -d $OUT_DIR ] && fail "output directory missing: $OUT_DIR" + #dependency check, assume we are a standard POISX machine + which find > /dev/null || fail "find not installed" + which xargs > /dev/null || fail "xargs not installed" + which sort > /dev/null || fail "sort not installed" + which tail > /dev/null || fail "tail not installed" + which cut > /dev/null || fail "cut not installed" + which du > /dev/null || fail "du not installed" + #choose an HTTP client + GET="" + if which curl > /dev/null; then + GET="curl" + if [[ $INSECURE = "true" ]]; then GET="$GET --insecure"; fi + GET="$GET --fail -# -L" + elif which wget > /dev/null; then + GET="wget" + if [[ $INSECURE = "true" ]]; then GET="$GET --no-check-certificate"; fi + GET="$GET -qO-" + else + fail "neither wget/curl are installed" + fi + #debug HTTP + if [ "$DEBUG" == "1" ]; then + GET="$GET -v" + fi + #optional auth to install from private repos + #NOTE: this also needs to be set on your instance of installer + AUTH="${GITHUB_TOKEN}" + if [ ! -z "$AUTH" ]; then + GET="$GET -H 'Authorization: $AUTH'" + fi + #find OS #TODO BSDs and other posixs + case `uname -s` in + Darwin) OS="darwin";; + Linux) OS="linux";; + *) fail "unknown os: $(uname -s)";; + esac + #find ARCH + if uname -m | grep -E '(arm|arch)64' > /dev/null; then + ARCH="arm64" + + elif uname -m | grep 64 > /dev/null; then + ARCH="amd64" + elif uname -m | grep arm > /dev/null; then + ARCH="arm" #TODO armv6/v7 + elif uname -m | grep 386 > /dev/null; then + ARCH="386" + else + fail "unknown arch: $(uname -m)" + fi + #choose from asset list + URL="" + FTYPE="" + case "${OS}_${ARCH}" in + "darwin_arm64") + URL="https://github.com/svenstaro/miniserve/releases/download/v0.28.0/miniserve-0.28.0-aarch64-apple-darwin" + FTYPE=".bin" + ;; + "linux_arm64") + URL="https://github.com/svenstaro/miniserve/releases/download/v0.28.0/miniserve-0.28.0-aarch64-unknown-linux-gnu" + FTYPE=".bin" + ;; + "linux_arm") + URL="https://github.com/svenstaro/miniserve/releases/download/v0.28.0/miniserve-0.28.0-arm-unknown-linux-musleabihf" + FTYPE=".bin" + ;; + "linux_amd64") + URL="https://github.com/svenstaro/miniserve/releases/download/v0.28.0/miniserve-0.28.0-riscv64gc-unknown-linux-gnu" + FTYPE=".bin" + ;; + "darwin_amd64") + URL="https://github.com/svenstaro/miniserve/releases/download/v0.28.0/miniserve-0.28.0-x86_64-apple-darwin" + FTYPE=".bin" + ;; + "freebsd_amd64") + URL="https://github.com/svenstaro/miniserve/releases/download/v0.28.0/miniserve-0.28.0-x86_64-unknown-freebsd" + FTYPE=".bin" + ;; + *) fail "No asset for platform ${OS}-${ARCH}";; + esac + #got URL! download it... + echo -n "Downloading" + echo -n " $USER/$PROG" + if [ ! -z "$RELEASE" ]; then + echo -n " $RELEASE" + fi + if [ ! -z "$ASPROG" ]; then + echo -n " as $ASPROG" + fi + echo -n " (${OS}/${ARCH})" + + echo "....." + + #enter tempdir + mkdir -p $TMP_DIR + cd $TMP_DIR + if [[ $FTYPE = ".gz" ]]; then + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | gzip -d - > $PROG || fail "download failed" + elif [[ $FTYPE = ".tar.bz" ]] || [[ $FTYPE = ".tar.bz2" ]]; then + which tar > /dev/null || fail "tar is not installed" + which bzip2 > /dev/null || fail "bzip2 is not installed" + bash -c "$GET $URL" | tar jxf - || fail "download failed" + elif [[ $FTYPE = ".tar.gz" ]] || [[ $FTYPE = ".tgz" ]]; then + which tar > /dev/null || fail "tar is not installed" + which gzip > /dev/null || fail "gzip is not installed" + bash -c "$GET $URL" | tar zxf - || fail "download failed" + elif [[ $FTYPE = ".zip" ]]; then + which unzip > /dev/null || fail "unzip is not installed" + bash -c "$GET $URL" > tmp.zip || fail "download failed" + unzip -o -qq tmp.zip || fail "unzip failed" + rm tmp.zip || fail "cleanup failed" + elif [[ $FTYPE = ".bin" ]]; then + bash -c "$GET $URL" > "miniserve_${OS}_${ARCH}" || fail "download failed" + else + fail "unknown file type: $FTYPE" + fi + #search subtree largest file (bin) + TMP_BIN=$(find . -type f | xargs du | sort -n | tail -n 1 | cut -f 2) + if [ ! -f "$TMP_BIN" ]; then + fail "could not find find binary (largest file)" + fi + #ensure its larger than 1MB + #TODO linux=elf/darwin=macho file detection? + if [[ $(du -m $TMP_BIN | cut -f1) -lt 1 ]]; then + fail "no binary found ($TMP_BIN is not larger than 1MB)" + fi + #move into PATH or cwd + chmod +x $TMP_BIN || fail "chmod +x failed" + DEST="$OUT_DIR/$PROG" + if [ ! -z "$ASPROG" ]; then + DEST="$OUT_DIR/$ASPROG" + fi + #move without sudo + OUT=$(mv $TMP_BIN $DEST 2>&1) + STATUS=$? + # failed and string contains "Permission denied" + if [ $STATUS -ne 0 ]; then + if [[ $OUT =~ "Permission denied" ]]; then + echo "mv with sudo..." + sudo mv $TMP_BIN $DEST || fail "sudo mv failed" + else + fail "mv failed ($OUT)" + fi + fi + echo "Downloaded to $DEST" + #done + cleanup +} +install diff --git a/installer/sxyazi_yazi.sh b/installer/sxyazi_yazi.sh index 63717f4..a430314 100755 --- a/installer/sxyazi_yazi.sh +++ b/installer/sxyazi_yazi.sh @@ -19,7 +19,7 @@ function install { PROG="yazi" ASPROG="" MOVE="false" - RELEASE="v0.3.2" + RELEASE="v0.3.3" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,19 +80,19 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_arm64") - URL="https://github.com/sxyazi/yazi/releases/download/v0.3.2/yazi-aarch64-apple-darwin.zip" + URL="https://github.com/sxyazi/yazi/releases/download/v0.3.3/yazi-aarch64-apple-darwin.zip" FTYPE=".zip" ;; "linux_arm64") - URL="https://github.com/sxyazi/yazi/releases/download/v0.3.2/yazi-aarch64-unknown-linux-gnu.zip" + URL="https://github.com/sxyazi/yazi/releases/download/v0.3.3/yazi-aarch64-unknown-linux-gnu.zip" FTYPE=".zip" ;; "darwin_amd64") - URL="https://github.com/sxyazi/yazi/releases/download/v0.3.2/yazi-x86_64-apple-darwin.zip" + URL="https://github.com/sxyazi/yazi/releases/download/v0.3.3/yazi-x86_64-apple-darwin.zip" FTYPE=".zip" ;; "linux_amd64") - URL="https://github.com/sxyazi/yazi/releases/download/v0.3.2/yazi-x86_64-unknown-linux-gnu.zip" + URL="https://github.com/sxyazi/yazi/releases/download/v0.3.3/yazi-x86_64-unknown-linux-gnu.zip" FTYPE=".zip" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/installer/twpayne_chezmoi.sh b/installer/twpayne_chezmoi.sh index e995f6c..a808ff1 100755 --- a/installer/twpayne_chezmoi.sh +++ b/installer/twpayne_chezmoi.sh @@ -19,7 +19,7 @@ function install { PROG="chezmoi" ASPROG="" MOVE="false" - RELEASE="v2.52.1" + RELEASE="v2.52.2" INSECURE="false" OUT_DIR="$(pwd)" GH="https://github.com" @@ -80,59 +80,59 @@ function install { FTYPE="" case "${OS}_${ARCH}" in "darwin_amd64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi-darwin-amd64" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi-darwin-amd64" FTYPE=".bin" ;; "darwin_arm64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi-darwin-arm64" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi-darwin-arm64" FTYPE=".bin" ;; "linux_amd64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi-linux-amd64" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi-linux-amd64" FTYPE=".bin" ;; "freebsd_amd64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_freebsd_amd64.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_freebsd_amd64.tar.gz" FTYPE=".tar.gz" ;; "freebsd_arm") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_freebsd_arm.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_freebsd_arm.tar.gz" FTYPE=".tar.gz" ;; "freebsd_arm64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_freebsd_arm64.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_freebsd_arm64.tar.gz" FTYPE=".tar.gz" ;; "freebsd_386") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_freebsd_i386.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_freebsd_i386.tar.gz" FTYPE=".tar.gz" ;; "linux_arm") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_linux_arm.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_linux_arm.tar.gz" FTYPE=".tar.gz" ;; "linux_arm64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_linux_arm64.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_linux_arm64.tar.gz" FTYPE=".tar.gz" ;; "linux_386") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_linux_i386.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_linux_i386.tar.gz" FTYPE=".tar.gz" ;; "openbsd_amd64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_openbsd_amd64.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_openbsd_amd64.tar.gz" FTYPE=".tar.gz" ;; "openbsd_arm") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_openbsd_arm.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_openbsd_arm.tar.gz" FTYPE=".tar.gz" ;; "openbsd_arm64") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_openbsd_arm64.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_openbsd_arm64.tar.gz" FTYPE=".tar.gz" ;; "openbsd_386") - URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.1/chezmoi_2.52.1_openbsd_i386.tar.gz" + URL="https://github.com/twpayne/chezmoi/releases/download/v2.52.2/chezmoi_2.52.2_openbsd_i386.tar.gz" FTYPE=".tar.gz" ;; *) fail "No asset for platform ${OS}-${ARCH}";; diff --git a/justfile b/justfile index 18faa8d..fd4f098 100644 --- a/justfile +++ b/justfile @@ -108,6 +108,7 @@ update-installers: atuinsh/atuin avencera/rustywind benbjohnson/litestream + bitnami-labs/sealed-secrets bootandy/dust casey/just charmbracelet/vhs @@ -118,7 +119,6 @@ update-installers: dbrgn/tealdeer derailed/k9s ducaale/xh - ducaale/xh extrawurst/gitui eza-community/eza go-task/task @@ -128,7 +128,10 @@ update-installers: imsnif/diskonaut jmorganca/ollama johanhaleby/kubetail + jqlang/jq mgdm/htmlq + nats-io/nats-server + nats-io/natscli neovim/neovim ogham/dog packwiz/packwiz @@ -136,6 +139,7 @@ update-installers: sharkdp/pastel sirwart/ripsecrets starship/starship + svenstaro/miniserve sxyazi/yazi topgrade-rs/topgrade twpayne/chezmoi @@ -155,10 +159,15 @@ update-installers: done + echo "mv cli gh" >> installer/install.sh echo "mv Clipboard cp" >> installer/install.sh echo "mv tealdeer tldr" >> installer/install.sh echo "tldr --update" >> installer/install.sh + echo "mv sealed-secrets kubeseal" >> installer/install.sh + + echo 'curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"' >> installer/install.sh + echo 'curl https://raw.githubusercontent.com/ahmetb/kubectx/refs/heads/master/kubectx > ~/.local/bin/kubectx' >> installer/install.sh echo " if [[ -f /usr/bin/batcat ]]; then