cocoapods-tj 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +1 -0
  4. data/lib/cocoapods-tj/command/bin/archive.rb +203 -0
  5. data/lib/cocoapods-tj/command/bin/auto.rb +189 -0
  6. data/lib/cocoapods-tj/command/bin/code.rb +198 -0
  7. data/lib/cocoapods-tj/command/bin/imy.rb +45 -0
  8. data/lib/cocoapods-tj/command/bin/init.rb +65 -0
  9. data/lib/cocoapods-tj/command/bin/initHotKey.rb +66 -0
  10. data/lib/cocoapods-tj/command/bin/install.rb +41 -0
  11. data/lib/cocoapods-tj/command/bin/lib/lint.rb +66 -0
  12. data/lib/cocoapods-tj/command/bin/local.rb +142 -0
  13. data/lib/cocoapods-tj/command/bin/repo/update.rb +42 -0
  14. data/lib/cocoapods-tj/command/bin/spec/create.rb +68 -0
  15. data/lib/cocoapods-tj/command/bin/spec/push.rb +114 -0
  16. data/lib/cocoapods-tj/command/bin/update.rb +144 -0
  17. data/lib/cocoapods-tj/command/bin.rb +42 -0
  18. data/lib/cocoapods-tj/command.rb +2 -0
  19. data/lib/cocoapods-tj/config/config.rb +129 -0
  20. data/lib/cocoapods-tj/config/config_asker.rb +49 -0
  21. data/lib/cocoapods-tj/config/config_builder.rb +201 -0
  22. data/lib/cocoapods-tj/config/config_hot_key.rb +102 -0
  23. data/lib/cocoapods-tj/config/config_hot_key_asker.rb +48 -0
  24. data/lib/cocoapods-tj/gem_version.rb +10 -0
  25. data/lib/cocoapods-tj/helpers/Info.plist +0 -0
  26. data/lib/cocoapods-tj/helpers/build_helper.rb +154 -0
  27. data/lib/cocoapods-tj/helpers/build_utils.rb +62 -0
  28. data/lib/cocoapods-tj/helpers/framework.rb +79 -0
  29. data/lib/cocoapods-tj/helpers/framework_builder.rb +391 -0
  30. data/lib/cocoapods-tj/helpers/library.rb +54 -0
  31. data/lib/cocoapods-tj/helpers/library_builder.rb +89 -0
  32. data/lib/cocoapods-tj/helpers/local/loca_llibrary.rb +57 -0
  33. data/lib/cocoapods-tj/helpers/local/local_build_helper.rb +177 -0
  34. data/lib/cocoapods-tj/helpers/local/local_framework.rb +85 -0
  35. data/lib/cocoapods-tj/helpers/local/local_framework_builder.rb +226 -0
  36. data/lib/cocoapods-tj/helpers/local/local_library_builder.rb +91 -0
  37. data/lib/cocoapods-tj/helpers/sources_helper.rb +32 -0
  38. data/lib/cocoapods-tj/helpers/spec_creator.rb +150 -0
  39. data/lib/cocoapods-tj/helpers/spec_files_helper.rb +73 -0
  40. data/lib/cocoapods-tj/helpers/spec_source_creator.rb +189 -0
  41. data/lib/cocoapods-tj/helpers/upload_helper.rb +81 -0
  42. data/lib/cocoapods-tj/helpers.rb +5 -0
  43. data/lib/cocoapods-tj/native/acknowledgements.rb +26 -0
  44. data/lib/cocoapods-tj/native/analyzer.rb +29 -0
  45. data/lib/cocoapods-tj/native/file_accessor.rb +20 -0
  46. data/lib/cocoapods-tj/native/installation_options.rb +21 -0
  47. data/lib/cocoapods-tj/native/installer.rb +106 -0
  48. data/lib/cocoapods-tj/native/linter.rb +26 -0
  49. data/lib/cocoapods-tj/native/path_source.rb +29 -0
  50. data/lib/cocoapods-tj/native/pod_source_installer.rb +18 -0
  51. data/lib/cocoapods-tj/native/pod_target_installer.rb +81 -0
  52. data/lib/cocoapods-tj/native/podfile.rb +91 -0
  53. data/lib/cocoapods-tj/native/podfile_env.rb +37 -0
  54. data/lib/cocoapods-tj/native/podfile_generator.rb +135 -0
  55. data/lib/cocoapods-tj/native/podspec_finder.rb +23 -0
  56. data/lib/cocoapods-tj/native/resolver.rb +202 -0
  57. data/lib/cocoapods-tj/native/sandbox_analyzer.rb +11 -0
  58. data/lib/cocoapods-tj/native/source.rb +35 -0
  59. data/lib/cocoapods-tj/native/sources_manager.rb +18 -0
  60. data/lib/cocoapods-tj/native/specification.rb +10 -0
  61. data/lib/cocoapods-tj/native/target_validator.rb +41 -0
  62. data/lib/cocoapods-tj/native/validator.rb +40 -0
  63. data/lib/cocoapods-tj/native.rb +23 -0
  64. data/lib/cocoapods-tj/source_provider_hook.rb +50 -0
  65. data/lib/cocoapods-tj.rb +2 -0
  66. data/lib/cocoapods_plugin.rb +3 -0
  67. data/spec/command/bin_spec.rb +12 -0
  68. data/spec/spec_helper.rb +50 -0
  69. metadata +182 -0
