pindo 4.6.9
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 +7 -0
- data/bin/pindo +35 -0
- data/lib/pindo/base/aeshelper.rb +31 -0
- data/lib/pindo/base/deviceinfo.rb +90 -0
- data/lib/pindo/base/executable.rb +224 -0
- data/lib/pindo/base/githelper.rb +489 -0
- data/lib/pindo/base/hashhelper.rb +134 -0
- data/lib/pindo/base/plaininformative.rb +15 -0
- data/lib/pindo/base/plistbuddyexecutable.rb +121 -0
- data/lib/pindo/base/standarderror.rb +14 -0
- data/lib/pindo/client/applovinclient.rb +156 -0
- data/lib/pindo/client/aws3sclient.rb +183 -0
- data/lib/pindo/client/bossclient.rb +229 -0
- data/lib/pindo/client/bossconfigclient.rb +175 -0
- data/lib/pindo/client/giteeclient.rb +65 -0
- data/lib/pindo/client/httpclient.rb +40 -0
- data/lib/pindo/client/pgyerclient.rb +439 -0
- data/lib/pindo/client/tgateclient.rb +103 -0
- data/lib/pindo/command.rb +101 -0
- data/lib/pindo/config/pindoconfig.rb +439 -0
- data/lib/pindo/config/pindouserlocalconfig.rb +81 -0
- data/lib/pindo/deploy/Fastfile +233 -0
- data/lib/pindo/deploy/build.rb +167 -0
- data/lib/pindo/deploy/bundleid.rb +245 -0
- data/lib/pindo/deploy/cert.rb +508 -0
- data/lib/pindo/deploy/check.rb +79 -0
- data/lib/pindo/deploy/configproj.rb +89 -0
- data/lib/pindo/deploy/confusecode.rb +248 -0
- data/lib/pindo/deploy/confuseproj.rb +112 -0
- data/lib/pindo/deploy/fabric.rb +58 -0
- data/lib/pindo/deploy/getitcinfo.rb +248 -0
- data/lib/pindo/deploy/iap.rb +796 -0
- data/lib/pindo/deploy/initconfig.rb +128 -0
- data/lib/pindo/deploy/itcapp.rb +147 -0
- data/lib/pindo/deploy/itcinfo.rb +369 -0
- data/lib/pindo/deploy/pem.rb +55 -0
- data/lib/pindo/deploy/pullconfig.rb +46 -0
- data/lib/pindo/deploy/pushconfig.rb +83 -0
- data/lib/pindo/deploy/quswark.rb +146 -0
- data/lib/pindo/deploy/quswauth.rb +67 -0
- data/lib/pindo/deploy/reportbug.rb +135 -0
- data/lib/pindo/deploy/resign.rb +338 -0
- data/lib/pindo/deploy/tag.rb +108 -0
- data/lib/pindo/deploy/updateconfig.rb +129 -0
- data/lib/pindo/deploy/uploadipa.rb +63 -0
- data/lib/pindo/deploy.rb +44 -0
- data/lib/pindo/dev/autobuild.rb +204 -0
- data/lib/pindo/dev/autoresign.rb +186 -0
- data/lib/pindo/dev/confusecode.rb +127 -0
- data/lib/pindo/dev/confuseproj.rb +111 -0
- data/lib/pindo/dev/createbuild.rb +159 -0
- data/lib/pindo/dev/debug.rb +141 -0
- data/lib/pindo/dev/pub.rb +171 -0
- data/lib/pindo/dev/renewcert.rb +142 -0
- data/lib/pindo/dev.rb +23 -0
- data/lib/pindo/env/dreamstudio.rb +53 -0
- data/lib/pindo/env/flutter.rb +59 -0
- data/lib/pindo/env/flutter.sh +116 -0
- data/lib/pindo/env/quarkenv.rb +58 -0
- data/lib/pindo/env/swarkenv.rb +62 -0
- data/lib/pindo/env/workhard.rb +56 -0
- data/lib/pindo/env.rb +17 -0
- data/lib/pindo/ipa/autoresign.rb +188 -0
- data/lib/pindo/ipa/import.rb +261 -0
- data/lib/pindo/ipa/output.rb +396 -0
- data/lib/pindo/ipa.rb +22 -0
- data/lib/pindo/lib/forcepush.rb +159 -0
- data/lib/pindo/lib/lint.rb +115 -0
- data/lib/pindo/lib/push.rb +143 -0
- data/lib/pindo/lib/update.rb +75 -0
- data/lib/pindo/lib.rb +18 -0
- data/lib/pindo/module/appselect.rb +200 -0
- data/lib/pindo/module/appstore_in_app_purchase.rb +1803 -0
- data/lib/pindo/module/appstore_metadata_connect_api_helper.rb +12 -0
- data/lib/pindo/module/appstore_metadata_fastlane_helper.rb +922 -0
- data/lib/pindo/module/buildconfighelper.rb +13 -0
- data/lib/pindo/module/buildhelper.rb +76 -0
- data/lib/pindo/module/commonconfuseproj.rb +271 -0
- data/lib/pindo/module/config_project.sh +143 -0
- data/lib/pindo/module/configprojhelper.rb +631 -0
- data/lib/pindo/module/iap_tier.json +813 -0
- data/lib/pindo/module/icon_contents.json +116 -0
- data/lib/pindo/module/imessage_icon.json +91 -0
- data/lib/pindo/module/imgset_contents.json +21 -0
- data/lib/pindo/module/launchimg_contents.json +21 -0
- data/lib/pindo/module/pemcreate.rb +63 -0
- data/lib/pindo/module/pgyerhelper.rb +339 -0
- data/lib/pindo/module/xcodebuildpre.rb +258 -0
- data/lib/pindo/module/xcodehelper.rb +521 -0
- data/lib/pindo/options/appconfigoptions.rb +23 -0
- data/lib/pindo/options/deployoptions.rb +363 -0
- data/lib/pindo/pgyer/apptest.rb +104 -0
- data/lib/pindo/pgyer/comment.rb +95 -0
- data/lib/pindo/pgyer/download.rb +105 -0
- data/lib/pindo/pgyer/login.rb +61 -0
- data/lib/pindo/pgyer/upload.rb +234 -0
- data/lib/pindo/pgyer.rb +17 -0
- data/lib/pindo/repo/clone.rb +78 -0
- data/lib/pindo/repo/create.rb +55 -0
- data/lib/pindo/repo/login.rb +64 -0
- data/lib/pindo/repo/search.rb +60 -0
- data/lib/pindo/repo.rb +16 -0
- data/lib/pindo/setup.rb +60 -0
- data/lib/pindo/upgrade.rb +56 -0
- data/lib/pindo/utils/applovin.rb +213 -0
- data/lib/pindo/utils/boss.rb +209 -0
- data/lib/pindo/utils/clearcert.rb +60 -0
- data/lib/pindo/utils/device.rb +279 -0
- data/lib/pindo/utils/icon.rb +91 -0
- data/lib/pindo/utils/icon.sh +133 -0
- data/lib/pindo/utils/podindex.rb +56 -0
- data/lib/pindo/utils/podindex.sh +30 -0
- data/lib/pindo/utils/renewproj.rb +146 -0
- data/lib/pindo/utils/tgate.rb +159 -0
- data/lib/pindo/utils/xcassets.rb +46 -0
- data/lib/pindo/utils/xcassets.sh +88 -0
- data/lib/pindo/utils.rb +29 -0
- data/lib/pindo/version.rb +110 -0
- data/lib/pindo.rb +34 -0
- metadata +364 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
class Command
|
|
7
|
+
class Lib < Command
|
|
8
|
+
class Forcepush < Lib
|
|
9
|
+
|
|
10
|
+
self.summary = '将私有pod库推送到远程仓库中'
|
|
11
|
+
|
|
12
|
+
self.description = <<-DESC
|
|
13
|
+
将私有pod库推送到远程仓库并添加到索引库中。用法:在工程目录下执行 pod lib libpush
|
|
14
|
+
DESC
|
|
15
|
+
|
|
16
|
+
self.arguments = [
|
|
17
|
+
CLAide::Argument.new('podspec', true)
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
def self.options
|
|
21
|
+
[
|
|
22
|
+
['--p', '指定需要lint的pod库所在目录, 例如 --p=~/Users/xxx/MyPod'],
|
|
23
|
+
].concat(super)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def initialize(argv)
|
|
27
|
+
@pod_spec_file = argv.shift_argument || nil
|
|
28
|
+
@project_dir = argv.option('p')
|
|
29
|
+
|
|
30
|
+
super(argv)
|
|
31
|
+
@additional_args = argv.remainder!
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def validate!
|
|
35
|
+
super
|
|
36
|
+
@project_dir=Dir.pwd if @project_dir.nil? || @project_dir.empty?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def run
|
|
40
|
+
|
|
41
|
+
working_dir = @project_dir
|
|
42
|
+
process_need_add_files(project_dir:working_dir)
|
|
43
|
+
|
|
44
|
+
podspecs = []
|
|
45
|
+
if @pod_spec_file && (@pod_spec_file.to_s.end_with?('.podspec') || @pod_spec_file.to_s.end_with?('.json'))
|
|
46
|
+
podspecs = [@pod_spec_file]
|
|
47
|
+
else
|
|
48
|
+
podspecs = Pathname.glob(File.join(working_dir, '*.podspec{.json,}'))
|
|
49
|
+
end
|
|
50
|
+
if podspecs.count.zero?
|
|
51
|
+
raise Informative, '工作目录下没有任何podspec文件'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
sources = Pod::Config.instance.sources_manager.all
|
|
56
|
+
|
|
57
|
+
pod_array = pindo_single_config.pod_repo_dict
|
|
58
|
+
pod_index_url = nil
|
|
59
|
+
if !pod_array.nil?
|
|
60
|
+
pod_index_url = pod_array['podindex']
|
|
61
|
+
else
|
|
62
|
+
raise Informative, '私有Pod索引地址未知!!'
|
|
63
|
+
end
|
|
64
|
+
private_source = sources.select { |s| s.git? && s.url.to_s.eql?(pod_index_url)}.first
|
|
65
|
+
if private_source.nil?
|
|
66
|
+
raise Informative, "私有Pod索引地址未知!"
|
|
67
|
+
end
|
|
68
|
+
begin
|
|
69
|
+
puts
|
|
70
|
+
private_source_branch = "master"
|
|
71
|
+
git!(%W(-C #{private_source.repo} reset --hard))
|
|
72
|
+
git!(%W(-C #{private_source.repo} clean -dfx))
|
|
73
|
+
git!(%W(-C #{private_source.repo} branch --set-upstream-to=origin/#{private_source_branch} #{private_source_branch}))
|
|
74
|
+
git!(%W(-C #{private_source.repo} pull))
|
|
75
|
+
rescue StandardError => e
|
|
76
|
+
raise Informative, "私有Pod索引目录异常,请删除#{private_source.repo}重新新下载"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
pod_index_url_header = pod_index_url.slice(0, pod_index_url.rindex('/'))
|
|
82
|
+
pod_index_url_git_org = File.basename(pod_index_url_header)
|
|
83
|
+
working_dir_git_url = git!(%W(-C #{working_dir} config --get remote.origin.url)).chomp
|
|
84
|
+
working_dir_git_url_header = working_dir_git_url.slice(0, working_dir_git_url.rindex('/'))
|
|
85
|
+
working_dir_git_org = File.basename(working_dir_git_url_header)
|
|
86
|
+
if working_dir_git_org.include?(":")
|
|
87
|
+
working_dir_git_org = working_dir_git_org.slice(working_dir_git_org.rindex(':')+1, working_dir_git_org.size())
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
puts "pod本地地址: #{working_dir}"
|
|
91
|
+
puts "pod远程地址: #{working_dir_git_url}"
|
|
92
|
+
puts "索引本地地址: #{private_source.repo}"
|
|
93
|
+
puts "索引远程地址: #{private_source.url}"
|
|
94
|
+
puts pod_index_url_git_org
|
|
95
|
+
puts working_dir_git_org
|
|
96
|
+
|
|
97
|
+
if pod_index_url_git_org != working_dir_git_org
|
|
98
|
+
puts
|
|
99
|
+
puts "索引库地址:#{pod_index_url_git_org}"
|
|
100
|
+
puts "Pod库地址:#{working_dir_git_org}"
|
|
101
|
+
answer = agree("私有Pod索引地址与工作目录不一致, 是否继续推送(Y/n):")
|
|
102
|
+
unless answer
|
|
103
|
+
raise Informative, "私有Pod索引地址与工作目录不一致!!!请使用pindo env 切换环境后再推送"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
puts
|
|
108
|
+
puts "即将强制推送如下Pod库:"
|
|
109
|
+
command_array = []
|
|
110
|
+
podspecs.each do |podspec|
|
|
111
|
+
puts
|
|
112
|
+
puts podspec
|
|
113
|
+
podspec_obj = Pod::Specification.from_file(podspec)
|
|
114
|
+
pod_name = podspec_obj.name
|
|
115
|
+
tag_name = podspec_obj.version.to_s
|
|
116
|
+
puts "名称: #{pod_name} 版本: #{tag_name}"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
puts
|
|
120
|
+
answer = agree("确定强制推送以上Pod库(Y/n):")
|
|
121
|
+
unless answer
|
|
122
|
+
raise Informative, "停止推送!!!"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
puts "先检查对应的tag是否添加"
|
|
127
|
+
podspecs.each do |podspec|
|
|
128
|
+
puts
|
|
129
|
+
puts podspec
|
|
130
|
+
podspec_obj = Pod::Specification.from_file(podspec)
|
|
131
|
+
pod_name = podspec_obj.name
|
|
132
|
+
tag_name = podspec_obj.version.to_s
|
|
133
|
+
add_tag_with_check(local_repo_dir:working_dir, tag_name:tag_name)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
puts "强制推送中..."
|
|
137
|
+
podspecs.each do |podspec|
|
|
138
|
+
podspec_obj = Pod::Specification.from_file(podspec)
|
|
139
|
+
pod_name = podspec_obj.name
|
|
140
|
+
tag_name = podspec_obj.version.to_s
|
|
141
|
+
|
|
142
|
+
dest_dir = File.join(private_source.repo,pod_name, tag_name)
|
|
143
|
+
puts dest_dir
|
|
144
|
+
begin FileUtils.mkdir_p(dest_dir) rescue StandardError => e end
|
|
145
|
+
FileUtils.cp_r(podspec, File.join(dest_dir, File.basename(podspec)))
|
|
146
|
+
puts "上传到仓库 #{private_source.repo}"
|
|
147
|
+
git_addpush_repo(path:private_source.repo, message:"add #{pod_name} #{tag_name}")
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
class Command
|
|
7
|
+
class Lib < Command
|
|
8
|
+
class Lint < Lib
|
|
9
|
+
|
|
10
|
+
self.summary = '本地编译私有pod库, 相当于pod lint功能'
|
|
11
|
+
|
|
12
|
+
self.description = <<-DESC
|
|
13
|
+
pod lint私有库,本地编译私有库,在私有库目录下执行pindo lib liblint
|
|
14
|
+
DESC
|
|
15
|
+
|
|
16
|
+
self.arguments = [
|
|
17
|
+
CLAide::Argument.new('podspec', true)
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
def self.options
|
|
21
|
+
[
|
|
22
|
+
['--p', '指定需要lint的pod库所在目录, 例如 --p=~/Users/xxx/MyPod'],
|
|
23
|
+
].concat(super)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def initialize(argv)
|
|
27
|
+
@pod_spec_file = argv.shift_argument || nil
|
|
28
|
+
@project_dir = argv.option('p')
|
|
29
|
+
|
|
30
|
+
super(argv)
|
|
31
|
+
@additional_args = argv.remainder!
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def validate!
|
|
35
|
+
super
|
|
36
|
+
@project_dir=Dir.pwd if @project_dir.nil? || @project_dir.empty?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def run
|
|
40
|
+
|
|
41
|
+
working_dir = @project_dir
|
|
42
|
+
podspecs = []
|
|
43
|
+
if @pod_spec_file && (@pod_spec_file.to_s.end_with?('.podspec') || @pod_spec_file.to_s.end_with?('.json'))
|
|
44
|
+
podspecs = [@pod_spec_file]
|
|
45
|
+
else
|
|
46
|
+
podspecs = Pathname.glob(File.join(working_dir, '*.podspec{.json,}'))
|
|
47
|
+
end
|
|
48
|
+
if podspecs.count.zero?
|
|
49
|
+
raise Informative, '工作目录下没有任何podspec文件'
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
pod_array = pindo_single_config.pod_repo_dict
|
|
53
|
+
pod_index_url = nil
|
|
54
|
+
if !pod_array.nil?
|
|
55
|
+
pod_index_url = pod_array['podindex']
|
|
56
|
+
else
|
|
57
|
+
raise Informative, '私有Pod索引地址未知!!'
|
|
58
|
+
end
|
|
59
|
+
sources = Pod::Config.instance.sources_manager.all
|
|
60
|
+
public_source = sources.select { |s| s.is_a?(Pod::CDNSource) }.first
|
|
61
|
+
if public_source.nil?
|
|
62
|
+
public_source = sources.select { |s| s.git? && s.url.to_s.include?("CocoaPods/Specs.git") }.first
|
|
63
|
+
end
|
|
64
|
+
if public_source.nil?
|
|
65
|
+
raise Informative, '公有Pod地址未知,请pod install安装pod库'
|
|
66
|
+
end
|
|
67
|
+
private_source = sources.select { |s| s.git? && s.url.to_s.eql?(pod_index_url)}.first
|
|
68
|
+
if private_source.nil?
|
|
69
|
+
raise Informative, "私有Pod索引地址未知!"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
command_array = []
|
|
75
|
+
puts "即将执行下列命令:"
|
|
76
|
+
podspecs.each do |podspec|
|
|
77
|
+
command = "pod lib lint #{podspec} --sources=#{private_source.url},#{public_source.url} --allow-warnings --use-libraries --use-modular-headers --no-clean --fail-fast --verbose"
|
|
78
|
+
puts
|
|
79
|
+
puts command
|
|
80
|
+
puts
|
|
81
|
+
command_array << command
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
answer = agree("是否运行以上命令(Y/n):")
|
|
85
|
+
unless answer
|
|
86
|
+
raise Informative, "停止运行!!!"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
command_array.each do |command|
|
|
90
|
+
puts "正在运行命令:"
|
|
91
|
+
puts
|
|
92
|
+
puts command
|
|
93
|
+
system command
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def podspecs_to_lint
|
|
100
|
+
if !@podspecs_paths.empty?
|
|
101
|
+
Array(@podspecs_paths)
|
|
102
|
+
else
|
|
103
|
+
podspecs = Pathname.glob(Pathname.pwd + '*.podspec{.json,}')
|
|
104
|
+
if podspecs.count.zero?
|
|
105
|
+
raise Informative, 'Unable to find a podspec in the working ' \
|
|
106
|
+
'directory'
|
|
107
|
+
end
|
|
108
|
+
podspecs
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
class Command
|
|
7
|
+
class Lib < Command
|
|
8
|
+
class Push < Lib
|
|
9
|
+
|
|
10
|
+
self.summary = '将私有pod库推送到远程仓库中'
|
|
11
|
+
|
|
12
|
+
self.description = <<-DESC
|
|
13
|
+
将私有pod库推送到远程仓库并添加到索引库中。用法:在工程目录下执行 pod lib libpush
|
|
14
|
+
DESC
|
|
15
|
+
|
|
16
|
+
self.arguments = [
|
|
17
|
+
CLAide::Argument.new('podspec', true)
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
def self.options
|
|
21
|
+
[
|
|
22
|
+
['--p', '指定需要lint的pod库所在目录, 例如 --p=~/Users/xxx/MyPod'],
|
|
23
|
+
].concat(super)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def initialize(argv)
|
|
27
|
+
@pod_spec_file = argv.shift_argument || nil
|
|
28
|
+
@project_dir = argv.option('p')
|
|
29
|
+
|
|
30
|
+
super(argv)
|
|
31
|
+
@additional_args = argv.remainder!
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def validate!
|
|
35
|
+
super
|
|
36
|
+
@project_dir=Dir.pwd if @project_dir.nil? || @project_dir.empty?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def run
|
|
40
|
+
|
|
41
|
+
working_dir = @project_dir
|
|
42
|
+
process_need_add_files(project_dir:working_dir)
|
|
43
|
+
|
|
44
|
+
podspecs = []
|
|
45
|
+
if @pod_spec_file && (@pod_spec_file.to_s.end_with?('.podspec') || @pod_spec_file.to_s.end_with?('.json'))
|
|
46
|
+
podspecs = [@pod_spec_file]
|
|
47
|
+
else
|
|
48
|
+
podspecs = Pathname.glob(File.join(working_dir, '*.podspec{.json,}'))
|
|
49
|
+
end
|
|
50
|
+
if podspecs.count.zero?
|
|
51
|
+
raise Informative, '工作目录下没有任何podspec文件'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
sources = Pod::Config.instance.sources_manager.all
|
|
57
|
+
public_source = sources.select { |s| s.is_a?(Pod::CDNSource) }.first
|
|
58
|
+
if public_source.nil?
|
|
59
|
+
public_source = sources.select { |s| s.git? && s.url.to_s.include?("CocoaPods/Specs.git") }.first
|
|
60
|
+
end
|
|
61
|
+
if public_source.nil?
|
|
62
|
+
raise Informative, '公有Pod地址未知,请pod install安装pod库'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
pod_array = pindo_single_config.pod_repo_dict
|
|
67
|
+
pod_index_url = nil
|
|
68
|
+
if !pod_array.nil?
|
|
69
|
+
pod_index_url = pod_array['podindex']
|
|
70
|
+
else
|
|
71
|
+
raise Informative, '私有Pod索引地址未知!!'
|
|
72
|
+
end
|
|
73
|
+
private_source = sources.select { |s| s.git? && s.url.to_s.eql?(pod_index_url)}.first
|
|
74
|
+
if private_source.nil?
|
|
75
|
+
raise Informative, "私有Pod索引地址未知!"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
pod_index_url_header = pod_index_url.slice(0, pod_index_url.rindex('/'))
|
|
79
|
+
pod_index_url_git_org = File.basename(pod_index_url_header)
|
|
80
|
+
working_dir_git_url = git!(%W(-C #{working_dir} config --get remote.origin.url)).chomp
|
|
81
|
+
working_dir_git_url_header = working_dir_git_url.slice(0, working_dir_git_url.rindex('/'))
|
|
82
|
+
working_dir_git_org = File.basename(working_dir_git_url_header)
|
|
83
|
+
if working_dir_git_org.include?(":")
|
|
84
|
+
working_dir_git_org = working_dir_git_org.slice(working_dir_git_org.rindex(':')+1, working_dir_git_org.size())
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
puts "pod本地地址: #{working_dir}"
|
|
89
|
+
puts "pod远程地址: #{working_dir_git_url}"
|
|
90
|
+
puts "索引本地地址: #{private_source.repo}"
|
|
91
|
+
puts "索引远程地址: #{private_source.url}"
|
|
92
|
+
|
|
93
|
+
if pod_index_url_git_org != working_dir_git_org
|
|
94
|
+
puts
|
|
95
|
+
puts "索引库地址:#{pod_index_url_git_org}"
|
|
96
|
+
puts "Pod库地址:#{working_dir_git_org}"
|
|
97
|
+
answer = agree("私有Pod索引地址与工作目录不一致, 是否继续推送(Y/n):")
|
|
98
|
+
unless answer
|
|
99
|
+
raise Informative, "私有Pod索引地址与工作目录不一致!!!请使用pindo env 切换环境后再推送"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
puts "即将执行下列命令:"
|
|
106
|
+
command_array = []
|
|
107
|
+
podspecs.each do |podspec|
|
|
108
|
+
command = "pod repo push #{private_source.name} --sources=#{private_source.url},#{public_source.url} --allow-warnings --use-libraries --use-modular-headers --verbose"
|
|
109
|
+
puts
|
|
110
|
+
puts command
|
|
111
|
+
puts
|
|
112
|
+
command_array << command
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
answer = agree("是否运行以上命令(Y/n):")
|
|
116
|
+
unless answer
|
|
117
|
+
raise Informative, "停止推送!!!"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
puts "检查对应的tag 是否添加"
|
|
121
|
+
podspecs.each do |podspec|
|
|
122
|
+
puts
|
|
123
|
+
puts podspec
|
|
124
|
+
podspec_obj = Pod::Specification.from_file(podspec)
|
|
125
|
+
pod_name = podspec_obj.name
|
|
126
|
+
tag_name = podspec_obj.version
|
|
127
|
+
add_tag_with_check(local_repo_dir:working_dir, tag_name:tag_name)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
command_array.each do |command|
|
|
131
|
+
puts "正在运行命令:"
|
|
132
|
+
puts
|
|
133
|
+
puts command
|
|
134
|
+
system command
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
class Command
|
|
7
|
+
class Lib < Command
|
|
8
|
+
class Update < Lib
|
|
9
|
+
|
|
10
|
+
self.summary = '更新私有库索引地址'
|
|
11
|
+
|
|
12
|
+
self.description = <<-DESC
|
|
13
|
+
更新私有库索引地址,终端下运行 pindo lib update
|
|
14
|
+
DESC
|
|
15
|
+
|
|
16
|
+
self.arguments = [
|
|
17
|
+
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
def self.options
|
|
21
|
+
[
|
|
22
|
+
].concat(super)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def initialize(argv)
|
|
26
|
+
|
|
27
|
+
super(argv)
|
|
28
|
+
@additional_args = argv.remainder!
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def validate!
|
|
32
|
+
super
|
|
33
|
+
@project_dir=Dir.pwd if @project_dir.nil? || @project_dir.empty?
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def run
|
|
37
|
+
|
|
38
|
+
working_dir = @project_dir
|
|
39
|
+
|
|
40
|
+
pod_array = pindo_single_config.pod_repo_dict
|
|
41
|
+
pod_index_url = nil
|
|
42
|
+
if !pod_array.nil?
|
|
43
|
+
pod_index_url = pod_array['podindex']
|
|
44
|
+
else
|
|
45
|
+
raise Informative, '私有Pod索引地址未知!!'
|
|
46
|
+
end
|
|
47
|
+
sources = Pod::Config.instance.sources_manager.all
|
|
48
|
+
|
|
49
|
+
private_source = sources.select { |s| s.git? && s.url.to_s.eql?(pod_index_url)}.first
|
|
50
|
+
if !private_source.nil?
|
|
51
|
+
puts "开始更新私有库索引地址..."
|
|
52
|
+
puts "地址:#{private_source.url}"
|
|
53
|
+
puts "目录:#{private_source.repo}"
|
|
54
|
+
git!(%W(-C #{private_source.repo} pull))
|
|
55
|
+
else
|
|
56
|
+
puts "下载私有库索引地址..."
|
|
57
|
+
puts "地址:#{pod_index_url}"
|
|
58
|
+
puts "目录:~/.cocoapods"
|
|
59
|
+
repos_path = File.expand_path("~/.cocoapods/repos")
|
|
60
|
+
getcode_to_dir(reponame:"goodpodsindex", remote_url: pod_index_url, path:repos_path)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
if File.exist?("#{working_dir}/Podfile")
|
|
66
|
+
system "pod install"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
data/lib/pindo/lib.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# require 'pindo/dev/create'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
require 'pindo/lib/lint'
|
|
5
|
+
require 'pindo/lib/push'
|
|
6
|
+
require 'pindo/lib/forcepush'
|
|
7
|
+
require 'pindo/lib/update'
|
|
8
|
+
|
|
9
|
+
module Pindo
|
|
10
|
+
class Command
|
|
11
|
+
|
|
12
|
+
class Lib < Command
|
|
13
|
+
self.abstract_command = true
|
|
14
|
+
self.summary = '操作pod库的相关命令'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|