cocoapods-imy-bin 0.3.1.2 → 0.3.1.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/cocoapods-imy-bin/command/bin/archive.rb +18 -20
- data/lib/cocoapods-imy-bin/command/bin/auto.rb +12 -9
- data/lib/cocoapods-imy-bin/command/bin/clean.rb +126 -0
- data/lib/cocoapods-imy-bin/command/bin/local.rb +169 -0
- data/lib/cocoapods-imy-bin/command/bin/update.rb +14 -3
- data/lib/cocoapods-imy-bin/command/bin.rb +1 -0
- data/lib/cocoapods-imy-bin/config/config.rb +8 -0
- data/lib/cocoapods-imy-bin/gem_version.rb +1 -1
- data/lib/cocoapods-imy-bin/helpers/build_utils.rb +40 -9
- data/lib/cocoapods-imy-bin/helpers/framework_builder.rb +1 -1
- data/lib/cocoapods-imy-bin/helpers/local/loca_llibrary.rb +57 -0
- data/lib/cocoapods-imy-bin/helpers/local/local_build_helper.rb +183 -0
- data/lib/cocoapods-imy-bin/helpers/local/local_framework.rb +85 -0
- data/lib/cocoapods-imy-bin/helpers/local/local_framework_builder.rb +227 -0
- data/lib/cocoapods-imy-bin/helpers/local/local_library_builder.rb +96 -0
- data/lib/cocoapods-imy-bin/helpers/spec_source_creator.rb +10 -4
- data/lib/cocoapods-imy-bin/helpers/upload_helper.rb +5 -3
- data/lib/cocoapods-imy-bin/native/Downloader.rb +68 -0
- data/lib/cocoapods-imy-bin/native/Lockfile.rb +36 -0
- data/lib/cocoapods-imy-bin/native/installer.rb +6 -0
- data/lib/cocoapods-imy-bin/native/podfile.rb +7 -0
- data/lib/cocoapods-imy-bin/native/podfile_env.rb +5 -0
- data/lib/cocoapods-imy-bin/native/resolver.rb +10 -5
- data/lib/cocoapods-imy-bin/native.rb +3 -1
- data/lib/cocoapods-imy-bin/post_install_hook.rb +110 -0
- data/lib/cocoapods-imy-bin/source_provider_hook.rb +3 -0
- data/lib/cocoapods_plugin.rb +1 -0
- metadata +16 -6
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'cocoapods-downloader'
|
2
|
+
require 'claide/informative_error'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'tmpdir'
|
5
|
+
|
6
|
+
module Pod
|
7
|
+
module Downloader
|
8
|
+
require 'cocoapods/downloader/cache'
|
9
|
+
require 'cocoapods/downloader/request'
|
10
|
+
require 'cocoapods/downloader/response'
|
11
|
+
|
12
|
+
# Downloads a pod from the given `request` to the given `target` location.
|
13
|
+
#
|
14
|
+
# @return [Response] The download response for this download.
|
15
|
+
#
|
16
|
+
# @param [Request] request
|
17
|
+
# the request that describes this pod download.
|
18
|
+
#
|
19
|
+
# @param [Pathname,Nil] target
|
20
|
+
# the location to which this pod should be downloaded. If `nil`,
|
21
|
+
# then the pod will only be cached.
|
22
|
+
#
|
23
|
+
# @param [Boolean] can_cache
|
24
|
+
# whether caching is allowed.
|
25
|
+
#
|
26
|
+
# @param [Pathname,Nil] cache_path
|
27
|
+
# the path used to cache pod downloads.
|
28
|
+
#
|
29
|
+
def self.download(
|
30
|
+
request,
|
31
|
+
target,
|
32
|
+
can_cache: true,
|
33
|
+
cache_path: Config.instance.cache_root + 'Pods'
|
34
|
+
)
|
35
|
+
can_cache &&= !Config.instance.skip_download_cache
|
36
|
+
|
37
|
+
request = preprocess_request(request)
|
38
|
+
|
39
|
+
if can_cache
|
40
|
+
raise ArgumentError, 'Must provide a `cache_path` when caching.' unless cache_path
|
41
|
+
cache = Cache.new(cache_path)
|
42
|
+
result = cache.download_pod(request)
|
43
|
+
else
|
44
|
+
raise ArgumentError, 'Must provide a `target` when caching is disabled.' unless target
|
45
|
+
|
46
|
+
require 'cocoapods/installer/pod_source_preparer'
|
47
|
+
result, = download_request(request, target)
|
48
|
+
Installer::PodSourcePreparer.new(result.spec, result.location).prepare!
|
49
|
+
end
|
50
|
+
|
51
|
+
if target && result.location && target != result.location
|
52
|
+
UI.message "Copying #{request.name} from `#{result.location}` to #{UI.path target}", '> ' do
|
53
|
+
FileUtils.rm_rf target
|
54
|
+
FileUtils.cp_r(result.location, target)
|
55
|
+
file_count = Dir.glob(File.join(target, '**', '*')).select { |file| File.file?(file) }.count
|
56
|
+
if file_count < 2
|
57
|
+
FileUtils.rm_rf target
|
58
|
+
FileUtils.cp_r(result.location, target)
|
59
|
+
UI.warn "======Copying #{request.name} ==== #{target} 为空,请注意 ======== "
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
result
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'parallel'
|
2
|
+
require 'cocoapods'
|
3
|
+
require 'cocoapods-core/lockfile'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
module Pod
|
7
|
+
class Lockfile
|
8
|
+
|
9
|
+
# 处理 下载文件为空的情况
|
10
|
+
#交换 Lockfile 下的 detect_changes_with_podfile,拿到 result
|
11
|
+
#并且取出 result下的 unchanged下的列表,判断各个spec是否存在超过一个文件,
|
12
|
+
#如果不存在就删除该文件夹,移除result[:unchanged]中的值,并且加入result[:added],
|
13
|
+
alias old_detect_changes_with_podfile detect_changes_with_podfile
|
14
|
+
def detect_changes_with_podfile(podfile)
|
15
|
+
result = old_detect_changes_with_podfile(podfile)
|
16
|
+
result[:unchanged].each do |name|
|
17
|
+
spec_path = File.join(Pod::Config.instance.sandbox_root,name)
|
18
|
+
|
19
|
+
if File.directory?(spec_path)
|
20
|
+
#.头文件小于1个,认定是空的,需要重新下载podspec
|
21
|
+
file_count = Dir.glob(File.join(spec_path, '**', '*.h')).select { |file| File.file?(file) }.count
|
22
|
+
#用于判断是否文件,太少就认定是失败了
|
23
|
+
if file_count < 1
|
24
|
+
FileUtils.rm_rf(spec_path)
|
25
|
+
result[:added] << name
|
26
|
+
UI.warn "====== #{name} ==== #{spec_path} 为空,请注意 ======== "
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
result
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -105,6 +105,12 @@ module Pod
|
|
105
105
|
group.set_source_tree('SOURCE_ROOT')
|
106
106
|
#向group中添加 文件引用
|
107
107
|
file_ref = group.new_reference(config.sandbox.root + '../Podfile_local')
|
108
|
+
file_ref.xc_language_specification_identifier = 'xcode.lang.ruby'
|
109
|
+
file_ref.explicit_file_type = 'text.script.ruby'
|
110
|
+
file_ref.last_known_file_type = 'text'
|
111
|
+
file_ref.tab_width = '2'
|
112
|
+
file_ref.indent_width = '2'
|
113
|
+
|
108
114
|
#podfile_local排序
|
109
115
|
podfile_local_group = group.children.last
|
110
116
|
group.children.pop
|
@@ -15,6 +15,9 @@ module Pod
|
|
15
15
|
def use_binaries!(flag = true)
|
16
16
|
set_internal_hash_value(USE_BINARIES, flag)
|
17
17
|
end
|
18
|
+
def use_hmap!(flag = true)
|
19
|
+
set_internal_hash_value(USE_HMAP, flag)
|
20
|
+
end
|
18
21
|
|
19
22
|
def use_binaries_with_spec_selector!(&block)
|
20
23
|
raise Informative, '必须提供选择需要二进制组件的 block !' unless block_given?
|
@@ -61,6 +64,10 @@ module Pod
|
|
61
64
|
get_internal_hash_value(USE_BINARIES, false) || ENV[USE_BINARIES] == 'true'
|
62
65
|
end
|
63
66
|
|
67
|
+
def use_hmap?
|
68
|
+
get_internal_hash_value(USE_HMAP, false) || ENV[USE_HMAP] == 'true'
|
69
|
+
end
|
70
|
+
|
64
71
|
def use_source_pods
|
65
72
|
get_internal_hash_value(USE_SOURCE_PODS, []) + String(ENV[USE_SOURCE_PODS]).split('|').uniq
|
66
73
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module Pod
|
4
4
|
class Podfile
|
5
5
|
USE_BINARIES = 'use_binaries'
|
6
|
+
USE_HMAP = 'use_hmap'
|
6
7
|
USE_SOURCE_PODS = 'use_source_pods'
|
7
8
|
USE_BINARIES_SELECTOR = 'use_binaries_selector'
|
8
9
|
ALLOW_PRERELEASE = 'allow_prerelease'
|
@@ -22,6 +23,10 @@ module Pod
|
|
22
23
|
execute_with_key(USE_BINARIES, -> { use_binaries ? 'true' : 'false' }, &block)
|
23
24
|
end
|
24
25
|
|
26
|
+
def execute_with_use_hmap(use_hmap, &block)
|
27
|
+
execute_with_key(USE_HMAP, -> { use_hmap ? 'true' : 'false' }, &block)
|
28
|
+
end
|
29
|
+
|
25
30
|
def execute_with_key(key, value_returner)
|
26
31
|
origin_value = ENV[key]
|
27
32
|
ENV[key] = value_returner.call
|
@@ -184,12 +184,17 @@ module Pod
|
|
184
184
|
missing_binary_specs.uniq.each do |spec|
|
185
185
|
next if spec.name.include?('/')
|
186
186
|
|
187
|
-
|
188
|
-
|
189
|
-
spec_git_res =
|
190
|
-
|
187
|
+
ignore_git_list = CBin::Config::Builder.instance.ignore_git_list
|
188
|
+
if ignore_git_list
|
189
|
+
spec_git_res = false
|
190
|
+
#这里会过滤 ignore_git 配置中的 仓库
|
191
|
+
ignore_git_list.each do |ignore_git|
|
192
|
+
spec_git_res = spec.source[:git] && spec.source[:git].include?(ignore_git)
|
193
|
+
break if spec_git_res
|
194
|
+
end
|
195
|
+
next if spec_git_res
|
191
196
|
end
|
192
|
-
|
197
|
+
|
193
198
|
|
194
199
|
#获取没有制作二进制版本的spec集合
|
195
200
|
sources_sepc << spec
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'cocoapods'
|
2
|
-
|
2
|
+
require 'xcodeproj'
|
3
3
|
if Pod.match_version?('~> 1.4')
|
4
4
|
require 'cocoapods-imy-bin/native/podfile'
|
5
5
|
require 'cocoapods-imy-bin/native/installation_options'
|
@@ -19,5 +19,7 @@ if Pod.match_version?('~> 1.4')
|
|
19
19
|
require 'cocoapods-imy-bin/native/file_accessor'
|
20
20
|
require 'cocoapods-imy-bin/native/pod_target_installer'
|
21
21
|
require 'cocoapods-imy-bin/native/target_validator'
|
22
|
+
require 'cocoapods-imy-bin/native/Lockfile'
|
23
|
+
require 'cocoapods-imy-bin/native/Downloader'
|
22
24
|
|
23
25
|
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'cocoapods-imy-bin/native/sources_manager'
|
2
|
+
require 'cocoapods-imy-bin/command/bin/repo/update'
|
3
|
+
require 'cocoapods/user_interface'
|
4
|
+
require 'xcodeproj/config/other_linker_flags_parser'
|
5
|
+
require 'xcodeproj/config'
|
6
|
+
|
7
|
+
module Xcodeproj
|
8
|
+
class Config
|
9
|
+
def remove_attr_with_key(key)
|
10
|
+
unless key == nil
|
11
|
+
@attributes.delete(key)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
def remove_header_search_path
|
15
|
+
remove_attr_with_key('HEADER_SEARCH_PATHS')
|
16
|
+
flags = @attributes['OTHER_CFLAGS']
|
17
|
+
if flags
|
18
|
+
new_flags = ''
|
19
|
+
skip = false
|
20
|
+
flags.split(' ').each do |substr|
|
21
|
+
if skip
|
22
|
+
skip = false
|
23
|
+
next
|
24
|
+
end
|
25
|
+
if substr == '-isystem'
|
26
|
+
skip = true
|
27
|
+
next
|
28
|
+
end
|
29
|
+
if new_flags.length > 0
|
30
|
+
new_flags += ' '
|
31
|
+
end
|
32
|
+
new_flags += substr
|
33
|
+
end
|
34
|
+
if new_flags.length > 0
|
35
|
+
@attributes['OTHER_CFLAGS'] = new_flags
|
36
|
+
else
|
37
|
+
remove_attr_with_key('OTHER_CFLAGS')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
module Pod
|
45
|
+
class Installer
|
46
|
+
class PostInstallHooksContext
|
47
|
+
attr_accessor :aggregate_targets
|
48
|
+
def self.generate(sandbox, pods_project, aggregate_targets)
|
49
|
+
context = super
|
50
|
+
UI.info "[#] generate method of post install hook context override"
|
51
|
+
context.aggregate_targets = aggregate_targets
|
52
|
+
context
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
module ProjectHeaderMap
|
57
|
+
HooksManager.register('cocoapods-imy-bin', :post_install) do |post_context|
|
58
|
+
|
59
|
+
podfile = Pod::Config.instance.podfile
|
60
|
+
|
61
|
+
|
62
|
+
if podfile && podfile.use_hmap?
|
63
|
+
UI.info "[#] use hmap for this project"
|
64
|
+
post_context.aggregate_targets.each do |one|
|
65
|
+
hmap = Hash.new
|
66
|
+
one.pod_targets.each do |target|
|
67
|
+
target.public_header_mappings_by_file_accessor.each do |facc, headers|
|
68
|
+
headers.each do |key, value|
|
69
|
+
value.each do |path|
|
70
|
+
pn = Pathname.new(path)
|
71
|
+
name = pn.basename.to_s
|
72
|
+
dirname = pn.dirname.to_s + '/'
|
73
|
+
# construct hmap hash info
|
74
|
+
path_info = Hash['suffix' => name, 'prefix' => dirname]
|
75
|
+
# import with quote
|
76
|
+
hmap[name] = path_info
|
77
|
+
# import with angle bracket
|
78
|
+
hmap["#{target.name}/#{name}"] = path_info
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
unless hmap.empty?
|
85
|
+
path = "#{post_context.sandbox_root + "/#{one.name}-hmap.json"}"
|
86
|
+
path_hmap = "#{post_context.sandbox_root + "/#{one.name}.hmap"}"
|
87
|
+
# write hmap json to file
|
88
|
+
File.open(path, 'w') { |file| file << hmap.to_json }
|
89
|
+
# json to hmap
|
90
|
+
system("hmap convert #{path} #{path_hmap}")
|
91
|
+
# delete json file
|
92
|
+
File.delete(path)
|
93
|
+
|
94
|
+
# override xcconfig
|
95
|
+
one.xcconfigs.each do |config_name, config_file|
|
96
|
+
# puts "config_file == #{config_file} \n\r"
|
97
|
+
config_file << Hash['OTHER_CFLAGS' => "#{"-I ${PODS_ROOT}/#{one.name}.hmap"}"]
|
98
|
+
config_file << Hash['OTHER_SWIFT_FLAGS' => "#{"-Xcc -I${PODS_ROOT}/#{one.name}.hmap"}"]
|
99
|
+
config_file.remove_header_search_path
|
100
|
+
xcconfig_path = one.xcconfig_path(config_name)
|
101
|
+
config_file.save_as(xcconfig_path)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -46,6 +46,7 @@ end
|
|
46
46
|
|
47
47
|
Pod::HooksManager.register('cocoapods-imy-bin', :source_provider) do |context, _|
|
48
48
|
#pod bin update || install 不走这里
|
49
|
+
puts "post_install================================="
|
49
50
|
if $ARGV[1] == 'update' || $ARGV[1] != 'install'
|
50
51
|
|
51
52
|
else
|
@@ -64,3 +65,5 @@ Pod::HooksManager.register('cocoapods-imy-bin', :source_provider) do |context, _
|
|
64
65
|
end
|
65
66
|
|
66
67
|
end
|
68
|
+
|
69
|
+
|
data/lib/cocoapods_plugin.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-imy-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.1.
|
4
|
+
version: 0.3.1.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 苏良锦
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: cocoapods-generate
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- lib/cocoapods-imy-bin/command/bin.rb
|
96
96
|
- lib/cocoapods-imy-bin/command/bin/archive.rb
|
97
97
|
- lib/cocoapods-imy-bin/command/bin/auto.rb
|
98
|
+
- lib/cocoapods-imy-bin/command/bin/clean.rb
|
98
99
|
- lib/cocoapods-imy-bin/command/bin/code.rb
|
99
100
|
- lib/cocoapods-imy-bin/command/bin/dup.rb
|
100
101
|
- lib/cocoapods-imy-bin/command/bin/imy.rb
|
@@ -102,6 +103,7 @@ files:
|
|
102
103
|
- lib/cocoapods-imy-bin/command/bin/initHotKey.rb
|
103
104
|
- lib/cocoapods-imy-bin/command/bin/install.rb
|
104
105
|
- lib/cocoapods-imy-bin/command/bin/lib/lint.rb
|
106
|
+
- lib/cocoapods-imy-bin/command/bin/local.rb
|
105
107
|
- lib/cocoapods-imy-bin/command/bin/repo/update.rb
|
106
108
|
- lib/cocoapods-imy-bin/command/bin/spec/create.rb
|
107
109
|
- lib/cocoapods-imy-bin/command/bin/spec/push.rb
|
@@ -120,12 +122,19 @@ files:
|
|
120
122
|
- lib/cocoapods-imy-bin/helpers/framework_builder.rb
|
121
123
|
- lib/cocoapods-imy-bin/helpers/library.rb
|
122
124
|
- lib/cocoapods-imy-bin/helpers/library_builder.rb
|
125
|
+
- lib/cocoapods-imy-bin/helpers/local/loca_llibrary.rb
|
126
|
+
- lib/cocoapods-imy-bin/helpers/local/local_build_helper.rb
|
127
|
+
- lib/cocoapods-imy-bin/helpers/local/local_framework.rb
|
128
|
+
- lib/cocoapods-imy-bin/helpers/local/local_framework_builder.rb
|
129
|
+
- lib/cocoapods-imy-bin/helpers/local/local_library_builder.rb
|
123
130
|
- lib/cocoapods-imy-bin/helpers/sources_helper.rb
|
124
131
|
- lib/cocoapods-imy-bin/helpers/spec_creator.rb
|
125
132
|
- lib/cocoapods-imy-bin/helpers/spec_files_helper.rb
|
126
133
|
- lib/cocoapods-imy-bin/helpers/spec_source_creator.rb
|
127
134
|
- lib/cocoapods-imy-bin/helpers/upload_helper.rb
|
128
135
|
- lib/cocoapods-imy-bin/native.rb
|
136
|
+
- lib/cocoapods-imy-bin/native/Downloader.rb
|
137
|
+
- lib/cocoapods-imy-bin/native/Lockfile.rb
|
129
138
|
- lib/cocoapods-imy-bin/native/acknowledgements.rb
|
130
139
|
- lib/cocoapods-imy-bin/native/analyzer.rb
|
131
140
|
- lib/cocoapods-imy-bin/native/file_accessor.rb
|
@@ -146,6 +155,7 @@ files:
|
|
146
155
|
- lib/cocoapods-imy-bin/native/specification.rb
|
147
156
|
- lib/cocoapods-imy-bin/native/target_validator.rb
|
148
157
|
- lib/cocoapods-imy-bin/native/validator.rb
|
158
|
+
- lib/cocoapods-imy-bin/post_install_hook.rb
|
149
159
|
- lib/cocoapods-imy-bin/source_provider_hook.rb
|
150
160
|
- lib/cocoapods_plugin.rb
|
151
161
|
- spec/command/bin_spec.rb
|