spec_handler 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/spec_handler.rb +81 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5ffdc786369e26be7b370deefaf07d165b6bab0b
|
4
|
+
data.tar.gz: 000567af61c3556f697d5028fd18c7701cdb6174
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 11bb7decd388de2507161e48a97c0882df5e95689ea8fcaa276f0bea09d837a300dc28692aabe6a19be046739c1748092c16285c385a0e09d460474e54b6df0d
|
7
|
+
data.tar.gz: 983d9677120b8e65fcdfde4f3a6d48ac46886f8c640ca342c4c38442198ae55fc8c281437d756305fe99ff50ba143ef10af7c5c4a8517e2ad76dccec613146b9
|
data/lib/spec_handler.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
|
3
|
+
class SpecHandler < Pod::Spec
|
4
|
+
#SpecHandler created by Frederico Novack (fredynovack@gmail.com)
|
5
|
+
def initialize(path, spec, folder_name)
|
6
|
+
@path = path
|
7
|
+
@spec = spec
|
8
|
+
@folder_name = folder_name
|
9
|
+
end
|
10
|
+
|
11
|
+
def compile()
|
12
|
+
time = Benchmark.measure {
|
13
|
+
if self.path_is_valid(@path)
|
14
|
+
puts "> SpecHandler: Will Compile #{@folder_name} Recursively"
|
15
|
+
self.subspec_path(@path, @spec)
|
16
|
+
else
|
17
|
+
puts "> SpecHandler: Will Compile #{@folder_name} with expression"
|
18
|
+
spec.source_files = @folder_name + '/Source/**/*.swift'
|
19
|
+
spec.resource = @folder_name + '/**/*.{xib,xcassets}'
|
20
|
+
end
|
21
|
+
}
|
22
|
+
puts "Compiled #{@folder_name} in > %.3f seconds 😃" % time.real
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def path_is_valid(path)
|
27
|
+
begin
|
28
|
+
Dir.entries(path)
|
29
|
+
rescue
|
30
|
+
return false
|
31
|
+
end
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def format_path_for_spec(path)
|
36
|
+
if path[0] == '.' && path[1] == '/'
|
37
|
+
path[0] = ""
|
38
|
+
path[0] = ""
|
39
|
+
end
|
40
|
+
path
|
41
|
+
end
|
42
|
+
|
43
|
+
def number_of_files(path)
|
44
|
+
workable_extensions = ['.swift', '.xib', '.xcassets']
|
45
|
+
files_and_folders = Dir.entries(path)
|
46
|
+
files_array = files_and_folders.select {|element| element.include?('.swift') || element.include?('.xib') || element.include?('.xcassets')}
|
47
|
+
files_array.count
|
48
|
+
end
|
49
|
+
|
50
|
+
def remove_black_list_folders_and_files(foldersArray)
|
51
|
+
black_list = ['.', '..', '.DS_Store']
|
52
|
+
black_list.each do |item_to_remove|
|
53
|
+
foldersArray.delete(item_to_remove)
|
54
|
+
end
|
55
|
+
foldersArray = foldersArray.select {|a| !a.include?('.')}
|
56
|
+
foldersArray
|
57
|
+
end
|
58
|
+
|
59
|
+
def subspec_path(current_path, spec)
|
60
|
+
path_folders = remove_black_list_folders_and_files(Dir.entries(current_path))
|
61
|
+
subspec_name = current_path.split('/').last.gsub(' ','').to_s
|
62
|
+
if path_folders.count == 0
|
63
|
+
spec.subspec subspec_name do |theSubspec|
|
64
|
+
theSubspec.source_files = self.format_path_for_spec(current_path) + '/*.swift'
|
65
|
+
theSubspec.resource = self.format_path_for_spec(current_path) + '/*.{xib,xcassets}'
|
66
|
+
end
|
67
|
+
else
|
68
|
+
spec.subspec subspec_name do |theSubspec|
|
69
|
+
if self.number_of_files(current_path) > 0
|
70
|
+
theSubspec.source_files = self.format_path_for_spec(current_path) + '/*.swift'
|
71
|
+
theSubspec.resource = self.format_path_for_spec(current_path) + '/*.{xib,xcassets}'
|
72
|
+
end
|
73
|
+
|
74
|
+
path_folders.each do |sub_folder|
|
75
|
+
self.subspec_path(current_path + '/' + sub_folder, theSubspec)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spec_handler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Frederico Novack
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-09-21 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A quite simple gem which helps your podspec compile your swift code.
|
14
|
+
It organizes the folders when building on xcode.
|
15
|
+
email: fredynovack@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/spec_handler.rb
|
21
|
+
homepage: http://rubygems.org/gems/spec_handler
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.6.14
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Compile you swift pod organizing your folders.
|
45
|
+
test_files: []
|