|
2 | 2 | set -e |
3 | 3 |
|
4 | 4 | APPNAME="ipm" |
5 | | -INSTALL_DIR="$HOME/.local/share/$APPNAME" |
6 | | -BIN_PATH="/usr/local/bin/$APPNAME" |
| 5 | + |
| 6 | +# Universal cross-platform user-level bin directory |
| 7 | +INSTALL_DIR="$HOME/.local/bin" |
7 | 8 |
|
8 | 9 | # Detect OS + ARCH |
9 | 10 | OS="$(uname | tr '[:upper:]' '[:lower:]')" |
10 | 11 | ARCH="$(uname -m)" |
11 | 12 |
|
12 | 13 | # Normalize architecture |
13 | | -if [ "$ARCH" = "x86_64" ]; then |
14 | | - ARCH="amd64" |
15 | | -elif [ "$ARCH" = "aarch64" ]; then |
16 | | - ARCH="arm64" |
17 | | -fi |
| 14 | +case "$ARCH" in |
| 15 | + x86_64) ARCH="amd64" ;; |
| 16 | + aarch64) ARCH="arm64" ;; |
| 17 | +esac |
18 | 18 |
|
19 | 19 | EXT="" |
20 | 20 | if [[ "$OS" == "mingw"* || "$OS" == "cygwin"* || "$OS" == "msys"* ]]; then |
|
25 | 25 | DOWNLOAD_URL="https://github.com/HexmosTech/freeDevTools/releases/latest/download/ipm-$OS-$ARCH$EXT" |
26 | 26 | TARGET="$INSTALL_DIR/$APPNAME$EXT" |
27 | 27 |
|
28 | | -# Check if binary exists and is valid |
| 28 | +mkdir -p "$INSTALL_DIR" |
| 29 | + |
| 30 | +# Check if valid binary already exists |
29 | 31 | if [[ -f "$TARGET" ]]; then |
30 | 32 | if [[ "$OS" != "windows" ]]; then |
31 | 33 | if [[ -x "$TARGET" ]] && file "$TARGET" | grep -q 'ELF\|Mach-O'; then |
32 | | - echo "==> $APPNAME already installed and valid at $TARGET, skipping installation." |
| 34 | + echo "==> $APPNAME already installed and valid at $TARGET" |
| 35 | + echo "Run it using: $APPNAME" |
| 36 | + exit 0 |
33 | 37 | else |
34 | | - echo "==> $APPNAME binary is invalid, re-downloading..." |
| 38 | + echo "==> Invalid binary found, reinstalling..." |
35 | 39 | rm -f "$TARGET" |
36 | | - NEED_INSTALL=true |
37 | 40 | fi |
38 | 41 | else |
39 | | - echo "==> $APPNAME already exists at $TARGET, skipping installation." |
| 42 | + echo "==> $APPNAME already exists at $TARGET" |
| 43 | + echo "Run it using: $TARGET" |
| 44 | + exit 0 |
40 | 45 | fi |
41 | 46 | fi |
42 | 47 |
|
43 | | -if [[ ! -f "$TARGET" || "$NEED_INSTALL" == true ]]; then |
44 | | - echo "==> Installing $APPNAME ($OS-$ARCH) to $INSTALL_DIR ..." |
45 | | - mkdir -p "$INSTALL_DIR" |
46 | | - |
47 | | - echo "==> Downloading from $DOWNLOAD_URL ..." |
48 | | - curl -L "$DOWNLOAD_URL" -o "$TARGET" |
| 48 | +echo "==> Installing $APPNAME ($OS-$ARCH) to $INSTALL_DIR ..." |
| 49 | +echo "==> Downloading from $DOWNLOAD_URL ..." |
| 50 | +curl -L "$DOWNLOAD_URL" -o "$TARGET" |
49 | 51 |
|
50 | | - # Only chmod on Unix |
51 | | - if [[ "$OS" != "windows" ]]; then |
52 | | - chmod +x "$TARGET" |
53 | | - echo "==> Creating symlink at $BIN_PATH ..." |
54 | | - sudo ln -sf "$TARGET" "$BIN_PATH" |
55 | | - fi |
56 | | - |
57 | | - echo "==> Installation complete!" |
| 52 | +if [[ "$OS" != "windows" ]]; then |
| 53 | + chmod +x "$TARGET" |
58 | 54 | fi |
59 | 55 |
|
| 56 | +echo "==> Installation complete!" |
| 57 | + |
60 | 58 | if [[ "$OS" == "windows" ]]; then |
61 | | - echo "Run it using: $INSTALL_DIR\\$APPNAME$EXT" |
| 59 | + echo "Run it using: $TARGET" |
62 | 60 | else |
63 | 61 | echo "Run it using: $APPNAME" |
64 | 62 | fi |
0 commit comments