cocoapods-bb-bin 0.2.0 → 0.2.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4926e04b2eaade743939e92c8de3707bdaf3444b06b9515aa45278b63c444df8
4
- data.tar.gz: 677d14354d6f11f34a30e956c515f9b9db5040076cdbf2902a71ed9ff3badd65
3
+ metadata.gz: 5764ccefa6e25c275fc0e9568a321dc48152ceb9beb7e29517e996459e92fc9b
4
+ data.tar.gz: 30ef7305b4d2d3e442fa28a140006133f0a7582ac8e7133df451d2f5aea3dee6
5
5
  SHA512:
6
- metadata.gz: bc1d214967a7056d24836d7162bc5140c771575f1a4f0c59f90b91a47d782ba506069fadb22c35cdf2f4b13a1d6aca9e63595c4c51b068836135a19b30795c0d
7
- data.tar.gz: c625ef1d42a31eef96e0f9fc492ddd21066dd59ff35d88a2529f227466ca533cdaf276dbecfe136870abc916e7448fc9dcc381ca958635174b7d8a3785b909ea
6
+ metadata.gz: 177349f9e7cfaba5e4682f11cc42d82ded7e6956f9ed763a87b7e5f886fb47f4b490adb671e864cf13b9a6d6a447105f0f1df9e4822f361af40a1945942e2a15
7
+ data.tar.gz: e32d51de357d063e9512696edfa3e0d435d4187443edf6363cbeb1c7057bf479a28fda379add3956bbd92deddc9ddf2ceff3e67583f14c862ad7709cd081a096
@@ -21,7 +21,8 @@ module Pod
21
21
  ['--no-zip', '不压缩静态 framework 为 zip'],
22
22
  ['--all-make', '对该组件的依赖库,全部制作为二进制组件'],
23
23
  ['--configuration', 'Build the specified configuration (e.g. Release ). Defaults to Debug'],
24
- ['--env', "该组件上传的环境 %w[dev debug_iphoneos release_iphoneos]"]
24
+ ['--env', "该组件上传的环境 %w[dev debug_iphoneos release_iphoneos]"],
25
+ ['--all-push', '上传二进制同时,允许同时推送源码索引'],
25
26
  ].concat(Pod::Command::Gen.options).concat(super).uniq
26
27
  end
27
28
 
@@ -40,6 +41,7 @@ module Pod
40
41
  @allow_prerelease = argv.flag?('allow-prerelease')
41
42
  @framework_output = argv.flag?('framework-output', false )
42
43
  @xcframework_output = argv.flag?('xcframework-output', false )
44
+ @pushsourcespec = argv.flag?('all-push', false )
43
45
  @clean = argv.flag?('clean', true)
44
46
  @zip = argv.flag?('zip', true)
45
47
  @all_make = argv.flag?('all-make', false )
@@ -64,7 +66,7 @@ module Pod
64
66
  fail_push_specs = []
65
67
  sources_sepc.uniq.each do |spec|
66
68
  begin
67
- fail_push_specs << spec unless CBin::Upload::Helper.new(spec,@code_dependencies,@sources).upload
69
+ fail_push_specs << spec unless CBin::Upload::Helper.new(spec,@code_dependencies,@sources,@pushsourcespec).upload
68
70
  rescue Object => exception
69
71
  UI.puts exception
70
72
  fail_push_specs << spec
@@ -84,7 +86,6 @@ module Pod
84
86
  auto_success += "#{spec.name} | #{spec.version}\n"
85
87
  UI.warn "===【 #{spec.name} | #{spec.version} 】二进制组件制作完成 !!! "
86
88
  end
87
- puts "============== auto_success"
88
89
  puts auto_success
89
90
  ENV['auto_success'] = auto_success
90
91
  end
