mirror of
https://github.com/tw93/Mole.git
synced 2026-02-09 17:19:16 +00:00
🐛 update install
This commit is contained in:
98
install.sh
98
install.sh
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user