cocoapods-imy-bin 0.3.1.3 → 0.3.1.21
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 +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 +2 -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
|