@@ -0,0 +1,153 @@
1
+ require 'cocoapods-bb-bin/native/podfile'
2
+ require 'cocoapods/command/gen'
3
+ require 'cocoapods/generate'
4
+ require 'xcodeproj'
5
+ require 'cocoapods-bb-bin/helpers/push_spec_helper'
6
+ require 'cocoapods-bb-bin/helpers/build_helper'
7
+ require 'cocoapods-bb-bin/helpers/spec_source_creator'
8
+
9
+ module Pod
10
+ class Command
11
+ class Bin < Command
12
+ class Tag < Bin
13
+ self.summary = '推送标签.'
14
+
15
+ self.arguments = [
16
+ CLAide::Argument.new('NAME.podspec', false)
17
+ ]
18
+ def self.options
19
+ [
20
+ ['--sources', '私有源地址,多个用分号区分'],
21
+ ['--no-clean', '保留构建中间产物'],
22
+ ['--skip-build-project', '跳过编译工程文件操作(直接推送假标签,操作慎重!!!)'],
23
+ ['--debug', 'debug环境只是验证工程编译是否ok,不进行标签推送操作'],
24
+ ].concat(Pod::Command::Gen.options).concat(super).uniq
25
+ end
26
+
27
+ def initialize(argv)
28
+ @help = argv.flag?('help', false )
29
+ if @help
30
+ else
31
+ @env = argv.option('env') || 'dev'
32
+ CBin.config.set_configuration_env(@env)
33
+
34
+ @podspec = argv.shift_argument || find_podspec
35
+ @sources = argv.option('sources') || []
36
+ @clean = argv.flag?('no-clean', false)
37
+ @skip_build_project = argv.flag?('skip-build-project', false)
38
+ @is_debug = argv.flag?('debug', false)
39
+ @platform = Platform.new(:ios)
40
+ end
41
+ super
42
+ end
43
+
44
+ def validate!
45
+ help! "未找到 podspec文件" unless @podspec
46
+ super
47
+ end
48
+
49
+ def run
50
+ # 清除之前的缓存
51
+ CBin::Config::Builder.instance.clean
52
+ @spec = Specification.from_file(@podspec)
53
+
54
+ if @skip_build_project
55
+ # 跳过工程编译
56
+ is_build_ok = true
57
+ Pod::UI.warn "请注意⚠️正在推送假标签!!!#{@podspec}==>#{@spec.name}(#{@spec.version})"
58
+ elsif
59
+ # step.1 工程编译
60
+ is_build_ok = check_build_workspace
61
+ end
62
+ if is_build_ok && !@is_debug
63
+ # step.2 工程编译ok,进行标签推送
64
+ push_helper = CBin::Push::Helper.new()
65
+ push_helper.push_source_repo(@podspec)
66
+ end
67
+ end
68
+
69
+ #Dir.glob 可替代
70
+ def find_podspec
71
+ name = nil
72
+ Pathname.pwd.children.each do |child|
73
+ # puts child
74
+ if File.file?(child)
75
+ if child.extname == '.podspec'
76
+ name = File.basename(child)
77
+ unless name.include?("binary-template")
78
+ return name
79
+ end
80
+ end
81
+ end
82
+ end
83
+ raise Informative, "podspec File no exist, please check" unless name
84
+ return name
85
+ end
86
+
87
+ # 编译工程目录
88
+ def check_build_workspace
89
+ generate_project
90
+ swift_pods_buildsetting
91
+ return build_root_spec
92
+ end
93
+
94
+ private
95
+ def build_root_spec
96
+ builder = CBin::Build::Helper.new(@spec,
97
+ @platform,
98
+ false,
99
+ false,
100
+ @sources,
101
+ true,
102
+ @spec,
103
+ CBin::Config::Builder.instance.white_pod_list.include?(@spec.name),
104
+ 'Release')
105
+ builder.build
106
+ builder.clean_workspace if @clean
107
+ return builder.is_build_finish
108
+ end
109
+ def swift_pods_buildsetting
110
+ # swift_project_link_header
111
+ worksppace_path = File.expand_path("#{CBin::Config::Builder.instance.gen_dir}/#{@spec.name}")
112
+ path = File.join(worksppace_path, "Pods.xcodeproj")
113
+ path = File.join(worksppace_path, "Pods/Pods.xcodeproj") unless File.exist?(path)
114
+ raise Informative, "#{path} File no exist, please check" unless File.exist?(path)
115
+ project = Xcodeproj::Project.open(path)
116
+ project.build_configurations.each do |x|
117
+ x.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = true #设置生成swift inter
118
+ end
119
+ project.save
120
+ end
121
+
122
+ def generate_project
123
+ Podfile.execute_with_bin_plugin do
124
+ Podfile.execute_with_use_binaries(!@code_dependencies) do
125
+ argvs = [
126
+ "--sources=#{sources_option(@code_dependencies, @sources)}",
127
+ "--gen-directory=#{CBin::Config::Builder.instance.gen_dir}",
128
+ '--clean',
129
+ "--verbose",
130
+ *@additional_args
131
+ ]
132
+ podfile_path = Pod::Config.instance.podfile_path
133
+ if podfile_path && File.exist?(podfile_path)
134
+ argvs += ['--use-podfile']
135
+ end
136
+
137
+ if CBin::Build::Utils.uses_frameworks? # 组件库重新生成pod工程引入静态库需要使用该选项,否则报cocoapods中verify_no_static_framework_transitive_dependencies验证无法通过 by hm 21/10/18
138
+ argvs += ['--use-libraries']
139
+ end
140
+
141
+ argvs << @podspec if @podspec
142
+ # UI.puts "argvs:#{argvs}"
143
+ gen = Pod::Command::Gen.new(CLAide::ARGV.new(argvs))
144
+ gen.validate!
145
+ gen.run
146
+ end
147
+ end
148
+ end
149
+
150
+ end
151
+ end
152
+ end
153
+ end
@@ -7,6 +7,7 @@ require 'cocoapods-bb-bin/command/bin/code'
7
7
  require 'cocoapods-bb-bin/command/bin/update'
