xcode_trash_remover 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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