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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5fc323bf1965feb9fed9eec0a033a90b0fea110
4
- data.tar.gz: e4ffa738e1679fefea5e007b133b6927509489f6
3
+ metadata.gz: 8957b6d71bcb59728b829fa9efccdd5c2d3b52c5
4
+ data.tar.gz: 10524f0399e4b2917653030bb0661e4c7197c7f1
5
5
  SHA512:
6
- metadata.gz: d78a1389d1bf78219e5a732680ab092727fe7a15b33a7c52b910a2860e6821c45e2b3ae7248e6d796a722b805aee08a56d52202ac2f05a6ac3e8cf2f9b63a694
7
- data.tar.gz: 2f6b7ba82a3eb14d59df897f7c92858a328704ec219e35a2a8a283ec6ef6e78a36b66d90b4d2e31dd141172b14a087dd55aa61a403c27c5a48049871be096d0b
6
+ metadata.gz: 2797adc81d580c7a3e151ebe1ed39f05e809840d61ee28a3e4f8ae260be98b7c9cb6ffbfe53caeb0f765cb8bd35118e4c8d42588c780116ece8098727f37b692
7
+ data.tar.gz: f8aef68032dba7e4b150c56458530d2053f42f0dd03198db085e484dc20788e565ef9beaf4ea752e2103f9eecefeb4fa4854d66136048a6d7065af1d0013e668
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xcode_trash_remover (1.0.0)
4
+ xcode_trash_remover (2.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/Rakefile CHANGED
@@ -1,2 +1,2 @@
1
- require "bundler/gem_tasks"
2
- task :default => :spec
1
+ require 'bundler/gem_tasks'
2
+ task default: :spec
data/bin/xcclean ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ require 'xcode_trash_remover'
3
+
4
+ puts '== Xcode Trash Remover =='
5
+ XcodeTrashRemover::Core.check_volumes
6
+ XcodeTrashRemover::Core.remove_trash
@@ -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
- module Core
7
-
8
- extend self
9
-
10
- @@xcode_directories = [
11
- Dir.glob("#{File.expand_path('~')}/Library/Developer/Xcode/DerivedData/*"),
12
- Dir.glob("#{File.expand_path('~')}/Library/Developer/Xcode/Archives/*"),
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
@@ -1,3 +1,3 @@
1
1
  module XcodeTrashRemover
2
- VERSION = "1.0.1"
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -1,2 +1,3 @@
1
- require "xcode_trash_remover/version"
2
- require "xcode_trash_remover/core"
1
+ require 'xcode_trash_remover/version'
2
+ require 'xcode_trash_remover/core'
3
+ require 'xcode_trash_remover/size_helper'
@@ -1,23 +1,23 @@
1
- # coding: utf-8
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 = "xcode_trash_remover"
7
+ spec.name = 'xcode_trash_remover'
8
8
  spec.version = XcodeTrashRemover::VERSION
9
- spec.authors = ["Frank Kair"]
10
- spec.email = ["frankkair@gmail.com"]
9
+ spec.authors = ['Frank Kair']
10
+ spec.email = ['frankkair@gmail.com']
11
11
 
12
- spec.summary = "Simple script to remove Xcode trash files"
13
- spec.description = "Simple script to remove Xcode derived data and archives trash files"
14
- spec.homepage = "https://www.github.com/FrankKair/xcode-trash-remover"
15
- spec.license = "MIT"
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 = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.14"
22
- spec.add_development_dependency "rake", "~> 10.0"
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: 1.0.1
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-05-03 00:00:00.000000000 Z
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: Simple script to remove Xcode derived data and archives trash files
41
+ description: Script to remove trash files that Xcode generates
42
42
  email:
43
43
  - frankkair@gmail.com
44
44
  executables:
45
- - xcodert
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/xcodert
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