feat(install): add Rust auto-installation to install.sh
Swadhin Biswas committed 7 months ago
3d51464
1 parent 193d13b
commit 3d51464
1 file changed
+70 -0
Showing 1 changed file+70-0
▼install.sh
+70-0
| @@ -48,3 +48,73 @@ for arg in "$@"; do | ||
48 | 48 | echo "FetchX Installer" |
49 | 49 | echo "" |
50 | 50 | echo "Usage: ./install.sh [OPTIONS]" |
51 | + echo "" | |
52 | + echo "Options:" | |
53 | + echo " --prefix=PATH Installation prefix (default: ~/.local)" | |
54 | + echo " --system Install system-wide to /usr/local (requires sudo)" | |
55 | + echo " --uninstall Remove FetchX" | |
56 | + echo " --no-alias Skip shell alias setup" | |
57 | + echo " --help Show this help" | |
58 | + exit 0 | |
59 | + ;; | |
60 | + *) | |
61 | + echo -e "${RED}Unknown option: $arg${RESET}" | |
62 | + exit 1 | |
63 | + ;; | |
64 | + esac | |
65 | +done | |
66 | + | |
67 | +BINDIR="$PREFIX/bin" | |
68 | + | |
69 | +# ── Helper functions ───────────────────────────────────────────────────────── | |
70 | +info() { echo -e "${BLUE}::${RESET} $*"; } | |
71 | +success() { echo -e "${GREEN}✓${RESET} $*"; } | |
72 | +warn() { echo -e "${YELLOW}!${RESET} $*"; } | |
73 | +error() { echo -e "${RED}✗${RESET} $*"; exit 1; } | |
74 | + | |
75 | +command_exists() { command -v "$1" &>/dev/null; } | |
76 | + | |
77 | +maybe_sudo() { | |
78 | + if [[ "$SYSTEM_INSTALL" == true ]]; then | |
79 | + sudo "$@" | |
80 | + else | |
81 | + "$@" | |
82 | + fi | |
83 | +} | |
84 | + | |
85 | +# ── Uninstall ──────────────────────────────────────────────────────────────── | |
86 | +if [[ "$UNINSTALL" == true ]]; then | |
87 | + info "Uninstalling FetchX..." | |
88 | + | |
89 | + if [[ -f "$BINDIR/$BINARY_NAME" ]]; then | |
90 | + maybe_sudo rm -f "$BINDIR/$BINARY_NAME" | |
91 | + success "Removed $BINDIR/$BINARY_NAME" | |
92 | + else | |
93 | + warn "Binary not found at $BINDIR/$BINARY_NAME" | |
94 | + fi | |
95 | + | |
96 | + # Remove config (ask first) | |
97 | + if [[ -d "$HOME/.config/fetchx" ]]; then | |
98 | + read -rp "Remove config directory (~/.config/fetchx)? [y/N] " answer | |
99 | + if [[ "$answer" =~ ^[Yy]$ ]]; then | |
100 | + rm -rf "$HOME/.config/fetchx" | |
101 | + success "Removed ~/.config/fetchx" | |
102 | + fi | |
103 | + fi | |
104 | + | |
105 | + # Remove cache | |
106 | + if [[ -d "$HOME/.cache/fetchx" ]]; then | |
107 | + rm -rf "$HOME/.cache/fetchx" | |
108 | + success "Removed ~/.cache/fetchx" | |
109 | + fi | |
110 | + | |
111 | + success "FetchX uninstalled!" | |
112 | + exit 0 | |
113 | +fi | |
114 | + | |
115 | +# ── Banner ─────────────────────────────────────────────────────────────────── | |
116 | +echo -e "${CYAN}${BOLD}" | |
117 | +echo " ╔═══════════════════════════════════════╗" | |
118 | +echo " ║ ⚡ FetchX Installer ⚡ ║" | |
119 | +echo " ║ Fast system info tool written in Rust ║" | |
120 | +echo " ╚═══════════════════════════════════════╝" | |
51 | 121 | |