8
8
  require 'cocoapods-bb-bin/command/bin/install'
9
9
  require 'cocoapods-bb-bin/command/bin/imy'
10
+ require 'cocoapods-bb-bin/command/bin/tag'
10
11
 
11
12
  require 'cocoapods-bb-bin/helpers'
12
13
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  module CBin
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.2.1'
4
4
  end
5
5
 
6
6
  module Pod
@@ -68,6 +68,21 @@ module CBin
68
68
 
69
69
  end
70
70
 
71
+ def is_build_finish
72
+ if is_build_xcframework
73
+ path = xcframework_name_zip
74
+ else
75
+ path = framework_name_zip
76
+ end
77
+ output_path = File.join(zip_dir, path)
78
+ unless File.exist?(xcframework_name)
79
+ UI.puts "工程文件编译成功"
80
+ return true
81
+ end
82
+ UI.puts "工程文件编译失败"
83
+ return false
84
+ end
85
+
71
86
  # 是否编译xcframework库
72
87
  def is_build_xcframework
73
88
  if @xcframework_output == true
@@ -0,0 +1,64 @@
1
+ require 'cocoapods-bb-bin/native/podfile'
2
+ require 'cocoapods/command/gen'
3
+ require 'cocoapods/generate'
4
+ require 'cocoapods-bb-bin/helpers/framework_builder'
5
+ require 'cocoapods-bb-bin/helpers/library_builder'
6
+ require 'cocoapods-bb-bin/helpers/sources_helper'
7
+ require 'cocoapods-bb-bin/command/bin/repo/push'
8
+
9
+ module CBin
10
+ class Push
11
+ class Helper
12
+ include CBin::SourcesHelper
13
+
14
+ def initialize()
15
+ end
16
+
17
+ # 上传二进制 podspec
18
+ def push_binary_repo(binary_podsepc_json)
19
+ argvs = [
20
+ "#{binary_source.name}", # repo
21
+ "#{binary_podsepc_json}", # spec
22
+ "--binary",
23
+ "--sources=#{binary_source},https:\/\/cdn.cocoapods.org",
24
+ "--skip-import-validation",
25
+ "--use-libraries",
26
+ "--allow-warnings",
27
+ "--verbose",
28
+ "--code-dependencies",
29
+ '--no-cocoapods-validator', #不采用cocoapods验证
30
+ ]
31
+ if @verbose
32
+ argvs += ['--verbose']
33
+ end
34
+ Pod::UI.message "上传二进制 argvs: #{argvs}"
35
+ push = Pod::Command::Bin::Repo::Push.new(CLAide::ARGV.new(argvs))
36
+ push.validate!
37
+ push.run
38
+ end
39
+
40
+ # 上传源码podspec
41
+ def push_source_repo(source_podsepc_json)
42
+ argvs = [
43
+ "#{code_source.name}", # repo
44
+ "#{source_podsepc_json}", # spec
45
+ "--sources=#{code_source},https:\/\/cdn.cocoapods.org",
46
+ "--skip-import-validation",
47
+ "--use-libraries",
48
+ "--allow-warnings",
49
+ "--verbose",
50
+ "--code-dependencies",
51
+ '--no-cocoapods-validator', #不采用cocoapods验证
52
+ ]
53
+ if @verbose
54
+ argvs += ['--verbose']
55
+ end
56
+ Pod::UI.message "上传源码 argvs: #{argvs}"
57
+ push = Pod::Command::Bin::Repo::Push.new(CLAide::ARGV.new(argvs))
58
+ push.validate!
59
+ push.run
60
+ end
61
+
62
+ end
63
+ end
64
+ end
@@ -43,6 +43,8 @@ module CBin
43
43
  end
44
44
 
45
45
  @filename = file
46
+ # Pod::UI::puts "===copy origin file: #{file}"
47
+ # Pod::UI::puts "===copy desc file: #{sourceSpecFilePath}"
46
48
  # 拷贝二进制spec到源码spec by hm 22/1/19
47
49
  `cp -fa #{file} #{sourceSpecFilePath}`
48
50
  end
@@ -57,7 +59,7 @@ module CBin
57
59
  end
58
60
  # 源码spec路径(指向二进制库)
