mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 15:39:42 +00:00
🎨 Optimize code structure and reuse
This commit is contained in:
@@ -270,7 +270,8 @@ start_cleanup() {
|
|||||||
if [[ -t 0 ]]; then
|
if [[ -t 0 ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "System-level cleanup removes system caches and temp files, optional."
|
echo "System-level cleanup removes system caches and temp files, optional."
|
||||||
echo -en "${BLUE}Enter admin password to enable, or press Enter to skip: ${NC}"
|
echo -e "${BLUE}Enter admin password to enable, or press Enter to skip:${NC}"
|
||||||
|
echo -n "> "
|
||||||
read -s password
|
read -s password
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|||||||
37
install.sh
37
install.sh
@@ -440,32 +440,38 @@ perform_update() {
|
|||||||
check_requirements
|
check_requirements
|
||||||
|
|
||||||
if command -v brew >/dev/null 2>&1 && brew list mole >/dev/null 2>&1; then
|
if command -v brew >/dev/null 2>&1 && brew list mole >/dev/null 2>&1; then
|
||||||
|
# Try to use shared function if available (when running from installed Mole)
|
||||||
|
resolve_source_dir 2>/dev/null || true
|
||||||
|
if [[ -f "$SOURCE_DIR/lib/common.sh" ]]; then
|
||||||
|
# shellcheck disable=SC1090,SC1091
|
||||||
|
source "$SOURCE_DIR/lib/common.sh"
|
||||||
|
update_via_homebrew "$VERSION"
|
||||||
|
else
|
||||||
|
# Fallback: inline implementation
|
||||||
echo -e "${BLUE}→${NC} Updating Homebrew..."
|
echo -e "${BLUE}→${NC} Updating Homebrew..."
|
||||||
# Update Homebrew with real-time output
|
brew update 2>&1 | grep -Ev "^(==>|Already up-to-date)" || true
|
||||||
brew update 2>&1 | grep -v "^==>" | grep -v "^Already up-to-date" || true
|
|
||||||
|
|
||||||
echo -e "${BLUE}→${NC} Upgrading Mole..."
|
echo -e "${BLUE}→${NC} Upgrading Mole..."
|
||||||
local upgrade_output
|
local upgrade_output
|
||||||
upgrade_output=$(brew upgrade mole 2>&1) || true
|
upgrade_output=$(brew upgrade mole 2>&1) || true
|
||||||
|
|
||||||
if echo "$upgrade_output" | grep -q "already installed"; then
|
if echo "$upgrade_output" | grep -q "already installed"; then
|
||||||
# Get current version from brew
|
|
||||||
local current_version
|
local current_version
|
||||||
current_version=$(brew info mole 2>/dev/null | grep "mole:" | awk '{print $3}' | head -1)
|
current_version=$(brew list --versions mole 2>/dev/null | awk '{print $2}')
|
||||||
echo -e "${GREEN}✓${NC} Already on latest version (${current_version:-$VERSION})"
|
echo -e "${GREEN}✓${NC} Already on latest version (${current_version:-$VERSION})"
|
||||||
elif echo "$upgrade_output" | grep -q "Error:"; then
|
elif echo "$upgrade_output" | grep -q "Error:"; then
|
||||||
log_error "Update failed. Try: brew update && brew upgrade mole"
|
log_error "Homebrew upgrade failed"
|
||||||
|
echo "$upgrade_output" | grep "Error:" >&2
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
# Show upgrade output (exclude headers and warnings)
|
echo "$upgrade_output" | grep -Ev "^(==>|Updating Homebrew|Warning:)" || true
|
||||||
echo "$upgrade_output" | grep -v "^==>" | grep -v "^Updating Homebrew" | grep -v "^Warning:"
|
|
||||||
# Get new version
|
|
||||||
local new_version
|
local new_version
|
||||||
new_version=$(brew info mole 2>/dev/null | grep "mole:" | awk '{print $3}' | head -1)
|
new_version=$(brew list --versions mole 2>/dev/null | awk '{print $2}')
|
||||||
echo -e "${GREEN}✓${NC} Updated to latest version (${new_version:-$VERSION})"
|
echo -e "${GREEN}✓${NC} Updated to latest version (${new_version:-$VERSION})"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f "$HOME/.cache/mole/version_check" "$HOME/.cache/mole/update_message"
|
rm -f "$HOME/.cache/mole/version_check" "$HOME/.cache/mole/update_message"
|
||||||
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -492,11 +498,14 @@ perform_update() {
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update silently
|
# Update with minimal output (suppress info/success, show errors only)
|
||||||
create_directories >/dev/null 2>&1
|
local old_verbose=$VERBOSE
|
||||||
install_files >/dev/null 2>&1
|
VERBOSE=0
|
||||||
verify_installation >/dev/null 2>&1
|
create_directories || { VERBOSE=$old_verbose; log_error "Failed to create directories"; exit 1; }
|
||||||
setup_path >/dev/null 2>&1
|
install_files || { VERBOSE=$old_verbose; log_error "Failed to install files"; exit 1; }
|
||||||
|
verify_installation || { VERBOSE=$old_verbose; log_error "Failed to verify installation"; exit 1; }
|
||||||
|
setup_path
|
||||||
|
VERBOSE=$old_verbose
|
||||||
|
|
||||||
local updated_version
|
local updated_version
|
||||||
updated_version="$(get_installed_version || true)"
|
updated_version="$(get_installed_version || true)"
|
||||||
|
|||||||
@@ -260,6 +260,41 @@ request_sudo() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Homebrew update utilities
|
||||||
|
update_via_homebrew() {
|
||||||
|
local version="${1:-unknown}"
|
||||||
|
|
||||||
|
echo -e "${BLUE}→${NC} Updating Homebrew..."
|
||||||
|
# Filter out common noise but show important info
|
||||||
|
brew update 2>&1 | grep -Ev "^(==>|Already up-to-date)" || true
|
||||||
|
|
||||||
|
echo -e "${BLUE}→${NC} Upgrading Mole..."
|
||||||
|
local upgrade_output
|
||||||
|
upgrade_output=$(brew upgrade mole 2>&1) || true
|
||||||
|
|
||||||
|
if echo "$upgrade_output" | grep -q "already installed"; then
|
||||||
|
# Get current version
|
||||||
|
local current_version
|
||||||
|
current_version=$(brew list --versions mole 2>/dev/null | awk '{print $2}')
|
||||||
|
echo -e "${GREEN}✓${NC} Already on latest version (${current_version:-$version})"
|
||||||
|
elif echo "$upgrade_output" | grep -q "Error:"; then
|
||||||
|
log_error "Homebrew upgrade failed"
|
||||||
|
echo "$upgrade_output" | grep "Error:" >&2
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
# Show relevant output, filter noise
|
||||||
|
echo "$upgrade_output" | grep -Ev "^(==>|Updating Homebrew|Warning:)" || true
|
||||||
|
# Get new version
|
||||||
|
local new_version
|
||||||
|
new_version=$(brew list --versions mole 2>/dev/null | awk '{print $2}')
|
||||||
|
echo -e "${GREEN}✓${NC} Updated to latest version (${new_version:-$version})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clear version check cache
|
||||||
|
rm -f "$HOME/.cache/mole/version_check" "$HOME/.cache/mole/update_message"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# Load basic configuration
|
# Load basic configuration
|
||||||
load_config() {
|
load_config() {
|
||||||
MOLE_MAX_LOG_SIZE="${MOLE_MAX_LOG_SIZE:-1048576}"
|
MOLE_MAX_LOG_SIZE="${MOLE_MAX_LOG_SIZE:-1048576}"
|
||||||
|
|||||||
24
mole
24
mole
@@ -143,29 +143,7 @@ show_help() {
|
|||||||
update_mole() {
|
update_mole() {
|
||||||
# Check if installed via Homebrew
|
# Check if installed via Homebrew
|
||||||
if command -v brew >/dev/null 2>&1 && brew list mole >/dev/null 2>&1; then
|
if command -v brew >/dev/null 2>&1 && brew list mole >/dev/null 2>&1; then
|
||||||
echo -e "${BLUE}→${NC} Updating Homebrew..."
|
update_via_homebrew "$VERSION"
|
||||||
# Update Homebrew with real-time output
|
|
||||||
brew update 2>&1 | grep -v "^==>" | grep -v "^Already up-to-date" || true
|
|
||||||
|
|
||||||
echo -e "${BLUE}→${NC} Upgrading Mole..."
|
|
||||||
local upgrade_output
|
|
||||||
upgrade_output=$(brew upgrade mole 2>&1) || true
|
|
||||||
|
|
||||||
if echo "$upgrade_output" | grep -q "already installed"; then
|
|
||||||
echo -e "${GREEN}✓${NC} Already on latest version ($VERSION)"
|
|
||||||
elif echo "$upgrade_output" | grep -q "Error:"; then
|
|
||||||
log_error "Update failed. Try: brew update && brew upgrade mole"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
# Show upgrade output (exclude headers and warnings)
|
|
||||||
echo "$upgrade_output" | grep -v "^==>" | grep -v "^Updating Homebrew" | grep -v "^Warning:"
|
|
||||||
# Get new version
|
|
||||||
local new_version
|
|
||||||
new_version=$(brew info mole 2>/dev/null | grep "mole:" | awk '{print $3}' | head -1)
|
|
||||||
echo -e "${GREEN}✓${NC} Updated to latest version (${new_version:-$VERSION})"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f "$HOME/.cache/mole/version_check" "$HOME/.cache/mole/update_message"
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user