1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-04 14:26:46 +00:00

update mole

This commit is contained in:
Tw93
2025-09-25 20:26:59 +08:00
parent c35a210344
commit 65a9b0e354
6 changed files with 85 additions and 53 deletions

View File

@@ -1,30 +0,0 @@
class CleanMac < Formula
desc "Clean Mac - Deep Clean Your Mac with One Click"
homepage "https://github.com/tw93/clean-mac"
url "https://github.com/tw93/clean-mac/archive/refs/tags/v1.0.0.tar.gz"
sha256 "8274af48615205ab3ce4b75c9b2e898a53b4d49972cd7757fe8b6fe27603a5ab"
license "MIT"
head "https://github.com/tw93/clean-mac.git", branch: "main"
def install
bin.install "clean.sh" => "clean"
end
test do
# Test that the script is executable and shows help
assert_match "Clean Mac", shell_output("#{bin}/clean --help", 0)
end
def caveats
<<~EOS
Clean Mac has been installed!
Usage:
clean - User-level cleanup (no password required)
clean --system - Deep system cleanup (password required)
clean --help - Show help message
For Apple Silicon Macs, the tool includes M-series specific optimizations.
EOS
end
end

14
Formula/mole.rb Normal file
View File

@@ -0,0 +1,14 @@
class Mole < Formula
desc "Mole - Clean your Mac"
homepage "https://github.com/tw93/mole"
license "MIT"
head "https://github.com/tw93/mole.git", branch: "main"
def install
bin.install "mole"
end
test do
assert_match "Mole", shell_output("#{bin}/mole --help", 0)
end
end

View File

@@ -14,7 +14,7 @@
## Installation
```bash
curl -fsSL https://raw.githubusercontent.com/tw93/clean-mac/main/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash
```
## Usage
@@ -86,7 +86,7 @@ If Mole has been helpful to you:
- **Star this repository** and share with fellow Mac users
- **Report issues** or suggest new cleanup targets
- I have two cats, if you think Clean helps you, you can <a href="https://miaoyan.app/cats.html?name=CleanMac" target="_blank">feed them canned food 🥩🍤</a>
- I have two cats. If Mole helps you, you can <a href="https://miaoyan.app/cats.html?name=Mole" target="_blank">feed them canned food 🥩🍤</a>
## License

View File

