cocoapods-assets-cleaner 0.0.1
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/cocoapods-assets-cleaner/assets_cleaner.rb +110 -0
- data/lib/cocoapods-assets-cleaner/command/cleaner.rb +42 -0
- data/lib/cocoapods-assets-cleaner/command.rb +1 -0
- data/lib/cocoapods-assets-cleaner/gem_version.rb +3 -0
- data/lib/cocoapods-assets-cleaner.rb +1 -0
- data/lib/cocoapods_plugin.rb +1 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cece82647e1b95f77e2b78d3e59773d2baeb6e173f2f866d6aaf114846a444fa
|
4
|
+
data.tar.gz: 673cd2620a687a4150565b88717d2068601c773e317219d7e985349058784404
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 729532be45bd03a7027806f0cc77d1c41ba5636aa3e40d01def897834f33dc0a9caa246ea3fe096c94185cc55194fd3744e611df6509376d39d989f48dceefb7
|
7
|
+
data.tar.gz: fd39d4cedeec6983c78962c35c97a9abf9b899c3bce82116bdd80aebe6ad9f5143b1e80176dd8da0a0974ef5947aef94efca360910e8f39732589c60da3bbb2e
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require "cocoapods"
|
2
|
+
require "fileutils"
|
3
|
+
|
4
|
+
module CocoapodsAssetsCleaner
|
5
|
+
class AssetsCleaner
|
6
|
+
def initialize(main_project_path_param, assets_path_param)
|
7
|
+
@main_project_path = main_project_path_param
|
8
|
+
@assets_path = assets_path_param
|
9
|
+
|
10
|
+
@spinner = Enumerator.new do |e|
|
11
|
+
loop do
|
12
|
+
e.yield "|"
|
13
|
+
e.yield "/"
|
14
|
+
e.yield "-"
|
15
|
+
e.yield '\\'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def init_clean
|
21
|
+
Pod::UI.puts "Getting images from assets...".yellow
|
22
|
+
imagesets = get_images_from_path(@assets_path)
|
23
|
+
Pod::UI.puts "#{imagesets.count} images founded"
|
24
|
+
|
25
|
+
Pod::UI.puts "Searching for unused images...".yellow
|
26
|
+
unused_imagesets = check_and_extact_unsed_images(imagesets, @main_project_path)
|
27
|
+
Pod::UI.puts "#{unused_imagesets.count} unused images founded"
|
28
|
+
|
29
|
+
Pod::UI.puts "Removing unused images...".yellow
|
30
|
+
removed_imagesets = unused_imagesets.map { |image_name, image_path| remove_unused_image(image_name, image_path) }
|
31
|
+
Pod::UI.puts "Removed #{removed_imagesets.count} from #{unused_imagesets.count} unused images."
|
32
|
+
end
|
33
|
+
|
34
|
+
def show_indicator_percentage(i)
|
35
|
+
printf("\r%d%% %s", i, @spinner.next)
|
36
|
+
sleep(0.1)
|
37
|
+
end
|
38
|
+
|
39
|
+
def remove_unused_image(image_name, image_path)
|
40
|
+
FileUtils.remove_dir(image_path)
|
41
|
+
|
42
|
+
if File.directory?(image_path)
|
43
|
+
Pod::UI.puts "Failure on removing #{image_name} Asset".red
|
44
|
+
return false
|
45
|
+
else
|
46
|
+
return true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def check_and_extact_unsed_images(images, path)
|
51
|
+
unused_images = {}
|
52
|
+
count = 0
|
53
|
+
|
54
|
+
images.each do |image_name, image_path|
|
55
|
+
command_sh = `grep -R -l --exclude-dir=Assets.xcassets "#{image_name}" #{path}`
|
56
|
+
if command_sh == ""
|
57
|
+
Pod::UI.puts "\r#{image_name} is not used.".yellow
|
58
|
+
unused_images[image_name] = image_path
|
59
|
+
else
|
60
|
+
Pod::UI.puts "\r#{image_name} is used.".green
|
61
|
+
end
|
62
|
+
|
63
|
+
percentage = (100 * count) / images.count
|
64
|
+
show_indicator_percentage(percentage)
|
65
|
+
count += 1
|
66
|
+
end
|
67
|
+
return unused_images
|
68
|
+
end
|
69
|
+
|
70
|
+
def get_images_from_path(path)
|
71
|
+
result = get_images_directories_from_path(path)
|
72
|
+
imagesets = result[:images]
|
73
|
+
directories = result[:directories]
|
74
|
+
|
75
|
+
while directories.count > 0
|
76
|
+
current_directories = directories
|
77
|
+
directories = []
|
78
|
+
|
79
|
+
current_directories.each do |directory|
|
80
|
+
new_result = get_images_directories_from_path(directory)
|
81
|
+
new_result[:images].each { |key, value| imagesets[key] = value }
|
82
|
+
directories += new_result[:directories] || []
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
return imagesets
|
87
|
+
end
|
88
|
+
|
89
|
+
def get_images_directories_from_path(path)
|
90
|
+
all_dir = Dir.entries(path)
|
91
|
+
.select { |entry| File.directory? File.join(path, entry) and !(entry == "." || entry == "..") }
|
92
|
+
|
93
|
+
images = {}
|
94
|
+
all_non_images_dir = []
|
95
|
+
all_dir.each do |directory|
|
96
|
+
new_path = File.join(path, directory)
|
97
|
+
if directory.include? ".imageset"
|
98
|
+
images[directory.gsub(".imageset", "")] = new_path
|
99
|
+
else
|
100
|
+
all_non_images_dir.push(new_path)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
return {
|
105
|
+
:images => images,
|
106
|
+
:directories => all_non_images_dir,
|
107
|
+
}
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'cocoapods'
|
2
|
+
require 'cocoapods-assets-cleaner/assets_cleaner'
|
3
|
+
|
4
|
+
include CocoapodsAssetsCleaner
|
5
|
+
|
6
|
+
module Pod
|
7
|
+
class Command
|
8
|
+
|
9
|
+
class CleanUnusedAssets < Command
|
10
|
+
self.summary = 'Cocoapods-plugin that helps to clean unused assets on Xcode projects.'
|
11
|
+
|
12
|
+
self.description = <<-DESC
|
13
|
+
Assets-cleaner is a Cocoapods-plugin that helps to clean unused assets on Xcode projects.
|
14
|
+
DESC
|
15
|
+
|
16
|
+
def validate!
|
17
|
+
super
|
18
|
+
help! 'Define the assets path.' unless @assets_path
|
19
|
+
end
|
20
|
+
|
21
|
+
self.arguments = []
|
22
|
+
|
23
|
+
def self.options
|
24
|
+
[
|
25
|
+
['--assets-path', 'Assets path'],
|
26
|
+
['--project-path', 'Projects path (default: ./)']
|
27
|
+
].concat(super)
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize(argv)
|
31
|
+
@assets_path = argv.option('assets-path')
|
32
|
+
@project_path = argv.option('project-path', './')
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
def run
|
37
|
+
assets_cleaner = CocoapodsAssetsCleaner::AssetsCleaner.new(@project_path, @assets_path)
|
38
|
+
assets_cleaner.init_clean()
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'cocoapods-assets-cleaner/command/cleaner'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'cocoapods-assets-cleaner/gem_version'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'cocoapods-assets-cleaner/command'
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cocoapods-assets-cleaner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Leo Valentim
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-08-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Assets-cleaner is a Cocoapods-plugin that helps to clean unused assets
|
42
|
+
on Xcode projects.
|
43
|
+
email:
|
44
|
+
- leo.valent@hotmail.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- lib/cocoapods-assets-cleaner.rb
|
50
|
+
- lib/cocoapods-assets-cleaner/assets_cleaner.rb
|
51
|
+
- lib/cocoapods-assets-cleaner/command.rb
|
52
|
+
- lib/cocoapods-assets-cleaner/command/cleaner.rb
|
53
|
+
- lib/cocoapods-assets-cleaner/gem_version.rb
|
54
|
+
- lib/cocoapods_plugin.rb
|
55
|
+
homepage: https://github.com/LeoValentim/cocoapods-assets-cleaner/
|
56
|
+
licenses:
|
57
|
+
- MIT
|
58
|
+
metadata: {}
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.7.8
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: Cocoapods-plugin that helps to clean unused assets on Xcode projects.
|
79
|
+
test_files: []
|