Allow installer to work directly without saving

This commit is contained in:
2026-01-28 22:35:13 +00:00
parent 9ca3a327e1
commit bf51d83155

View File

@@ -1,84 +1,92 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e
BINARY_NAME="crib" shopt -s extglob
VERSION="v0.0.1-alpha" set -o errtrace
set -o errexit
set -o pipefail
if [ -z "$RUBY_VERSION" ]; then install() {
if ldconfig -p | grep -q libruby.so.3.4; then BINARY_NAME="crib"
HAVE_34=1 VERSION="v0.0.1-alpha"
fi
if ldconfig -p | grep -q libruby-3.2.so; then
HAVE_32=1
fi
if [ "$HAVE_34" = "1" ] && [ "$HAVE_32" = "1" ]; then if [ -z "$RUBY_VERSION" ]; then
echo "Multiple Ruby versions detected." if ldconfig -p | grep -q libruby.so.3.4; then
echo "Select Ruby ABI:" HAVE_34=1
echo " 1) Ruby 3.4" fi
echo " 2) Ruby 3.2" if ldconfig -p | grep -q libruby-3.2.so; then
read -r choice HAVE_32=1
case "$choice" in fi
1) RUBY_VERSION="3.4" ;;
2) RUBY_VERSION="3.2" ;; if [ "$HAVE_34" = "1" ] && [ "$HAVE_32" = "1" ]; then
*) echo "Multiple Ruby versions detected."
echo "Invalid choice" echo "Select Ruby ABI:"
echo " 1) Ruby 3.4"
echo " 2) Ruby 3.2"
read -r choice
case "$choice" in
1) RUBY_VERSION="3.4" ;;
2) RUBY_VERSION="3.2" ;;
*)
echo "Invalid choice"
exit 1
;;
esac
elif [ "$HAVE_34" = "1" ]; then
RUBY_VERSION="3.4"
elif [ "$HAVE_32" = "1" ]; then
RUBY_VERSION="3.2"
else
echo "No compatible Ruby library found need Ruby 3.2 or 3.4."
exit 1 exit 1
;; fi
esac fi
elif [ "$HAVE_34" = "1" ]; then
RUBY_VERSION="3.4" GITHUB_URL="https://github.com/SyedM-dev/crib/releases/download/$VERSION/crib-linux-x86_64-ruby$RUBY_VERSION"
elif [ "$HAVE_32" = "1" ]; then
RUBY_VERSION="3.2" missing=()
else command -v ruby >/dev/null 2>&1 || missing+=("ruby")
echo "No compatible Ruby library found need Ruby 3.2 or 3.4." ldconfig -p | grep libmagic >/dev/null 2>&1 || missing+=("libmagic")
if [ ${#missing[@]} -ne 0 ]; then
echo "Missing dependencies: ${missing[*]}"
echo "Install them using your package manager:"
echo "Ubuntu/Debian: sudo apt install ruby libmagic1"
echo "Arch: sudo pacman -S ruby file"
echo "Void: sudo xbps-install -Sy ruby file"
exit 1 exit 1
fi fi
fi
GITHUB_URL="https://github.com/SyedM-dev/crib/releases/download/$VERSION/crib-linux-x86_64-ruby$RUBY_VERSION" echo "Installing Crib (Ruby $RUBY_VERSION)"
missing=() echo "Install locally ~/.local/bin or globally /usr/bin? [l/g]"
command -v ruby >/dev/null 2>&1 || missing+=("ruby") read -r choice
ldconfig -p | grep libmagic >/dev/null 2>&1 || missing+=("libmagic") case "$choice" in
l | L)
INSTALL_DIR="$HOME/.local/bin"
SUDO=""
;;
g | G)
INSTALL_DIR="/usr/bin"
SUDO="sudo"
;;
*)
echo "Invalid choice"
exit 1
;;
esac
if [ ${#missing[@]} -ne 0 ]; then $SUDO mkdir -p "$INSTALL_DIR"
echo "Missing dependencies: ${missing[*]}"
echo "Install them using your package manager:"
echo "Ubuntu/Debian: sudo apt install ruby libmagic1"
echo "Arch: sudo pacman -S ruby file"
echo "Void: sudo xbps-install -Sy ruby file"
exit 1
fi
echo "Installing Crib (Ruby $RUBY_VERSION)" echo "Downloading binary..."
curl -L "$GITHUB_URL" -o /tmp/"$BINARY_NAME"
$SUDO install -m 755 /tmp/"$BINARY_NAME" "$INSTALL_DIR/$BINARY_NAME"
rm -f /tmp/"$BINARY_NAME"
echo "Install locally ~/.local/bin or globally /usr/bin? [l/g]" echo
read -r choice echo "✔ Crib installed to $INSTALL_DIR"
case "$choice" in echo "Run with: $BINARY_NAME"
(l | L) echo "Ruby ABI: $RUBY_VERSION"
INSTALL_DIR="$HOME/.local/bin" echo "Add $INSTALL_DIR to PATH if needed."
SUDO="" }
;;
(g | G)
INSTALL_DIR="/usr/bin"
SUDO="sudo"
;;
(*)
echo "Invalid choice"
exit 1
;;
esac
$SUDO mkdir -p "$INSTALL_DIR" install "$@"
echo "Downloading binary..."
curl -L "$GITHUB_URL" -o /tmp/"$BINARY_NAME"
$SUDO install -m 755 /tmp/"$BINARY_NAME" "$INSTALL_DIR/$BINARY_NAME"
rm -f /tmp/"$BINARY_NAME"
echo
echo "✔ Crib installed to $INSTALL_DIR"
echo "Run with: $BINARY_NAME"
echo "Ruby ABI: $RUBY_VERSION"
echo "Add $INSTALL_DIR to PATH if needed."