112 lines
2.9 KiB
Bash
112 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -x
|
|
|
|
cd /var/tmp || exit
|
|
|
|
USER=oven-sh
|
|
PROJECT=bun
|
|
ARCH=$(dpkg --print-architecture)
|
|
|
|
LATEST_URL="https://github.com/${USER}/${PROJECT}/releases/latest"
|
|
RELEASE=$(curl -L -s -H 'Accept: application/json' "${LATEST_URL}" | jq -r '.tag_name | sub("^bun-v"; "")')
|
|
GIT_TAG=$(curl -L -s -H 'Accept: application/json' "${LATEST_URL}" | jq -r .tag_name)
|
|
|
|
# Verify we got a valid release version
|
|
if [ -z "$RELEASE" ]; then
|
|
echo "Error: Could not fetch release version from GitHub"
|
|
exit 1
|
|
fi
|
|
|
|
RSS_FEED="https://github.com/${USER}/${PROJECT}/releases.atom"
|
|
echo ${RSS_FEED}
|
|
|
|
mkdir -p /var/tmp/${PROJECT}-"${RELEASE}"
|
|
cd /var/tmp/${PROJECT}-"${RELEASE}" || exit
|
|
|
|
cat >./description-pak <<-EOF
|
|
Bun is a JavaScript runtime, bundler, transpiler and package manager.
|
|
EOF
|
|
|
|
cat >./checkinstall_it.sh <<-EOF
|
|
echo "ENTERING CHECKINSTALL"
|
|
|
|
BASE_URL='https://raw.githubusercontent.com/'
|
|
BASE_USER=${USER}
|
|
BASE_REPO=${PROJECT}
|
|
LICENSE_URL="${BASE_URL}/${BASE_USER}/${BASE_REPO}"/master/LICENSE
|
|
|
|
# Use the full tag name as version (e.g., v1.2.23)
|
|
VERSION="${RELEASE}"
|
|
RELEASE="1"
|
|
LICENSE=MIT
|
|
|
|
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
|
|
mkdir -p \${BASE_TMP_DIR}
|
|
|
|
checkinstall -y --fstrans \
|
|
--exclude=/root/.sudo_as_admin_successful \
|
|
--pkgname=\${PROJECT} \
|
|
--pkgversion=\${VERSION}\
|
|
--pkgrelease="\${RELEASE}" \
|
|
--pkgarch=${ARCH} \
|
|
--pkggroup=development \
|
|
--pkglicense=MIT \
|
|
--pkgsource=${LATEST_URL} \
|
|
--maintainer=cyteen@ring-zero.co.uk \
|
|
--requires=unzip \
|
|
-D \
|
|
bash ./install.sh
|
|
EOF
|
|
|
|
cat >./install.sh <<-EOF
|
|
#!/bin/bash
|
|
|
|
DIR="\$HOME/.local/bun"
|
|
BIN_DIR="\$DIR/bin"
|
|
EXE="\$BIN_DIR/bun"
|
|
|
|
# Create installation directory
|
|
mkdir -p "\$BIN_DIR" || true
|
|
|
|
# Download binary based on architecture
|
|
case \$(uname -m) in
|
|
x86_64) URL="https://github.com/${USER}/${PROJECT}/releases/download/${GIT_TAG}/bun-linux-x64.zip" ;;
|
|
aarch64) URL="https://github.com/${USER}/${PROJECT}/releases/download/${GIT_TAG}/bun-linux-aarch64.zip" ;;
|
|
*) echo "Unsupported architecture"; exit 1 ;;
|
|
esac
|
|
|
|
# Download and extract bun
|
|
# curl -Lo bun.zip "\$URL"
|
|
# unzip -q bun.zip -d "\$BIN_DIR"
|
|
# rm bun.zip
|
|
|
|
# Install binary
|
|
# install -Dm 755 "\$BIN_DIR/bun-\$(uname -s)-\$(uname -m)/bun" "\$EXE"
|
|
|
|
# Clean up
|
|
# rm -rf "\$BIN_DIR/bun-\$(uname -s)-\$(uname -m)" "\$EXE.zip"
|
|
|
|
npm install -g bun
|
|
|
|
# Install shell completions
|
|
if command -v bun >/dev/null; then
|
|
IS_BUN_AUTO_UPDATE=true \$EXE completions &>/dev/null || :
|
|
fi
|
|
|
|
# Add to PATH
|
|
case \$(basename "\$SHELL") in
|
|
bash)
|
|
echo "export BUN_INSTALL=\$DIR" | tee \$HOME/.bashrc.d/003_bun.sh
|
|
echo "export PATH=\$BIN_DIR:\$PATH" | tee -a \$HOME/.bashrc.d/003_bun.sh
|
|
echo "source \$HOME/.bashrc.d/003_bun.sh"
|
|
;;
|
|
zsh)
|
|
echo "export BUN_INSTALL=\$DIR" | tee \$HOME/.zshrc.d/003_bun.zsh
|
|
echo "export PATH=\$BIN_DIR:\$PATH" | tee -a \$HOME/.zshrc.d/003_bun.zsh
|
|
echo "exec \$SHELL"
|
|
;;
|
|
esac
|
|
EOF
|
|
|
|
sudo bash ./checkinstall_it.sh
|