04a1f33cb1
- Full-screen Bubble Tea TUI with cream background fill using PadLine/FillBlankLines - Self-update command (--update) pulling from GitHub releases - install.sh for curl one-liner installation - Terminal Lovers section on web landing page with install command and CLI features - All 7 format categories, glob/directory batch support, auto-download ffmpeg
110 lines
2.4 KiB
Bash
Executable File
110 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# Transmute CLI installer
|
|
# Usage: curl -fsSL https://raw.githubusercontent.com/noauf/Transmute/main/install.sh | sh
|
|
set -e
|
|
|
|
REPO="noauf/Transmute"
|
|
BINARY="transmute"
|
|
INSTALL_DIR="/usr/local/bin"
|
|
|
|
# Detect OS
|
|
OS="$(uname -s)"
|
|
case "$OS" in
|
|
Darwin) OS="darwin" ;;
|
|
Linux) OS="linux" ;;
|
|
MINGW*|MSYS*|CYGWIN*) OS="windows" ;;
|
|
*)
|
|
echo "Error: unsupported operating system: $OS"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Detect architecture
|
|
ARCH="$(uname -m)"
|
|
case "$ARCH" in
|
|
x86_64|amd64) ARCH="x86_64" ;;
|
|
arm64|aarch64) ARCH="arm64" ;;
|
|
*)
|
|
echo "Error: unsupported architecture: $ARCH"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Determine file extension
|
|
if [ "$OS" = "windows" ]; then
|
|
EXT="zip"
|
|
else
|
|
EXT="tar.gz"
|
|
fi
|
|
|
|
ASSET="${BINARY}-${OS}-${ARCH}.${EXT}"
|
|
|
|
echo "Transmute CLI installer"
|
|
echo "======================"
|
|
echo ""
|
|
echo " OS: $OS"
|
|
echo " Arch: $ARCH"
|
|
echo ""
|
|
|
|
# Get latest release tag
|
|
echo "Fetching latest release..."
|
|
TAG=$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | head -1 | sed 's/.*"tag_name": *"\([^"]*\)".*/\1/')
|
|
|
|
if [ -z "$TAG" ]; then
|
|
echo "Error: could not determine latest release"
|
|
exit 1
|
|
fi
|
|
|
|
echo " Latest version: $TAG"
|
|
|
|
DOWNLOAD_URL="https://github.com/${REPO}/releases/download/${TAG}/${ASSET}"
|
|
|
|
echo " Downloading $ASSET..."
|
|
|
|
# Create temp directory
|
|
TMP_DIR="$(mktemp -d)"
|
|
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
|
|
curl -fsSL "$DOWNLOAD_URL" -o "${TMP_DIR}/${ASSET}"
|
|
|
|
# Extract
|
|
echo " Extracting..."
|
|
if [ "$EXT" = "tar.gz" ]; then
|
|
tar -xzf "${TMP_DIR}/${ASSET}" -C "$TMP_DIR"
|
|
else
|
|
unzip -q "${TMP_DIR}/${ASSET}" -d "$TMP_DIR"
|
|
fi
|
|
|
|
# Find the binary
|
|
BIN_PATH=""
|
|
if [ -f "${TMP_DIR}/${BINARY}" ]; then
|
|
BIN_PATH="${TMP_DIR}/${BINARY}"
|
|
elif [ -f "${TMP_DIR}/${BINARY}-${OS}-${ARCH}/${BINARY}" ]; then
|
|
BIN_PATH="${TMP_DIR}/${BINARY}-${OS}-${ARCH}/${BINARY}"
|
|
fi
|
|
|
|
if [ -z "$BIN_PATH" ]; then
|
|
echo "Error: could not find ${BINARY} binary in archive"
|
|
exit 1
|
|
fi
|
|
|
|
chmod +x "$BIN_PATH"
|
|
|
|
# Install
|
|
echo " Installing to ${INSTALL_DIR}/${BINARY}..."
|
|
if [ -w "$INSTALL_DIR" ]; then
|
|
mv "$BIN_PATH" "${INSTALL_DIR}/${BINARY}"
|
|
else
|
|
echo " (requires sudo)"
|
|
sudo mv "$BIN_PATH" "${INSTALL_DIR}/${BINARY}"
|
|
fi
|
|
|
|
echo ""
|
|
echo " Installed transmute $TAG to ${INSTALL_DIR}/${BINARY}"
|
|
echo ""
|
|
echo " Get started:"
|
|
echo " transmute *.png Convert all PNGs"
|
|
echo " transmute ./files/ Convert all files in a directory"
|
|
echo " transmute --help Show all options"
|
|
echo ""
|