pod-pipeline 0.5.6 → 0.5.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pod-pipeline/command/build.rb +34 -9
- data/lib/pod-pipeline/command/scan/depend.rb +36 -0
- data/lib/pod-pipeline/command/scan.rb +1 -0
- data/lib/pod-pipeline/util/binary.rb +28 -13
- data/lib/pod-pipeline/util/bundle.rb +27 -12
- data/lib/pod-pipeline/util/header.rb +58 -0
- data/lib/pod-pipeline/util/scanner.rb +9 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b21a6b46fe8b53d7f5a67e42925ce3cb650cb0add13f345370b3536d4d0bc57e
|
4
|
+
data.tar.gz: 47f60f1813e7a0f59e90165917489522e1ba4a69586721cb611f491fcc1d8392
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5be551fc3105d8309f3802fb33ef106e13557be4d11f8c621417e628771d8ea3ef9472ea13062587941cef03bff3eb07d6e100a49e7484b572845549d7a2a61a
|
7
|
+
data.tar.gz: 9d63c3428036d8f96b36f882ba6b5a27a08e58e8cdcab014530a197b97903357638c7a1affc05a2982045bdc8e96f1ae4167c233c2f2d52c1d7b96c9c8619fb4
|
@@ -4,6 +4,7 @@ require 'pod-pipeline/util/scanner'
|
|
4
4
|
require 'pod-pipeline/util/xcodebuild'
|
5
5
|
require 'pod-pipeline/util/binary'
|
6
6
|
require 'pod-pipeline/util/bundle'
|
7
|
+
require 'pod-pipeline/util/header'
|
7
8
|
|
8
9
|
require 'pod-pipeline/extension/dir-ppl'
|
9
10
|
|
@@ -23,7 +24,9 @@ module PPL
|
|
23
24
|
['--configuration=Release', '项目构建的环境。(默认为Release)'],
|
24
25
|
['--arch=arm64,armv7,x86_64', '项目构建的架构。(默认为 arm64,armv7,x86_64)'],
|
25
26
|
['--combine=local,pod', '项目构建后合并依赖库的二进制文件,local为本地依赖库,pod为CocoaPods依赖库。(默认为 不合并)'],
|
26
|
-
['--combine-
|
27
|
+
['--combine-headers=false', '项目构建后合并依赖库的头文件。(默认为 不合并)'],
|
28
|
+
['--combine-include=name1,name2', '项目构建后合并依赖库的二进制文件,标注想合并的内容,执行顺序在exclude前。'],
|
29
|
+
['--combine-exclude=name1,name2', '项目构建后合并依赖库的二进制文件,标注不想合并的内容,执行顺序在include后。'],
|
27
30
|
['--bundle-merge=merge', '是否合并所有资源包,参数为合并后的资源包名。(默认为 不合并)'],
|
28
31
|
].concat(super)
|
29
32
|
end
|
@@ -34,7 +37,9 @@ module PPL
|
|
34
37
|
@configuration = argv.option('configuration', '').split(',').first
|
35
38
|
@archs = argv.option('arch', '').split(',')
|
36
39
|
@combines = argv.option('combine', '').split(',')
|
37
|
-
@
|
40
|
+
@combine_headers = argv.option('combine-headers', false)
|
41
|
+
@combine_include = argv.option('combine-include', '').split(',')
|
42
|
+
@combine_exclude = argv.option('combine-exclude', '').split(',')
|
38
43
|
@bundle_merge = argv.option('bundle-merge', '').split(',').first
|
39
44
|
|
40
45
|
@projectPath = @path.count.zero? ? Pathname.pwd.to_s : @path.first
|
@@ -65,9 +70,9 @@ module PPL
|
|
65
70
|
XCodebuild.build(@workspace.path, @podspec.name, arch, @configuration, @build_path)
|
66
71
|
end
|
67
72
|
|
68
|
-
|
69
|
-
puts "\n[
|
70
|
-
|
73
|
+
#合并头文件
|
74
|
+
puts "\n[合并 #{@combines.join(", ")} 的头文件]"
|
75
|
+
combine_headers(@combines.include?('local'), @combines.include?('pod'))
|
71
76
|
|
72
77
|
#合并二进制文件
|
73
78
|
puts "\n[合并 #{@combines.join(", ")} 的二进制文件]"
|
@@ -121,6 +126,26 @@ module PPL
|
|
121
126
|
end
|
122
127
|
end
|
123
128
|
|
129
|
+
def combine_headers(local_dependency, pod_dependency)
|
130
|
+
headers = "#{@framework_path}/Headers"
|
131
|
+
#添加 构建生成的二进制文件
|
132
|
+
inputs = []
|
133
|
+
if local_dependency
|
134
|
+
#添加 本地依赖的二进制文件
|
135
|
+
inputs << "#{@output}/#{@podspec.name}/Frameworks/**/*.framework"
|
136
|
+
end
|
137
|
+
if pod_dependency
|
138
|
+
#添加 Pod依赖库构建生成的二进制文件
|
139
|
+
inputs << "#{@build_path}/*/**/*.framework"
|
140
|
+
#添加 Pod依赖库本地依赖的二进制文件
|
141
|
+
inputs << "#{@output}/Example/Pods/**/Frameworks/**/*.framework"
|
142
|
+
end
|
143
|
+
|
144
|
+
Header.combine(headers, inputs, @combine_include, @combine_exclude)
|
145
|
+
|
146
|
+
add_headers
|
147
|
+
end
|
148
|
+
|
124
149
|
def combine_binarys(local_dependency, pod_dependency)
|
125
150
|
binary = "#{@framework_path}/#{@podspec.name}"
|
126
151
|
#添加 构建生成的二进制文件
|
@@ -134,8 +159,8 @@ module PPL
|
|
134
159
|
end
|
135
160
|
if pod_dependency
|
136
161
|
#添加 Pod依赖库构建生成的二进制文件
|
137
|
-
inputs << "#{@build_path}/*/**/lib*.a"
|
138
|
-
inputs << "#{@build_path}/*/**/*.framework/*"
|
162
|
+
inputs << "#{@build_path}/*/**/lib*.a"
|
163
|
+
inputs << "#{@build_path}/*/**/*.framework/*"
|
139
164
|
#添加 Pod依赖库预先构建的二进制文件
|
140
165
|
inputs << "#{@output}/Example/Pods/**/*SDK/*.framework/*"
|
141
166
|
#添加 Pod依赖库本地依赖的二进制文件
|
@@ -143,7 +168,7 @@ module PPL
|
|
143
168
|
inputs << "#{@output}/Example/Pods/**/Frameworks/**/*.framework/*"
|
144
169
|
end
|
145
170
|
|
146
|
-
Binary.combine(binary, inputs, @
|
171
|
+
Binary.combine(binary, inputs, @combine_include, @combine_exclude)
|
147
172
|
Binary.thin(binary, @archs)
|
148
173
|
end
|
149
174
|
|
@@ -165,7 +190,7 @@ module PPL
|
|
165
190
|
inputs << "#{@output}/Example/Pods/**/Frameworks/**/*.bundle"
|
166
191
|
end
|
167
192
|
|
168
|
-
Bundle.
|
193
|
+
Bundle.combine(inputs, @build_path, @combine_include, @combine_exclude)
|
169
194
|
end
|
170
195
|
|
171
196
|
def merge_bundles
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'pod-pipeline/util/scanner'
|
2
|
+
|
3
|
+
module PPL
|
4
|
+
class Command
|
5
|
+
class Scan < Command
|
6
|
+
class Depend < Scan
|
7
|
+
self.summary = '输出 Pod 配置信息'
|
8
|
+
|
9
|
+
self.description = <<-DESC
|
10
|
+
输出 Pod 配置信息。
|
11
|
+
DESC
|
12
|
+
|
13
|
+
self.arguments = [
|
14
|
+
CLAide::Argument.new('项目根目录(默认使用当前目录)', false),
|
15
|
+
]
|
16
|
+
def self.options
|
17
|
+
[].concat(super)
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(argv)
|
21
|
+
@path = argv.arguments!
|
22
|
+
|
23
|
+
@projectPath = @path.count.zero? ? Pathname.pwd.to_s : @path.first
|
24
|
+
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
PPL::Scanner.new(@projectPath, ['depend']).run
|
30
|
+
|
31
|
+
puts "#{PPL::Scanner.depend}" if PPL::Scanner.depend
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module PPL
|
2
2
|
class Binary
|
3
|
-
def self.combine(output, inputs,
|
3
|
+
def self.combine(output, inputs, include_list=[], exclude_list=[])
|
4
4
|
puts "\n目标文件:#{output}\n"
|
5
5
|
|
6
6
|
#获取合并文件的路径序列
|
@@ -15,17 +15,32 @@ module PPL
|
|
15
15
|
info_log = `lipo -info "#{input_file}" > /dev/null 2>&1
|
16
16
|
echo result:$?`
|
17
17
|
next unless info_log.include? 'result:0'
|
18
|
-
#若 input_file
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
18
|
+
#若 input_file 非被include标记的文件 则跳过
|
19
|
+
unless include_list.empty?
|
20
|
+
is_include = false
|
21
|
+
include_list.each { |include|
|
22
|
+
input_file_basename = File.basename(input_file)
|
23
|
+
include_basename = File.basename(include)
|
24
|
+
if input_file_basename == include_basename || input_file_basename == "lib#{include_basename}.a"
|
25
|
+
is_include = true
|
26
|
+
break
|
27
|
+
end
|
28
|
+
}
|
29
|
+
next unless is_include
|
30
|
+
end
|
31
|
+
#若 input_file 为被exclude标记的文件 则跳过
|
32
|
+
unless exclude_list.empty?
|
33
|
+
is_exclude = false
|
34
|
+
exclude_list.each { |exclude|
|
35
|
+
input_file_basename = File.basename(input_file)
|
36
|
+
exclude_basename = File.basename(exclude)
|
37
|
+
if input_file_basename == exclude_basename || input_file_basename == "lib#{exclude_basename}.a"
|
38
|
+
is_exclude = true
|
39
|
+
break
|
40
|
+
end
|
41
|
+
}
|
42
|
+
next if is_exclude
|
43
|
+
end
|
29
44
|
#若 input_file 为序列中已存在的文件 则跳过
|
30
45
|
next if input_file_queue.include? input_file
|
31
46
|
|
@@ -66,7 +81,7 @@ module PPL
|
|
66
81
|
return
|
67
82
|
end
|
68
83
|
end
|
69
|
-
File.delete(binary)
|
84
|
+
File.delete(binary) if File.exist? binary
|
70
85
|
|
71
86
|
binary_pieces = "#{binary}-*"
|
72
87
|
combine(binary, [binary_pieces])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module PPL
|
2
2
|
class Bundle
|
3
|
-
def self.
|
3
|
+
def self.combine(inputs, output, include_list=[], exclude_list=[])
|
4
4
|
puts "\n目标文件:#{output}\n"
|
5
5
|
|
6
6
|
#获取合并文件的路径序列
|
@@ -10,17 +10,32 @@ module PPL
|
|
10
10
|
Dir[input].each do |input_bundle|;
|
11
11
|
#若 input_bundle 为输出目录 则跳过
|
12
12
|
next if input_bundle.eql? output
|
13
|
-
#若
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
13
|
+
#若 input_file 非被include标记的文件 则跳过
|
14
|
+
unless include_list.empty?
|
15
|
+
is_include = false
|
16
|
+
include_list.each { |include|
|
17
|
+
input_file_basename = File.basename(input_bundle)
|
18
|
+
include_basename = File.basename(include)
|
19
|
+
if input_file_basename == "#{include_basename}.bundle"
|
20
|
+
is_include = true
|
21
|
+
break
|
22
|
+
end
|
23
|
+
}
|
24
|
+
next unless is_include
|
25
|
+
end
|
26
|
+
#若 input_file 为被exclude标记的文件 则跳过
|
27
|
+
unless exclude_list.empty?
|
28
|
+
is_exclude = false
|
29
|
+
exclude_list.each { |exclude|
|
30
|
+
input_file_basename = File.basename(input_bundle)
|
31
|
+
exclude_basename = File.basename(exclude)
|
32
|
+
if input_file_basename == "#{exclude_basename}.bundle"
|
33
|
+
is_exclude = true
|
34
|
+
break
|
35
|
+
end
|
36
|
+
}
|
37
|
+
next if is_exclude
|
38
|
+
end
|
24
39
|
#合并
|
25
40
|
puts "合并资源包:" + input_bundle
|
26
41
|
FileUtils.cp_r(input_bundle, output, :preserve => true)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module PPL
|
2
|
+
# PPL::Header
|
3
|
+
class Header
|
4
|
+
def self.combine_check(path, pattern_list = [])
|
5
|
+
return false if pattern_list.empty?
|
6
|
+
|
7
|
+
path_basename = File.basename(path)
|
8
|
+
pattern_list.each do |pattern|
|
9
|
+
pattern_basename = File.basename(pattern)
|
10
|
+
|
11
|
+
return true if path_basename == "#{pattern_basename}.framework"
|
12
|
+
end
|
13
|
+
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.combine_check_skip(path, queue, include_list = [], exclude_list = [])
|
18
|
+
# 若 path 非目录 则跳过
|
19
|
+
return true unless File.directory?(path)
|
20
|
+
# 若 path 非被include标记的文件 则跳过
|
21
|
+
return true unless combine_check(path, include_list)
|
22
|
+
# 若 path 为被exclude标记的文件 则跳过
|
23
|
+
return true if combine_check(path, exclude_list)
|
24
|
+
# 若 path 为序列中已存在的文件 则跳过
|
25
|
+
return true if queue.include? path
|
26
|
+
|
27
|
+
false
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.combine_collect(inputs, include_list = [], exclude_list = [])
|
31
|
+
# 获取合并文件的路径序列
|
32
|
+
input_queue = []
|
33
|
+
inputs.each do |input|
|
34
|
+
puts "\n合并路径:#{input}"
|
35
|
+
|
36
|
+
Dir[input].each do |input_path|
|
37
|
+
next if combine_check_skip(input_path, input_queue, include_list, exclude_list)
|
38
|
+
|
39
|
+
# 合并
|
40
|
+
puts "=> #{input_path}"
|
41
|
+
input_queue << input_path
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
input_queue
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.combine(output, inputs, include_list = [], exclude_list = [])
|
49
|
+
puts "\n目标文件:#{output}\n"
|
50
|
+
|
51
|
+
combine_collect(inputs, include_list, exclude_list).each do |input|
|
52
|
+
Dir["#{input}/Headers/*.h"].each do |header|
|
53
|
+
FileUtils.cp(header, output, 'preserve': true)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -10,6 +10,7 @@ module PPL
|
|
10
10
|
@@linter = nil
|
11
11
|
@@name = nil
|
12
12
|
@@version = nil
|
13
|
+
@@depend = nil
|
13
14
|
@@git = nil
|
14
15
|
@@remote = nil
|
15
16
|
@@branch = nil
|
@@ -30,6 +31,7 @@ module PPL
|
|
30
31
|
@@linter = scan_pod @projectPath
|
31
32
|
@@name = @@linter.spec.name
|
32
33
|
@@version = @@linter.spec.version
|
34
|
+
@@depend = @@linter.spec.dependencies
|
33
35
|
@@git = scan_git @projectPath
|
34
36
|
@@remote = @@git.remote
|
35
37
|
@@branch = @@git.branches.current.first
|
@@ -40,6 +42,9 @@ module PPL
|
|
40
42
|
when "version"
|
41
43
|
@@linter = scan_pod @projectPath
|
42
44
|
@@version = @@linter.spec.version
|
45
|
+
when "depend"
|
46
|
+
@@linter = scan_pod @projectPath
|
47
|
+
@@depend = @@linter.spec.dependencies.map{ |depend| depend.name }.join(',')
|
43
48
|
when "remote"
|
44
49
|
@@git = scan_git @projectPath
|
45
50
|
@@remote = @@git.remote
|
@@ -68,6 +73,10 @@ module PPL
|
|
68
73
|
@@version
|
69
74
|
end
|
70
75
|
|
76
|
+
def self.depend
|
77
|
+
@@depend
|
78
|
+
end
|
79
|
+
|
71
80
|
def self.git
|
72
81
|
@@git
|
73
82
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pod-pipeline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 郑贤达
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods-core
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- lib/pod-pipeline/command/scan.rb
|
121
121
|
- lib/pod-pipeline/command/scan/all.rb
|
122
122
|
- lib/pod-pipeline/command/scan/branch.rb
|
123
|
+
- lib/pod-pipeline/command/scan/depend.rb
|
123
124
|
- lib/pod-pipeline/command/scan/name.rb
|
124
125
|
- lib/pod-pipeline/command/scan/remote.rb
|
125
126
|
- lib/pod-pipeline/command/scan/version.rb
|
@@ -133,6 +134,7 @@ files:
|
|
133
134
|
- lib/pod-pipeline/extension/workspace-ppl.rb
|
134
135
|
- lib/pod-pipeline/util/binary.rb
|
135
136
|
- lib/pod-pipeline/util/bundle.rb
|
137
|
+
- lib/pod-pipeline/util/header.rb
|
136
138
|
- lib/pod-pipeline/util/scanner.rb
|
137
139
|
- lib/pod-pipeline/util/xcodebuild.rb
|
138
140
|
homepage: https://github.com/TokiGems/pod-pipeline
|