xcode_trash_remover 1.0.1 → 2.0.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 +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +2 -2
- data/bin/xcclean +6 -0
- data/lib/xcode_trash_remover/core.rb +79 -44
- data/lib/xcode_trash_remover/core_simulator.rb +26 -0
- data/lib/xcode_trash_remover/size_helper.rb +21 -0
- data/lib/xcode_trash_remover/version.rb +1 -1
- data/lib/xcode_trash_remover.rb +3 -2
- data/xcode_trash_remover.gemspec +11 -11
- metadata +8 -6
- data/bin/xcodert +0 -10
- data/pkg/xcode_trash_remover-1.0.0.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8957b6d71bcb59728b829fa9efccdd5c2d3b52c5
|
4
|
+
data.tar.gz: 10524f0399e4b2917653030bb0661e4c7197c7f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2797adc81d580c7a3e151ebe1ed39f05e809840d61ee28a3e4f8ae260be98b7c9cb6ffbfe53caeb0f765cb8bd35118e4c8d42588c780116ece8098727f37b692
|
7
|
+
data.tar.gz: f8aef68032dba7e4b150c56458530d2053f42f0dd03198db085e484dc20788e565ef9beaf4ea752e2103f9eecefeb4fa4854d66136048a6d7065af1d0013e668
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg/
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require
|
2
|
-
task :
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
task default: :spec
|
data/bin/xcclean
ADDED
@@ -2,50 +2,85 @@ require 'fileutils'
|
|
2
2
|
require 'find'
|
3
3
|
|
4
4
|
module XcodeTrashRemover
|
5
|
+
module Core
|
6
|
+
extend self
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def dir_size(dir_path)
|
16
|
-
dir_path << '/' unless dir_path.end_with?('/')
|
17
|
-
raise RuntimeError, "#{dir_path} is not a directory" unless File.directory?(dir_path)
|
18
|
-
|
19
|
-
total_size = 0
|
20
|
-
Dir["#{dir_path}**/*"].each do |f|
|
21
|
-
total_size += File.size(f) if File.file?(f) && File.size?(f)
|
22
|
-
end
|
23
|
-
total_size
|
24
|
-
end
|
25
|
-
|
26
|
-
# TODO: function to return best size (MB or GB)
|
27
|
-
|
28
|
-
def get_trash_size
|
29
|
-
trash_size = 0
|
30
|
-
@@xcode_directories.each do |dir|
|
31
|
-
if dir.empty?
|
32
|
-
next
|
33
|
-
end
|
34
|
-
dir.each do |folder|
|
35
|
-
trash_size += dir_size(folder)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
trash_size
|
39
|
-
end
|
40
|
-
|
41
|
-
def remove_trash
|
42
|
-
@@xcode_directories.each do |dir|
|
43
|
-
dir.each do |folder|
|
44
|
-
FileUtils.rm_rf(folder.gsub(/ /, '\ '))
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
8
|
+
def check_volumes
|
9
|
+
puts 'Dir bytes'
|
10
|
+
puts
|
11
|
+
puts "DerivedData #{derived_data_size}"
|
12
|
+
puts "Archives #{archives_size}"
|
13
|
+
puts "XCPGDevices #{playground_devices_size}"
|
14
|
+
puts "CoreSimulator #{core_simulator_size}"
|
15
|
+
puts
|
16
|
+
end
|
50
17
|
|
18
|
+
def remove_trash
|
19
|
+
total = total_size
|
20
|
+
puts "Total #{total}"
|
21
|
+
puts '-'
|
22
|
+
if total.zero?
|
23
|
+
puts 'The directories are empty. No trash files.'
|
24
|
+
exit(0)
|
25
|
+
end
|
26
|
+
|
27
|
+
dirs = [
|
28
|
+
Dir.glob("#{File.expand_path('~')}/Library/Developer/Xcode/DerivedData/*"),
|
29
|
+
Dir.glob("#{File.expand_path('~')}/Library/Developer/Xcode/Archives/*"),
|
30
|
+
Dir.glob("#{File.expand_path('~')}/Library/Developer/XCPGDevices/*"),
|
31
|
+
Dir.glob("#{File.expand_path('~')}/Library/Developer/CoreSimulator/Devices/*")
|
32
|
+
]
|
33
|
+
|
34
|
+
dirs.each do |dir|
|
35
|
+
dir.each do |subdir|
|
36
|
+
remove_dir(subdir)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
puts "#{total} bytes removed!"
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def total_size
|
45
|
+
total = 0
|
46
|
+
total += derived_data_size
|
47
|
+
total += archives_size
|
48
|
+
total += playground_devices_size
|
49
|
+
total += core_simulator_size
|
50
|
+
total
|
51
|
+
end
|
52
|
+
|
53
|
+
def derived_data_size
|
54
|
+
dir = Dir.glob("#{File.expand_path('~')}/Library/Developer/Xcode/DerivedData/*")
|
55
|
+
trash_size(dir)
|
56
|
+
end
|
57
|
+
|
58
|
+
def archives_size
|
59
|
+
dir = Dir.glob("#{File.expand_path('~')}/Library/Developer/Xcode/Archives/*")
|
60
|
+
trash_size(dir)
|
61
|
+
end
|
62
|
+
|
63
|
+
def playground_devices_size
|
64
|
+
dir = Dir.glob("#{File.expand_path('~')}/Library/Developer/XCPGDevices/*")
|
65
|
+
trash_size(dir)
|
66
|
+
end
|
67
|
+
|
68
|
+
def core_simulator_size
|
69
|
+
dir = Dir.glob("#{File.expand_path('~')}/Library/Developer/CoreSimulator/Devices/*")
|
70
|
+
trash_size(dir)
|
71
|
+
end
|
72
|
+
|
73
|
+
def trash_size(dir)
|
74
|
+
size = 0
|
75
|
+
return size if dir.empty?
|
76
|
+
dir.each do |subdir|
|
77
|
+
size += SizeHelper.dir_size(subdir)
|
78
|
+
end
|
79
|
+
size
|
80
|
+
end
|
81
|
+
|
82
|
+
def remove_dir(dir)
|
83
|
+
FileUtils.rm_rf(dir.gsub(/ /, '\ '))
|
84
|
+
end
|
85
|
+
end
|
51
86
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'find'
|
3
|
+
|
4
|
+
module XcodeTrashRemover
|
5
|
+
module CoreSimulator
|
6
|
+
extend self
|
7
|
+
def core_simulator_folders
|
8
|
+
dirs = []
|
9
|
+
|
10
|
+
# TODO: Select which version to delete (8, 9, Watch, TV...)
|
11
|
+
os = ['iOS-8', 'iOS-9', 'watchOS', 'tvOS']
|
12
|
+
|
13
|
+
core_simulator_dir = "#{File.expand_path('~')}/Library/Developer/CoreSimulator/Devices/*/*"
|
14
|
+
|
15
|
+
Dir.glob(core_simulator_dir).each do |dir|
|
16
|
+
next unless dir.include?('plist')
|
17
|
+
device_plist = "/#{dir}"[1..-1]
|
18
|
+
|
19
|
+
os.each do |os|
|
20
|
+
dirs.push(File.dirname(dir)) if File.read(device_plist).include?(os)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
dirs
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'find'
|
3
|
+
|
4
|
+
module XcodeTrashRemover
|
5
|
+
module SizeHelper
|
6
|
+
extend self
|
7
|
+
|
8
|
+
# TODO: function to return best size (MB or GB).
|
9
|
+
|
10
|
+
def dir_size(dir_path)
|
11
|
+
dir_path << '/' unless dir_path.end_with?('/')
|
12
|
+
total_size = 0
|
13
|
+
if File.directory?(dir_path)
|
14
|
+
Dir["#{dir_path}**/*"].each do |f|
|
15
|
+
total_size += File.size(f) if File.file?(f) && File.size?(f)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
total_size
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/xcode_trash_remover.rb
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'xcode_trash_remover/version'
|
2
|
+
require 'xcode_trash_remover/core'
|
3
|
+
require 'xcode_trash_remover/size_helper'
|
data/xcode_trash_remover.gemspec
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
|
1
|
+
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require 'xcode_trash_remover/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'xcode_trash_remover'
|
8
8
|
spec.version = XcodeTrashRemover::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Frank Kair']
|
10
|
+
spec.email = ['frankkair@gmail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
12
|
+
spec.summary = 'Simple script to remove Xcode trash files'
|
13
|
+
spec.description = 'Script to remove trash files that Xcode generates'
|
14
|
+
spec.homepage = 'https://www.github.com/FrankKair/xcode-trash-remover'
|
15
|
+
spec.license = 'MIT'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f =~ /docs\// }
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.14'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
23
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcode_trash_remover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Kair
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,24 +38,26 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
-
description:
|
41
|
+
description: Script to remove trash files that Xcode generates
|
42
42
|
email:
|
43
43
|
- frankkair@gmail.com
|
44
44
|
executables:
|
45
|
-
-
|
45
|
+
- xcclean
|
46
46
|
extensions: []
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
|
+
- ".gitignore"
|
49
50
|
- Gemfile
|
50
51
|
- Gemfile.lock
|
51
52
|
- LICENSE.txt
|
52
53
|
- README.md
|
53
54
|
- Rakefile
|
54
|
-
- bin/
|
55
|
+
- bin/xcclean
|
55
56
|
- lib/xcode_trash_remover.rb
|
56
57
|
- lib/xcode_trash_remover/core.rb
|
58
|
+
- lib/xcode_trash_remover/core_simulator.rb
|
59
|
+
- lib/xcode_trash_remover/size_helper.rb
|
57
60
|
- lib/xcode_trash_remover/version.rb
|
58
|
-
- pkg/xcode_trash_remover-1.0.0.gem
|
59
61
|
- xcode_trash_remover.gemspec
|
60
62
|
homepage: https://www.github.com/FrankKair/xcode-trash-remover
|
61
63
|
licenses:
|
data/bin/xcodert
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'xcode_trash_remover'
|
3
|
-
|
4
|
-
trash_size = XcodeTrashRemover::Core.get_trash_size
|
5
|
-
if trash_size > 0
|
6
|
-
XcodeTrashRemover::Core.remove_trash
|
7
|
-
puts "#{trash_size} bytes deleted"
|
8
|
-
else
|
9
|
-
puts "The directories are empty. No trash files."
|
10
|
-
end
|
Binary file
|