@@ -0,0 +1,150 @@
1
+
2
+
3
+ require 'cocoapods'
4
+ require 'cocoapods-tj/config/config'
5
+
6
+ module CBin
7
+ class Specification
8
+ class Creator
9
+ attr_reader :code_spec
10
+ attr_reader :template_spec
11
+ attr_reader :spec
12
+
13
+ def initialize(code_spec, template_spec, platforms = 'ios')
14
+ @code_spec = code_spec
15
+ @template_spec = template_spec
16
+ @platforms = Array(platforms)
17
+ validate!
18
+ end
19
+
20
+ def validate!
21
+ raise Pod::Informative, '源码 podspec 不能为空 .' unless code_spec
22
+ if code_spec.subspecs.any? && template_spec.nil?
23
+ raise Pod::Informative, "不支持自动生成存在 subspec 的二进制 podspec , 需要提供模版文件 #{code_spec.name}.binary.podspec.template ."
24
+ end
25
+ end
26
+
27
+ def create
28
+ spec = template_spec ? create_from_code_spec_and_template_spec : create_from_code_spec
29
+
30
+ Pod::UI.message '生成二进制 podspec 内容: '
31
+ spec.to_pretty_json.split("\n").each do |text|
32
+ Pod::UI.message text
33
+ end
34
+
35
+ spec
36
+ end
37
+
38
+ def write_spec_file(file = filename)
39
+ create unless spec
40
+
41
+ File.open(file, 'w+') do |f|
42
+ f.write(spec.to_pretty_json)
43
+ end
44
+
45
+ @filename = file
46
+ end
47
+
48
+ def clear_spec_file
49
+ File.delete(filename) if File.exist?(filename)
50
+ end
51
+
52
+ def filename
53
+ @filename ||= "#{spec.name}.binary.podspec.json"
54
+ end
55
+
56
+ private
57
+
58
+ def create_from_code_spec
59
+ @spec = code_spec.dup
60
+
61
+ @spec.vendored_frameworks = "#{code_spec.root.name}.framework"
62
+
63
+ # Resources
64
+ extnames = []
65
+ extnames << '*.bundle' if code_spec_consumer.resource_bundles.any?
66
+ if code_spec_consumer.resources.any?
67
+ extnames += code_spec_consumer.resources.map { |r| File.basename(r) }
68
+ end
69
+ if extnames.any?
70
+ @spec.resources = framework_contents('Resources').flat_map { |r| extnames.map { |e| "#{r}/#{e}" } }
71
+ end
72
+
73
+ # Source Location
74
+ @spec.source = binary_source
75
+
76
+ # Source Code
77
+ @spec.source_files = framework_contents('Headers/*')
78
+ @spec.public_header_files = framework_contents('Headers/*')
79
+
80
+ # Unused for binary
81
+ spec_hash = @spec.to_hash
82
+ # spec_hash.delete('license')
83
+ spec_hash.delete('resource_bundles')
84
+ spec_hash.delete('exclude_files')
85
+ spec_hash.delete('preserve_paths')
86
+
87
+ spec_hash.delete('vendored_libraries')
88
+ spec_hash['vendored_libraries'] = binary_vendored_libraries
89
+
90
+
91
+ platforms = spec_hash['platforms']
92
+ selected_platforms = platforms.select { |k, _v| @platforms.include?(k) }
93
+ spec_hash['platforms'] = selected_platforms.empty? ? platforms : selected_platforms
94
+
95
+ @spec = Pod::Specification.from_hash(spec_hash)
96
+ @spec
97
+ end
98
+
99
+ def create_from_code_spec_and_template_spec
100
+ @spec = template_spec.dup
101
+
102
+ @spec.version = code_spec.version
103
+ @spec.source = binary_source
104
+
105
+ @spec.source_files = binary_source_files
106
+ @spec.public_header_files = binary_public_header_files
107
+ @spec.vendored_libraries = binary_vendored_libraries
108
+
109
+ @spec.resources = binary_resources if @spec.attributes_hash.keys.include?("resources")
110
+
111
+
112
+
113
+ @spec
114
+ end
115
+
116
+ def binary_source
117
+ { http: format(CBin.config.binary_download_url, code_spec.root.name, code_spec.version), type: CBin.config.download_file_type }
118
+ end
119
+
120
+ def code_spec_consumer(_platform = :ios)
121
+ code_spec.consumer(:ios)
122
+ end
123
+
124
+ def framework_contents(name)
125
+ ["#{code_spec.root.name}.framework", "#{code_spec.root.name}.framework/Versions/A"].map { |path| "#{path}/#{name}" }
126
+ end
127
+
128
+ def binary_source_files
129
+ { http: format(CBin.config.binary_download_url, code_spec.root.name, code_spec.version), type: CBin.config.download_file_type }
130
+ end
131
+
132
+ def binary_source_files
133
+ "bin_#{code_spec.name}_#{code_spec.version}/Headers/*"
134
+ end
135
+
136
+ def binary_public_header_files
137
+ "bin_#{code_spec.name}_#{code_spec.version}/Headers/*.h"
138
+ end
139
+
140
+ def binary_vendored_libraries
141
+ "bin_#{code_spec.name}_#{code_spec.version}/*.a"
142
+ end
143
+
144
+ def binary_resources
145
+ "bin_#{code_spec.name}_#{code_spec.version}/Resources/*"
146
+ end
147
+
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,73 @@
1
+
2
+
3
+ require 'cocoapods-tj/native/sources_manager.rb'
4
+ require 'cocoapods-tj/helpers/spec_creator'
5
+
6
+ module CBin
7
+ module SpecFilesHelper
8
+ def spec_files
9
+ @spec_files ||= Pathname.glob('*.podspec{,.json}')
10
+ end
11
+
12
+ def binary_spec_files
13
+ @binary_spec_files ||= Pathname.glob('*.binary.podspec{,.json}')
14
+ end
15
+
16
+ def binary_template_spec_files
17
+ @binary_spec_template_files ||= Pathname.glob('*.binary-template.podspec{,.json}')
18
+ end
19
+
20
+ def binary_template_spec_file
21
+ @binary_spec_template_file ||= binary_template_spec_files.first
22
+ end
23
+
24
+ def code_spec_files
25
+ @code_spec_files ||= spec_files - binary_spec_files - binary_template_spec_files
26
+ end
27
+
28
+ def code_spec
29
+ if code_spec_files.first
30
+ Pod::Specification.from_file(code_spec_files.first)
31
+ end
32
+ end
33
+
34
+ def binary_spec
35
+ if binary_spec_files.first
36
+ Pod::Specification.from_file(binary_spec_files.first)
37
+ end
38
+ end
39
+
40
+ def binary_template_spec
41
+ if binary_template_spec_file
42
+ Pod::Specification.from_file(binary_template_spec_file)
43
+ end
44
+ end
45
+
46
+ def find_spec_file(podspec)
47
+ path = Pathname(podspec)
48
+ raise Pod::Informative, "无法找到 #{podspec}" unless path.exist?
49
+
50
+ path
51
+ end
52
+
53
+ def create_binary_spec_file(code_spec, template_spec)
54
+
55
+
56
+ unless code_spec
57
+ raise Pod::Informative, '没有二进制 podspec 的情况下,必须要提供源码 podspec.'
58
+ end
59
+ if code_spec.subspecs.any? && template_spec.nil?
60
+ raise Pod::Informative, '拥有 subspec 的组件,在生成二进制 podspec 时,必须要提供模版 podspec.'
61
+ end
62
+
63
+ @spec_creator = CBin::Specification::Creator.new(code_spec, template_spec)
64
+ @spec_creator.create
65
+ @spec_creator.write_spec_file
66
+ @spec_creator.filename
67
+ end
68
+
69
+ def clear_binary_spec_file_if_needed
70
+ @spec_creator&.clear_spec_file
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,189 @@
1
+
2
+
3
+ require 'cocoapods'
4
+ require 'cocoapods-tj/config/config'
5
+
6
+ module CBin
7
+ class SpecificationSource
8
+ class Creator
9
+ attr_reader :code_spec
10
+ attr_reader :spec
11
+
12
+ def initialize(code_spec, platforms = 'ios')
13
+ @code_spec = code_spec
14
+ @platforms = Array(platforms)
15
+ validate!
16
+ end
17
+
18
+ def validate!
19
+ raise Pod::Informative, '源码 podspec 不能为空 .' unless code_spec
20
+ end
21
+
22
+ def create
23
+ # spec = nil
24
+ if CBin::Build::Utils.is_framework(@code_spec)
25
+ spec = create_framework_from_code_spec
26
+ else
27
+ spec = create_from_code_spec
28
+ end
29
+
30
+ spec
31
+ end
32
+
33
+ def write_spec_file(file = filename)
34
+ create unless spec
35
+
36
+ FileUtils.mkdir_p(CBin::Config::Builder.instance.binary_json_dir) unless File.exist?(CBin::Config::Builder.instance.binary_json_dir)
37
+ FileUtils.rm_rf(file) if File.exist?(file)
38
+
39
+ File.open(file, 'w+') do |f|
40
+ # f.write("# MARK: converted automatically by plugin cocoapods-tj @slj \r\n")
41
+ f.write(spec.to_pretty_json)
42
+ end
43
+
44
+ @filename = file
45
+ end
46
+
47
+ def clear_spec_file
48
+ File.delete(filename) if File.exist?(filename)
49
+ end
50
+
51
+ def filename
52
+ @filename ||= "#{CBin::Config::Builder.instance.binary_json_dir_name}/#{spec.name}.binary.podspec.json"
53
+ end
54
+
55
+ private
56
+
57
+ def create_from_code_spec
58
+ @spec = code_spec.dup
59
+
60
+ extnames = []
61
+ extnames << '*.bundle' if code_spec_consumer.resource_bundles.any?
62
+ if code_spec_consumer.resources.any?
63
+ extnames += code_spec_consumer.resources.map { |r| File.basename(r) }
64
+ end
65
+ if extnames.any?
66
+ @spec.resources = framework_contents('Resources').flat_map { |r| extnames.map { |e| "#{r}/#{e}" } }
67
+ end
68
+
69
+ # Source Location
70
+ @spec.source = binary_source
71
+
72
+ # Source Code
73
+ # @spec.source_files = framework_contents('Headers/*')
74
+ # @spec.public_header_files = framework_contents('Headers/*')
75
+
76
+ # Unused for binary
77
+ spec_hash = @spec.to_hash
78
+ # spec_hash.delete('license')
79
+ spec_hash.delete('resource_bundles')
80
+ spec_hash.delete('exclude_files')
81
+ spec_hash.delete('preserve_paths')
82
+
83
+ spec_hash.delete('subspecs')
84
+ spec_hash.delete('default_subspecs')
85
+ spec_hash.delete('default_subspec')
86
+ spec_hash.delete('vendored_frameworks')
87
+ spec_hash.delete('vendored_framework')
88
+
89
+
90
+ spec_hash.delete('vendored_libraries')
91
+
92
+
93
+ platforms = spec_hash['platforms']
94
+ selected_platforms = platforms.select { |k, _v| @platforms.include?(k) }
95
+ spec_hash['platforms'] = selected_platforms.empty? ? platforms : selected_platforms
96
+
97
+ @spec = Pod::Specification.from_hash(spec_hash)
98
+
99
+ @spec.prepare_command = "" if @spec.prepare_command
100
+ @spec.version = code_spec.version
101
+ @spec.source = binary_source
102
+ @spec.source_files = binary_source_files
103
+ @spec.public_header_files = binary_public_header_files
104
+ @spec.vendored_libraries = binary_vendored_libraries
105
+ @spec.resources = binary_resources if @spec.attributes_hash.keys.include?("resources")
106
+ @spec.description = <<-EOF
107
+ 「 」
108
+ #{@spec.description}
109
+ EOF
110
+ @spec
111
+ end
112
+
113
+ def create_framework_from_code_spec
114
+ @spec = code_spec.dup
115
+
116
+ @spec.vendored_frameworks = "#{code_spec.root.name}.framework"
117
+
118
+ extnames = []
119
+ extnames << '*.bundle' if code_spec_consumer.resource_bundles.any?
120
+ if code_spec_consumer.resources.any?
121
+ extnames += code_spec_consumer.resources.map { |r| File.basename(r) }
122
+ end
123
+ if extnames.any?
124
+ @spec.resources = framework_contents('Resources').flat_map { |r| extnames.map { |e| "#{r}/#{e}" } }
125
+ end
126
+
127
+ @spec.source = binary_source
128
+
129
+ spec_hash = @spec.to_hash
130
+ # spec_hash.delete('license')
131
+ spec_hash.delete('resource_bundles')
132
+ spec_hash.delete('exclude_files')
133
+ spec_hash.delete('preserve_paths')
134
+
135
+ vendored_libraries = spec_hash.delete('vendored_libraries')
136
+ vendored_libraries = Array(vendored_libraries).reject { |l| l.end_with?('.a') }
137
+ if vendored_libraries.any?
138
+ spec_hash['vendored_libraries'] = vendored_libraries
139
+ end
140
+
141
+ platforms = spec_hash['platforms']
142
+ selected_platforms = platforms.select { |k, _v| @platforms.include?(k) }
143
+ spec_hash['platforms'] = selected_platforms.empty? ? platforms : selected_platforms
144
+
145
+ @spec = Pod::Specification.from_hash(spec_hash)
146
+ @spec.description = <<-EOF
147
+ 「 」
148
+ #{@spec.description}
149
+ EOF
150
+ @spec
151
+ end
152
+
153
+
154
+ def binary_source
155
+ { http: format(CBin.config.binary_download_url, code_spec.root.name, code_spec.version), type: CBin.config.download_file_type }
156
+ end
157
+
158
+ def code_spec_consumer(_platform = :ios)
159
+ code_spec.consumer(:ios)
160
+ end
161
+
162
+ def framework_contents(name)
163
+ ["#{code_spec.root.name}.framework", "#{code_spec.root.name}.framework/Versions/A"].map { |path| "#{path}/#{name}" }
164
+ end
165
+
166
+ def binary_source_files
167
+ { http: format(CBin.config.binary_download_url, code_spec.root.name, code_spec.version), type: CBin.config.download_file_type }
168
+ end
169
+
170
+ def binary_source_files
171
+ "bin_#{code_spec.name}_#{code_spec.version}/Headers/*"
172
+ end
173
+
174
+ def binary_public_header_files
175
+ "bin_#{code_spec.name}_#{code_spec.version}/Headers/*.h"
176
+ end
177
+
178
+ def binary_vendored_libraries
179
+ "bin_#{code_spec.name}_#{code_spec.version}/*.a"
180
+ end
181
+
182
+ def binary_resources
183
+ "bin_#{code_spec.name}_#{code_spec.version}/Resources/*"
184
+ end
185
+
186
+ end
187
+ end
188
+ end
189
+
@@ -0,0 +1,81 @@
1
+
2
+
3
+ # copy from https://github.com/CocoaPods/cocoapods-packager
4
+
5
+ require 'cocoapods-tj/native/podfile'
6
+ require 'cocoapods/command/gen'
7
+ require 'cocoapods/generate'
8
+ require 'cocoapods-tj/helpers/framework_builder'
9
+ require 'cocoapods-tj/helpers/library_builder'
10
+ require 'cocoapods-tj/helpers/sources_helper'
11
+ require 'cocoapods-tj/command/bin/spec/push'
12
+
13
+ module CBin
14
+ class Upload
15
+ class Helper
16
+ include CBin::SourcesHelper
17
+
18
+ def initialize(spec,code_dependencies,sources)
19
+ @spec = spec
20
+ @code_dependencies = code_dependencies
21
+ @sources = sources
22
+ end
23
+
24
+ def upload
25
+ Dir.chdir(CBin::Config::Builder.instance.root_dir) do
26
+
27
+ res_zip = curl_zip
28
+ if res_zip
29
+ filename = spec_creator
30
+ push_binary_repo(filename)
31
+ end
32
+ res_zip
33
+ end
34
+ end
35
+
36
+ def spec_creator
37
+ spec_creator = CBin::SpecificationSource::Creator.new(@spec)
38
+ spec_creator.create
39
+ spec_creator.write_spec_file
40
+ spec_creator.filename
41
+ end
42
+
43
+ def curl_zip
44
+ zip_file = "#{CBin::Config::Builder.instance.library_file(@spec)}.zip"
45
+ res = File.exist?(zip_file)
46
+ unless res
47
+ zip_file = CBin::Config::Builder.instance.framework_zip_file(@spec) + ".zip"
48
+ res = File.exist?(zip_file)
49
+ end
50
+ if res
51
+ `curl #{CBin.config.binary_upload_url} -F "name=#{@spec.name}" -F "version=#{@spec.version}" -F "annotate=#{@spec.name}_#{@spec.version}_log" -F "file=@#{zip_file}"` if res
52
+ end
53
+
54
+ res
55
+ end
56
+
57
+
58
+ # 上传二进制 podspec
59
+ def push_binary_repo(binary_podsepc_json)
60
+ argvs = [
61
+ "#{binary_podsepc_json}",
62
+ "--binary",
63
+ "--sources=#{sources_option(@code_dependencies, @sources)},https:\/\/cdn.cocoapods.org",
64
+ "--skip-import-validation",
65
+ "--use-libraries",
66
+ "--allow-warnings",
67
+ "--verbose",
68
+ "--code-dependencies"
69
+ ]
70
+ if @verbose
71
+ argvs += ['--verbose']
72
+ end
73
+
74
+ push = Pod::Command::Bin::Repo::Push.new(CLAide::ARGV.new(argvs))
75
+ push.validate!
76
+ push.run
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,5 @@
1
+ require 'cocoapods-tj/helpers/sources_helper'
2
+ require 'cocoapods-tj/helpers/spec_creator'
3
+ require 'cocoapods-tj/helpers/spec_files_helper'
4
+ require 'cocoapods-tj/helpers/spec_source_creator'
5
+ require 'cocoapods-tj/helpers/build_utils'
@@ -0,0 +1,26 @@
1
+
2
+
3
+ module Pod
4
+ module Generator
5
+ class Acknowledgements
6
+ def license_text(spec)
7
+ return nil unless spec.license
8
+
9
+ text = spec.license[:text]
10
+ unless text
11
+ if license_file = spec.license[:file]
12
+ license_path = file_accessor(spec).root + license_file
13
+ if File.exist?(license_path)
14
+ text = IO.read(license_path)
15
+ else
16
+
17
+ end
18
+ elsif license_file = file_accessor(spec).license
19
+ text = IO.read(license_file)
20
+ end
21
+ end
22
+ text
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+
2
+
3
+ require 'parallel'
4
+ require 'cocoapods'
5
+
6
+ module Pod
7
+ class Installer
8
+ class Analyzer
9
+
10
+ alias old_update_repositories update_repositories
11
+ def update_repositories
12
+ if installation_options.update_source_with_multi_processes
13
+
14
+ Parallel.each(sources.uniq(&:url), in_processes: 4) do |source|
15
+ if source.git?
16
+ config.sources_manager.update(source.name, true)
17
+ else
18
+ end
19
+ end
20
+ @specs_updated = true
21
+ else
22
+ old_update_repositories
23
+ end
24
+ end
25
+
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,20 @@
1
+ require 'macho'
2
+ require 'cocoapods'
3
+
4
+ module Pod
5
+ class Sandbox
6
+ class FileAccessor
7
+ def dynamic_binary?(binary)
8
+ @cached_dynamic_binary_results ||= {}
9
+ return @cached_dynamic_binary_results[binary] unless @cached_dynamic_binary_results[binary].nil?
10
+ return false unless binary.file?
11
+
12
+ @cached_dynamic_binary_results[binary] = MachO.open(binary).dylib?
13
+ rescue MachO::MachOError
14
+ @cached_dynamic_binary_results[binary] = true
15
+
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+
2
+ require 'cocoapods'
3
+
4
+ module Pod
5
+ class Installer
6
+ class InstallationOptions
7
+ def self.env_option(key, default = true)
8
+ option key, ENV[key.to_s].nil? ? default : ENV[key.to_s] == 'true'
9
+ end
10
+
11
+ defaults.delete('warn_for_multiple_pod_sources')
12
+ env_option :warn_for_multiple_pod_sources, false
13
+
14
+ env_option :warn_for_unsecure_source, false
15
+
16
+ env_option :install_with_multi_threads, true
17
+
18
+ env_option :update_source_with_multi_processes, true
19
+ end
20
+ end
21
+ end