wtfcleaner 0.1.0
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 +7 -0
- data/lib/wtfcleaner.rb +58 -0
- data/lib/wtfcleaner_lib.rb +71 -0
- metadata +44 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 14843034334d63c5e25d06d49dc78649b6e830ffb0a6f4e956d8efe2905d6e04
|
|
4
|
+
data.tar.gz: 78660a81142421445042e5bd30038ef8788932852dd50d14abb978441e671848
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 5b9e5a5a1bca536409cb3465a5c29e323d1265ae50fc6bd4bdc1d3c72b6adcbd642392b0aef8eeba917e35124f17317a591f202b8a7a111f7954a66b79b16991
|
|
7
|
+
data.tar.gz: 8ab8ef1dcd3e08c49fedcf420e12394644c0b9e3314b571cfec478f7f3355b5d242d6579d39c6c8819ccce569614acf92721cd40bb33f79392d0cf300aff1b61
|
data/lib/wtfcleaner.rb
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
require 'optparse'
|
|
3
|
+
require_relative 'wtfcleaner_lib'
|
|
4
|
+
|
|
5
|
+
options = {:nuke => false, :annihilate => false}
|
|
6
|
+
|
|
7
|
+
banner_desc = "Tool for cleaning all build caches from Android/Gradle projects.
|
|
8
|
+
Helpful when IDE and Gradle let\'s you down.
|
|
9
|
+
|
|
10
|
+
Usage: gradle_cleaner.rb [options]\n\n"
|
|
11
|
+
nuke_desc = "nuke"
|
|
12
|
+
annihilate_desc = "☠THIS IS POWERFUL STUFF☠
|
|
13
|
+
Deepest of all cleans.
|
|
14
|
+
Clears out global folders:
|
|
15
|
+
* the global Gradle cache
|
|
16
|
+
* the wrapper-downloaded Gradle distros
|
|
17
|
+
* the Gradle daemon data
|
|
18
|
+
* the Android build cache
|
|
19
|
+
Nothing will be the same after that.
|
|
20
|
+
"
|
|
21
|
+
|
|
22
|
+
parser = OptionParser.new do |opts|
|
|
23
|
+
opts.banner = banner_desc
|
|
24
|
+
|
|
25
|
+
opts.on('-n', '--nuke', nuke_desc) do
|
|
26
|
+
options[:nuke] = true
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
opts.on('-a', '--annihilate', annihilate_desc) do
|
|
30
|
+
options[:annihilate] = true
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
opts.on('-h', '--help', 'display help') do
|
|
34
|
+
puts opts
|
|
35
|
+
exit
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
parser.parse!
|
|
40
|
+
|
|
41
|
+
if options[:nuke] && options[:annihilate]
|
|
42
|
+
puts "Annihilating and nuking at the same time is prohibited by The Geneva Convention.Unfortunately (╥_╥)"
|
|
43
|
+
exit
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
gradlew = "./gradlew"
|
|
47
|
+
|
|
48
|
+
gentle_clean(gradlew)
|
|
49
|
+
|
|
50
|
+
if options[:nuke]
|
|
51
|
+
nuke_cache(gradlew)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
if options[:annihilate]
|
|
55
|
+
annihilate_cache(gradlew)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
kill_java()
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
def puts?(text, should_display)
|
|
5
|
+
if should_display
|
|
6
|
+
puts text
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def remove_matching_subdirs(name, silent=false)
|
|
11
|
+
(Dir['**/*'] + Dir['**/.*'])
|
|
12
|
+
.select { |d| File.directory? d }
|
|
13
|
+
.select { |d| File.basename(d).downcase == name.downcase }
|
|
14
|
+
.each { |d| puts?("\tRemoving: #{d}", !silent) }
|
|
15
|
+
.each { |d| FileUtils.rm_r d }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def gentle_clean(gradlew, silent=false)
|
|
19
|
+
puts?('Starting Gradle clean...', !silent)
|
|
20
|
+
`#{gradlew} clean -q`
|
|
21
|
+
|
|
22
|
+
puts?('Killing Gradle daemon...', !silent)
|
|
23
|
+
`#{gradlew} --stop`
|
|
24
|
+
|
|
25
|
+
puts?('Killing ADB server...', !silent)
|
|
26
|
+
`adb kill-server`
|
|
27
|
+
|
|
28
|
+
puts?('Removing all build directories...', !silent)
|
|
29
|
+
remove_matching_subdirs('build')
|
|
30
|
+
|
|
31
|
+
puts?('Removing all .gradle directories...', !silent)
|
|
32
|
+
remove_matching_subdirs('.gradle')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def nuke_cache(gradlew, silent=false)
|
|
36
|
+
puts?("Nuking all build caches...", !silent)
|
|
37
|
+
`#{gradlew} cleanBuildCache`
|
|
38
|
+
|
|
39
|
+
Dir["#{Dir.home}/.*"]
|
|
40
|
+
.select { |d| File.directory? d }
|
|
41
|
+
.select { |d| File.basename(d).downcase == '.gradle'}
|
|
42
|
+
.map { |d| "#{File.join(d, 'caches', 'build-cache-1')}" }
|
|
43
|
+
.select { |d| File.exist?(d) && File.directory?(d) }
|
|
44
|
+
.each { |d| puts?("\tNuking #{d}", !silent) }
|
|
45
|
+
.each { |d| FileUtils.rm_r d }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def remove_gradle_subdir?(subdir)
|
|
49
|
+
name = File.basename(subdir).downcase
|
|
50
|
+
targets = ["build-scan-data", "caches", "daemon", "wrapper"]
|
|
51
|
+
targets.each do |t|
|
|
52
|
+
name == t ? (return true) : next
|
|
53
|
+
end
|
|
54
|
+
return false
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def annihilate_cache(gradlew, silent=false)
|
|
58
|
+
puts?('Annihilating Gradle global caches...', !silent)
|
|
59
|
+
`#{gradlew} cleanBuildCache`
|
|
60
|
+
|
|
61
|
+
Dir["#{Dir.home}/.gradle/*"]
|
|
62
|
+
.select { |d| File.directory? d }
|
|
63
|
+
.select { |d| remove_gradle_subdir? d }
|
|
64
|
+
.each { |d| puts?("\tAnnihilating #{d}", !silent) }
|
|
65
|
+
.each { |d| FileUtils.rm_r d }
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def kill_java(silent=false)
|
|
69
|
+
puts?('Killing every CLI Java instance...', !silent)
|
|
70
|
+
`killall java`
|
|
71
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: wtfcleaner
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- voltar13
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2019-12-05 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: Solution for those wtf cache moments in Android Studio
|
|
14
|
+
email:
|
|
15
|
+
executables: []
|
|
16
|
+
extensions: []
|
|
17
|
+
extra_rdoc_files: []
|
|
18
|
+
files:
|
|
19
|
+
- lib/wtfcleaner.rb
|
|
20
|
+
- lib/wtfcleaner_lib.rb
|
|
21
|
+
homepage: https://rubygems.org/gems/wtfcleaner
|
|
22
|
+
licenses:
|
|
23
|
+
- MIT
|
|
24
|
+
metadata: {}
|
|
25
|
+
post_install_message:
|
|
26
|
+
rdoc_options: []
|
|
27
|
+
require_paths:
|
|
28
|
+
- lib
|
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '0'
|
|
39
|
+
requirements: []
|
|
40
|
+
rubygems_version: 3.0.6
|
|
41
|
+
signing_key:
|
|
42
|
+
specification_version: 4
|
|
43
|
+
summary: wtfcleaner
|
|
44
|
+
test_files: []
|