mac_cleaner 1.0.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 798e1fb145bf3e42e1dbdd3f0ff730ef8791c39319da30dd71e934bfb4bd63e3
4
- data.tar.gz: 0e157805a9d9597173f17bafd3954c807869d41d13bc4b8c66db14cac38bb176
3
+ metadata.gz: 67f838fa1f2e9d1fb2c4f346edf39c5910ee2d1bcb1c33c2e920f15ddc6b9c59
4
+ data.tar.gz: 41de30e4dff929ea9a0f74a7fc62200d926fe06c653aaed1543d88bc2d00986f
5
5
  SHA512:
6
- metadata.gz: ead2932fe815b080bee1190c31bb1319a492d3b1ea044ac1cdbe455a08c78736019ce0b225212051c812b9a0160b4a324f9c039aefffe0c03b5e4205a9599309
7
- data.tar.gz: 45f114b1dd0045852e30237e301797d9ba0cbd8a630d9a05f3318cdb24a653f214abefc7108992715695c8adc6d39f46d7adb5f1ae4fe05460f8a7857c04b56d
6
+ metadata.gz: f2ba285c2335c2ce3747146cfb250f065b19a7d5a4c1212904b8d835681001bf7e30437a929b01b567af352d16fb00b84d83d4cc78c2ed457477a3d939febf87
7
+ data.tar.gz: 9e77581c83b491054d3e5c33e20b7cb4380d4b01d69c941762844e3257a6efcbde4a31a0c9a16fc1a919a8d7f6b5d230f8e8eed8e0f2b8ab85f8242538d2e87d
data/README.md CHANGED
@@ -17,7 +17,7 @@ gem install mac_cleaner
17
17
  ### From the `.gem` file
18
18
 
19
19
  ```bash
20
- gem install ./mac_cleaner-1.0.0.gem
20
+ gem install ./mac_cleaner-1.2.1.gem
21
21
  ```
22
22
 
23
23
  ### From the git repository
@@ -40,6 +40,13 @@ mac_cleaner clean
40
40
 
41
41
  * `--dry-run`, `-n`: Perform a dry run without deleting files.
42
42
  * `--sudo`: Run with sudo for system-level cleanup.
43
+ * `--interactive`, `-i`: Review each section and choose what to clean before anything runs.
44
+
45
+ ### Check the current version
46
+
47
+ ```bash
48
+ mac_cleaner --version
49
+ ```
43
50
 
44
51
  ### Analyze disk space
45
52
 
@@ -2,14 +2,27 @@ require 'fileutils'
2
2
 
3
3
  module MacCleaner
4
4
  class Cleaner
5
- def initialize(dry_run: false, sudo: false)
5
+ def initialize(dry_run: false, sudo: false, interactive: false, input: $stdin)
6
6
  @dry_run = dry_run
7
7
  @sudo = sudo
8
+ @interactive = interactive
9
+ @input = input
8
10
  @total_size_cleaned = 0
9
11
  end
10
12
 
11
13
  def clean
12
- CLEANUP_SECTIONS.each do |section|
14
+ sections = if @interactive
15
+ interactive_section_selection(CLEANUP_SECTIONS)
16
+ else
17
+ CLEANUP_SECTIONS
18
+ end
19
+
20
+ if sections.empty?
21
+ puts "\nNo sections selected. Exiting."
22
+ return
23
+ end
24
+
25
+ sections.each do |section|
13
26
  if section[:sudo] && !@sudo
14
27
  puts "\nSkipping '#{section[:name]}' (requires sudo)"
15
28
  next
@@ -67,6 +80,36 @@ module MacCleaner
67
80
  # Skip paths we cannot access
68
81
  end
69
82
 
83
+ def interactive_section_selection(sections)
84
+ puts "\nInteractive mode enabled. Review each section before cleaning."
85
+ sections.each_with_object([]) do |section, selected|
86
+ label = section[:sudo] ? "#{section[:name]} (requires sudo)" : section[:name]
87
+ puts "\n#{label}"
88
+ section[:targets].each do |target|
89
+ puts " - #{target[:name]}"
90
+ end
91
+ if confirm_selection?(section[:name])
92
+ selected << section
93
+ else
94
+ puts " Skipping '#{section[:name]}'"
95
+ end
96
+ end
97
+ end
98
+
99
+ def confirm_selection?(name)
100
+ print "Proceed with '#{name}'? [y/N]: "
101
+ $stdout.flush
102
+ response = @input.gets
103
+ return false unless response
104
+
105
+ case response.strip.downcase
106
+ when "y", "yes"
107
+ true
108
+ else
109
+ false
110
+ end
111
+ end
112
+
70
113
  def get_size(path, sudo = false)
71
114
  return 0 unless File.exist?(path)
72
115
  return 0 unless File.readable?(path)
@@ -4,19 +4,35 @@ module MacCleaner
4
4
  class CLI < Thor
5
5
  class_option :dry_run, type: :boolean, aliases: "-n", desc: "Perform a dry run without deleting files"
6
6
  class_option :sudo, type: :boolean, desc: "Run with sudo for system-level cleanup"
7
+ class_option :interactive, type: :boolean, aliases: "-i", desc: "Interactively choose sections to clean before executing"
8
+
9
+ map %w[--version -v] => :version
7
10
 
8
11
  desc "clean", "Clean up your Mac"
9
12
  def clean
10
13
  require_relative 'cleaner'
11
- cleaner = MacCleaner::Cleaner.new(dry_run: options[:dry_run], sudo: options[:sudo])
14
+ cleaner = MacCleaner::Cleaner.new(
15
+ dry_run: options[:dry_run],
16
+ sudo: options[:sudo],
17
+ interactive: options[:interactive]
18
+ )
12
19
  cleaner.clean
13
20
  end
14
21
 
22
+ desc "version", "Print the mac_cleaner version"
23
+ def version
24
+ puts MacCleaner::VERSION
25
+ end
26
+
15
27
  desc "analyze [PATH]", "Analyze disk space"
16
28
  def analyze(path = "~")
17
29
  require_relative 'analyzer'
18
30
  analyzer = MacCleaner::Analyzer.new(path: path)
19
31
  analyzer.analyze
20
32
  end
33
+
34
+ def self.exit_on_failure?
35
+ false
36
+ end
21
37
  end
22
38
  end
@@ -1,3 +1,3 @@
1
1
  module MacCleaner
2
- VERSION = "1.0.1"
2
+ VERSION = "1.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mac_cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ojisanchamchi
@@ -13,16 +13,16 @@ dependencies:
13
13
  name: thor
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">="
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0'
18
+ version: '1.0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - ">="
23
+ - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0'
25
+ version: '1.0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -88,7 +88,6 @@ homepage: https://github.com/ojisanchamchi/mac_cleaner
88
88
  licenses:
89
89
  - MIT
90
90
  metadata:
91
- homepage_uri: https://github.com/ojisanchamchi/mac_cleaner
92
91
  source_code_uri: https://github.com/ojisanchamchi/mac_cleaner
93
92
  changelog_uri: https://github.com/ojisanchamchi/mac_cleaner/blob/main/CHANGELOG.md
94
93
  rdoc_options: []