59
61
  def sourceSpecFilePath
60
- @filename ||= "#{CBin::Config::Builder.instance.binary_json_dir_name}/#{spec.name}.podspec.json"
62
+ @sourcefilename ||= "#{CBin::Config::Builder.instance.binary_json_dir_name}/#{spec.name}.podspec.json"
61
63
  end
62
64
 
63
65
  private
@@ -8,17 +8,18 @@ require 'cocoapods/generate'
8
8
  require 'cocoapods-bb-bin/helpers/framework_builder'
9
9
  require 'cocoapods-bb-bin/helpers/library_builder'
10
10
  require 'cocoapods-bb-bin/helpers/sources_helper'
11
- require 'cocoapods-bb-bin/command/bin/repo/push'
11
+ require 'cocoapods-bb-bin/helpers/push_spec_helper'
12
12
 
13
13
  module CBin
14
14
  class Upload
15
15
  class Helper
16
16
  include CBin::SourcesHelper
17
17
 
18
- def initialize(spec,code_dependencies,sources)
18
+ def initialize(spec,code_dependencies,sources, pushsourcespec = false)
19
19
  @spec = spec
20
20
  @code_dependencies = code_dependencies
21
21
  @sources = sources
22
+ @pushsourcespec = pushsourcespec # 推送源码
22
23
  end
23
24
 
24
25
  def upload
@@ -29,7 +30,14 @@ module CBin
29
30
  res_zip = curl_zip
30
31
  if res_zip
31
32
  filename = spec_creator
32
- push_binary_repo(filename)
33
+ Pod::UI.message "上传二进制 podspec: #{filename}"
34
+ push_helper = CBin::Push::Helper.new()
35
+ push_helper.push_binary_repo(filename)
36
+ # 上传源码 podspec
37
+ if @pushsourcespec
38
+ Pod::UI.message "上传源码 podspec: #{@spec_creator.sourceSpecFilePath}"
39
+ push_helper.push_source_repo(@spec_creator.sourceSpecFilePath)
40
+ end
33
41
  end
34
42
  res_zip
35
43
  end
@@ -37,6 +45,7 @@ module CBin
37
45
 
38
46
  def spec_creator
39
47
  spec_creator = CBin::SpecificationSource::Creator.new(@spec)
48
+ @spec_creator = spec_creator
40
49
  spec_creator.create
41
50
  spec_creator.write_spec_file
42
51
  spec_creator.filename
@@ -69,30 +78,6 @@ EOF
69
78
  res
70
79
  end
71
80
 
72
-
73
- # 上传二进制 podspec
74
- def push_binary_repo(binary_podsepc_json)
75
- argvs = [
76
- "#{binary_source.name}", # repo
77
- "#{binary_podsepc_json}", # spec
78
- "--binary",
79
- "--sources=#{sources_option(@code_dependencies, @sources)},https:\/\/cdn.cocoapods.org",
80
- "--skip-import-validation",
81
- "--use-libraries",
82
- "--allow-warnings",
83
- "--verbose",
84
- "--code-dependencies",
85
- '--no-cocoapods-validator', #不采用cocoapods验证
86
- ]
87
- if @verbose
88
- argvs += ['--verbose']
89
- end
90
-
91
- push = Pod::Command::Bin::Repo::Push.new(CLAide::ARGV.new(argvs))
92
- push.validate!
93
- push.run
94
- end
95
-
96
81
  end
97
82
  end
98
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-bb-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - humin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-19 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -137,6 +137,7 @@ files:
137
137
  - lib/cocoapods-bb-bin/command/bin/repo/push.rb
138
138
  - lib/cocoapods-bb-bin/command/bin/repo/update.rb
139
139
  - lib/cocoapods-bb-bin/command/bin/spec/create.rb
140
+ - lib/cocoapods-bb-bin/command/bin/tag.rb
140
141
  - lib/cocoapods-bb-bin/command/bin/update.rb
141
142
  - lib/cocoapods-bb-bin/config/config.rb
142
143
  - lib/cocoapods-bb-bin/config/config_asker.rb
@@ -152,6 +153,7 @@ files:
152
153
  - lib/cocoapods-bb-bin/helpers/framework_builder.rb
153
154
  - lib/cocoapods-bb-bin/helpers/library.rb
154
155
  - lib/cocoapods-bb-bin/helpers/library_builder.rb
156
+ - lib/cocoapods-bb-bin/helpers/push_spec_helper.rb
155
157
  - lib/cocoapods-bb-bin/helpers/sources_helper.rb
156
158
  - lib/cocoapods-bb-bin/helpers/spec_creator.rb
157
159
  - lib/cocoapods-bb-bin/helpers/spec_files_helper.rb