class Object

Public Instance Methods

annihilate_cache(gradlew, silent=false) click to toggle source
# File lib/wtfcleaner.rb, line 57
def annihilate_cache(gradlew, silent=false)
  puts?('Annihilating Gradle global caches...', !silent)
  `#{gradlew} cleanBuildCache`

  Dir["#{Dir.home}/.gradle/*"]
    .select { |d| File.directory? d } 
    .select { |d| remove_gradle_subdir? d }
    .each   { |d| puts?("\tAnnihilating #{d}", !silent) }
    .each   { |d| FileUtils.rm_r d } 
end
gentle_clean(gradlew, silent=false) click to toggle source
# File lib/wtfcleaner.rb, line 18
def gentle_clean(gradlew, silent=false)
  puts?('Starting Gradle clean...', !silent)
  `#{gradlew} clean -q`

  puts?('Killing Gradle daemon...', !silent)
  `#{gradlew} --stop`

  puts?('Killing ADB server...', !silent)
  `adb kill-server`

  puts?('Removing all build directories...', !silent)
  remove_matching_subdirs('build')

  puts?('Removing all .gradle directories...', !silent)
  remove_matching_subdirs('.gradle')
end
kill_java(silent=false) click to toggle source
# File lib/wtfcleaner.rb, line 68
def kill_java(silent=false)
  puts?('Killing every CLI Java instance...', !silent)
  `killall java`
end
nuke_cache(gradlew, silent=false) click to toggle source
# File lib/wtfcleaner.rb, line 35
def nuke_cache(gradlew, silent=false)
  puts?("Nuking all build caches...", !silent)
  `#{gradlew} cleanBuildCache`

  Dir["#{Dir.home}/.*"]
    .select { |d| File.directory? d } 
    .select { |d| File.basename(d).downcase == '.gradle'}
    .map    { |d| "#{File.join(d, 'caches', 'build-cache-1')}" }
    .select { |d| File.exist?(d) && File.directory?(d) }
    .each   { |d| puts?("\tNuking #{d}", !silent) }
    .each   { |d| FileUtils.rm_r d } 
end
puts?(text, should_display) click to toggle source
# File lib/wtfcleaner.rb, line 4
def puts?(text, should_display)
  if should_display
    puts text
  end
end
remove_gradle_subdir?(subdir) click to toggle source
# File lib/wtfcleaner.rb, line 48
def remove_gradle_subdir?(subdir)
  name = File.basename(subdir).downcase
  targets = ["build-scan-data", "caches", "daemon", "wrapper"]
  targets.each do |t| 
    name == t ? (return true) : next 
  end
  return false
end
remove_matching_subdirs(name, silent=false) click to toggle source
# File lib/wtfcleaner.rb, line 10
def remove_matching_subdirs(name, silent=false)
  (Dir['**/*'] + Dir['**/.*'])
    .select { |d| File.directory? d }
    .select { |d| File.basename(d).downcase == name.downcase }
    .each   { |d| puts?("\tRemoving: #{d}", !silent) }
    .each   { |d| FileUtils.rm_r d }
end