1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-09 17:19:16 +00:00

🐛 update install

This commit is contained in:
Tw93
2025-09-25 20:46:02 +08:00
parent dfaccc669e
commit c48ad6fcb7

View File

@@ -4,17 +4,23 @@
set -euo pipefail set -euo pipefail
# Plain logging (no colors/emojis) # Colors
log_info() { printf "%s\n" "$1"; } GREEN='\033[0;32m'
log_success() { printf "%s\n" "$1"; } BLUE='\033[0;34m'
log_warning() { printf "Warning: %s\n" "$1"; } YELLOW='\033[1;33m'
log_error() { printf "Error: %s\n" "$1"; } RED='\033[0;31m'
NC='\033[0m'
# Logging functions
log_info() { echo -e "${BLUE}$1${NC}"; }
log_success() { echo -e "${GREEN}$1${NC}"; }
log_warning() { echo -e "${YELLOW}⚠️ $1${NC}"; }
log_error() { echo -e "${RED}$1${NC}"; }
# Default installation directory # Default installation directory
INSTALL_DIR="/usr/local/bin" INSTALL_DIR="/usr/local/bin"
CONFIG_DIR="$HOME/.config/mole" CONFIG_DIR="$HOME/.config/mole"
SOURCE_DIR="" SOURCE_DIR=""
VERBOSE=0
show_help() { show_help() {
cat << 'EOF' cat << 'EOF'
@@ -26,9 +32,8 @@ USAGE:
OPTIONS: OPTIONS:
--prefix PATH Install to custom directory (default: /usr/local/bin) --prefix PATH Install to custom directory (default: /usr/local/bin)
--config PATH Config directory (default: ~/.config/mole) --config PATH Config directory (default: ~/.config/clean)
--uninstall Uninstall mole --uninstall Uninstall mole
--verbose, -v Print progress and success messages
--help, -h Show this help --help, -h Show this help
EXAMPLES: EXAMPLES:
@@ -64,10 +69,9 @@ resolve_source_dir() {
# 3) Fallback: fetch repository to a temp directory (works for curl | bash) # 3) Fallback: fetch repository to a temp directory (works for curl | bash)
local tmp local tmp
tmp="$(mktemp -d)" tmp="$(mktemp -d)"
# Expand tmp now so trap doesn't depend on local scope trap 'rm -rf "$tmp"' EXIT
trap "rm -rf '$tmp'" EXIT
log_info "Fetching Mole source..." echo "Fetching Mole source..."
if command -v curl >/dev/null 2>&1; then if command -v curl >/dev/null 2>&1; then
# Download main branch tarball # Download main branch tarball
if curl -fsSL -o "$tmp/mole.tar.gz" "https://github.com/tw93/mole/archive/refs/heads/main.tar.gz"; then if curl -fsSL -o "$tmp/mole.tar.gz" "https://github.com/tw93/mole/archive/refs/heads/main.tar.gz"; then
@@ -108,10 +112,6 @@ parse_args() {
uninstall_mole uninstall_mole
exit 0 exit 0
;; ;;
--verbose|-v)
VERBOSE=1
shift 1
;;
--help|-h) --help|-h)
show_help show_help
exit 0 exit 0
@@ -239,23 +239,20 @@ verify_installation() {
# Add to PATH if needed # Add to PATH if needed
setup_path() { setup_path() {
# Only output in verbose mode # Check if install directory is in PATH
if [[ ${VERBOSE:-0} -eq 1 ]]; then if [[ ":$PATH:" == *":$INSTALL_DIR:"* ]]; then
# Check if install directory is in PATH log_success "$INSTALL_DIR is already in PATH"
if [[ ":$PATH:" == *":$INSTALL_DIR:"* ]]; then return
log_success "$INSTALL_DIR is already in PATH" fi
return
fi
# Only suggest PATH setup for custom directories # Only suggest PATH setup for custom directories
if [[ "$INSTALL_DIR" != "/usr/local/bin" ]]; then if [[ "$INSTALL_DIR" != "/usr/local/bin" ]]; then
log_warning "$INSTALL_DIR is not in your PATH" log_warning "$INSTALL_DIR is not in your PATH"
echo "" echo ""
echo "To use mole from anywhere, add this line to your shell profile:" echo "To use mole from anywhere, add this line to your shell profile:"
echo "export PATH=\"$INSTALL_DIR:\$PATH\"" echo "export PATH=\"$INSTALL_DIR:\$PATH\""
echo "" echo ""
echo "For example, add it to ~/.zshrc or ~/.bash_profile" echo "For example, add it to ~/.zshrc or ~/.bash_profile"
fi
fi fi
} }
@@ -291,11 +288,9 @@ uninstall_mole() {
# Main installation function # Main installation function
main() { main() {
if [[ ${VERBOSE:-0} -eq 1 ]]; then echo "🕳️ Mole Installation Script"
echo "Mole Installation" echo "============================"
echo "-----------------" echo ""
echo ""
fi
check_requirements check_requirements
create_directories create_directories
@@ -303,22 +298,23 @@ main() {
verify_installation verify_installation
setup_path setup_path
if [[ ${VERBOSE:-0} -eq 1 ]]; then echo ""
echo "" echo "══════════════════════════════════════════════════════════════════════"
log_success "Mole installed successfully" log_success "Mole installed successfully!"
echo "" echo ""
echo "Usage:" echo "Usage:"
if [[ ":$PATH:" == *":$INSTALL_DIR:"* ]]; then if [[ ":$PATH:" == *":$INSTALL_DIR:"* ]]; then
echo " mole # Interactive menu" echo " mole # Interactive menu"
echo " mole clean # System cleanup" echo " mole clean # System cleanup"
echo " mole uninstall # Remove applications" echo " mole uninstall # Remove applications"
else else
echo " $INSTALL_DIR/mole # Interactive menu" echo " $INSTALL_DIR/mole # Interactive menu"
echo " $INSTALL_DIR/mole clean # System cleanup" echo " $INSTALL_DIR/mole clean # System cleanup"
echo " $INSTALL_DIR/mole uninstall # Remove applications" echo " $INSTALL_DIR/mole uninstall # Remove applications"
fi
echo ""
fi fi
echo ""
echo "Configuration stored in: $CONFIG_DIR"
echo "══════════════════════════════════════════════════════════════════════"
} }
# Run installation # Run installation