@@ -34,7 +34,7 @@ should_preserve_bundle() {
# Help information
show_help() {
echo "Clean Mac - Interactive App Uninstaller"
echo "Mole - Interactive App Uninstaller"
echo "========================================"
echo ""
echo "Description: Interactive tool to uninstall applications and clean their data"
@@ -394,7 +394,7 @@ trap cleanup EXIT INT TERM
# Main function
main() {
echo "🗑️ Clean Mac - Interactive App Uninstaller"
echo "🗑️ Mole - Interactive App Uninstaller"
echo "============================================"
echo
@@ -444,4 +444,4 @@ main() {
}
# Run main function
main "$@"
main "$@"

View File

@@ -19,7 +19,8 @@ log_error() { echo -e "${RED}❌ $1${NC}"; }
# Default installation directory
INSTALL_DIR="/usr/local/bin"
CONFIG_DIR="$HOME/.config/clean"
CONFIG_DIR="$HOME/.config/mole"
SOURCE_DIR=""
show_help() {
cat << 'EOF'
@@ -31,7 +32,7 @@ USAGE:
OPTIONS:
--prefix PATH Install to custom directory (default: /usr/local/bin)
--config PATH Config directory (default: ~/.config/clean)
--config PATH Config directory (default: ~/.config/mole)
--uninstall Uninstall mole
--help, -h Show this help
@@ -47,6 +48,54 @@ The installer will:
EOF
}
# Resolve the directory containing source files (supports curl | bash)
resolve_source_dir() {
# 1) If script is on disk, use its directory
if [[ -n "${BASH_SOURCE[0]:-}" && -f "${BASH_SOURCE[0]}" ]]; then
local script_dir
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [[ -f "$script_dir/mole" || -d "$script_dir/bin" || -d "$script_dir/lib" ]]; then
SOURCE_DIR="$script_dir"
return 0
fi
fi
# 2) If CLEAN_SOURCE_DIR env is provided, honor it
if [[ -n "${CLEAN_SOURCE_DIR:-}" && -d "$CLEAN_SOURCE_DIR" ]]; then
SOURCE_DIR="$CLEAN_SOURCE_DIR"
return 0
fi
# 3) Fallback: fetch repository to a temp directory (works for curl | bash)
local tmp
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
echo "Fetching Mole source..."
if command -v curl >/dev/null 2>&1; then
# Download main branch tarball
if curl -fsSL -o "$tmp/mole.tar.gz" "https://github.com/tw93/mole/archive/refs/heads/main.tar.gz"; then
tar -xzf "$tmp/mole.tar.gz" -C "$tmp"
# Extracted folder name: mole-main
if [[ -d "$tmp/mole-main" ]]; then
SOURCE_DIR="$tmp/mole-main"
return 0
fi
fi
fi
# 4) Fallback to git if available
if command -v git >/dev/null 2>&1; then
if git clone --depth=1 https://github.com/tw93/mole.git "$tmp/mole" >/dev/null 2>&1; then
SOURCE_DIR="$tmp/mole"
return 0
fi
fi
log_error "Failed to fetch source files. Ensure curl or git is available."
exit 1
}
# Parse command line arguments
parse_args() {
while [[ $# -gt 0 ]]; do
@@ -125,40 +174,39 @@ create_directories() {
install_files() {
log_info "Installing mole files..."
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
resolve_source_dir
# Copy main executable
if [[ -f "$SCRIPT_DIR/mole" ]]; then
if [[ -f "$SOURCE_DIR/mole" ]]; then
if [[ "$INSTALL_DIR" == "/usr/local/bin" ]] && [[ ! -w "$INSTALL_DIR" ]]; then
sudo cp "$SCRIPT_DIR/mole" "$INSTALL_DIR/mole"
sudo cp "$SOURCE_DIR/mole" "$INSTALL_DIR/mole"
sudo chmod +x "$INSTALL_DIR/mole"
else
cp "$SCRIPT_DIR/mole" "$INSTALL_DIR/mole"
cp "$SOURCE_DIR/mole" "$INSTALL_DIR/mole"
chmod +x "$INSTALL_DIR/mole"
fi
log_success "Main executable installed to $INSTALL_DIR/mole"
else
log_error "mole executable not found in $SCRIPT_DIR"
log_error "mole executable not found in ${SOURCE_DIR:-unknown}"
exit 1
fi
# Copy configuration and modules
if [[ -d "$SCRIPT_DIR/bin" ]]; then
cp -r "$SCRIPT_DIR/bin"/* "$CONFIG_DIR/bin/"
if [[ -d "$SOURCE_DIR/bin" ]]; then
cp -r "$SOURCE_DIR/bin"/* "$CONFIG_DIR/bin/"
chmod +x "$CONFIG_DIR/bin"/*
log_success "Modules copied to $CONFIG_DIR/bin"
fi
if [[ -d "$SCRIPT_DIR/lib" ]]; then
cp -r "$SCRIPT_DIR/lib"/* "$CONFIG_DIR/lib/"
if [[ -d "$SOURCE_DIR/lib" ]]; then
cp -r "$SOURCE_DIR/lib"/* "$CONFIG_DIR/lib/"
log_success "Libraries copied to $CONFIG_DIR/lib"
fi
# Copy other files if they exist
for file in README.md LICENSE; do
if [[ -f "$SCRIPT_DIR/$file" ]]; then
cp "$SCRIPT_DIR/$file" "$CONFIG_DIR/"
if [[ -f "$SOURCE_DIR/$file" ]]; then
cp "$SOURCE_DIR/$file" "$CONFIG_DIR/"
fi
done
@@ -271,4 +319,4 @@ main() {
# Run installation
parse_args "$@"
main
main

6
mole
View File

@@ -38,7 +38,7 @@ COMMANDS:
mole uninstall # Remove applications completely
mole --help # Show this help message
For more information, visit: https://github.com/tw93/clean-mac
For more information, visit: https://github.com/tw93/mole
EOF
}
@@ -60,7 +60,7 @@ show_main_menu() {
show_menu_option 1 "Clean System - Remove junk files and optimize" "$([[ $selected -eq 1 ]] && echo true || echo false)"
show_menu_option 2 "Uninstall Apps - Completely remove applications" "$([[ $selected -eq 2 ]] && echo true || echo false)"
show_menu_option 3 "Help & Information - Usage guide and tips" "$([[ $selected -eq 3 ]] && echo true || echo false)"
show_menu_option 4 "Exit - Close Clean" "$([[ $selected -eq 4 ]] && echo true || echo false)"
show_menu_option 4 "Exit - Close Mole" "$([[ $selected -eq 4 ]] && echo true || echo false)"
if [[ "$redraw_full" == "true" ]]; then
echo ""
@@ -166,4 +166,4 @@ main() {
esac
}
main "$@"
main "$@"