Skip to content

Commit 8f8c750

Browse files
committed
install.sh script updates
1 parent fae77e9 commit 8f8c750

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

install.sh

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Usage: curl -sSfL https://github.com/duneanalytics/cli/raw/main/install.sh | bash
44
#
55
# Environment variables:
6-
# INSTALL_DIR — installation directory (default: /usr/local/bin)
6+
# INSTALL_DIR — override installation directory (default: auto-detected)
77
# VERSION — specific version to install (default: latest)
88
# GITHUB_TOKEN — GitHub token for private repo access
99

@@ -30,7 +30,11 @@ main() {
3030
# Strip leading 'v' for archive name
3131
version_num="${version#v}"
3232

33-
install_dir="${INSTALL_DIR:-/usr/local/bin}"
33+
if [ -n "$INSTALL_DIR" ]; then
34+
install_dir="$INSTALL_DIR"
35+
else
36+
install_dir=$(detect_install_dir)
37+
fi
3438

3539
case "$os" in
3640
windows) ext="zip" ;;
@@ -68,16 +72,39 @@ main() {
6872

6973
chmod +x "$tmp/$binary_name"
7074

75+
mkdir -p "$install_dir" 2>/dev/null || true
76+
7177
if [ -w "$install_dir" ]; then
7278
mv "$tmp/$binary_name" "$install_dir/$binary_name"
7379
else
7480
log "Installing to ${install_dir} (requires sudo)..."
81+
sudo mkdir -p "$install_dir"
7582
sudo mv "$tmp/$binary_name" "$install_dir/$binary_name"
7683
fi
7784

7885
log "Installed ${BINARY} ${version} to ${install_dir}/${binary_name}"
7986
}
8087

88+
# Pick the best install directory by checking user-writable directories
89+
# already on PATH, falling back to /usr/local/bin (always on PATH).
90+
detect_install_dir() {
91+
for candidate in \
92+
"$HOME/.local/bin" \
93+
"$HOME/bin" \
94+
"$HOME/go/bin" \
95+
"$HOME/.cargo/bin"; do
96+
case ":$PATH:" in
97+
*":${candidate}:"*)
98+
if [ -d "$candidate" ] && [ -w "$candidate" ]; then
99+
echo "$candidate"
100+
return
101+
fi
102+
;;
103+
esac
104+
done
105+
echo "/usr/local/bin"
106+
}
107+
81108
detect_os() {
82109
os=$(uname -s | tr '[:upper:]' '[:lower:]')
83110
case "$os" in

0 commit comments

Comments
 (0)