pindo 4.6.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/bin/pindo +35 -0
  3. data/lib/pindo/base/aeshelper.rb +31 -0
  4. data/lib/pindo/base/deviceinfo.rb +90 -0
  5. data/lib/pindo/base/executable.rb +224 -0
  6. data/lib/pindo/base/githelper.rb +489 -0
  7. data/lib/pindo/base/hashhelper.rb +134 -0
  8. data/lib/pindo/base/plaininformative.rb +15 -0
  9. data/lib/pindo/base/plistbuddyexecutable.rb +121 -0
  10. data/lib/pindo/base/standarderror.rb +14 -0
  11. data/lib/pindo/client/applovinclient.rb +156 -0
  12. data/lib/pindo/client/aws3sclient.rb +183 -0
  13. data/lib/pindo/client/bossclient.rb +229 -0
  14. data/lib/pindo/client/bossconfigclient.rb +175 -0
  15. data/lib/pindo/client/giteeclient.rb +65 -0
  16. data/lib/pindo/client/httpclient.rb +40 -0
  17. data/lib/pindo/client/pgyerclient.rb +439 -0
  18. data/lib/pindo/client/tgateclient.rb +103 -0
  19. data/lib/pindo/command.rb +101 -0
  20. data/lib/pindo/config/pindoconfig.rb +439 -0
  21. data/lib/pindo/config/pindouserlocalconfig.rb +81 -0
  22. data/lib/pindo/deploy/Fastfile +233 -0
  23. data/lib/pindo/deploy/build.rb +167 -0
  24. data/lib/pindo/deploy/bundleid.rb +245 -0
  25. data/lib/pindo/deploy/cert.rb +508 -0
  26. data/lib/pindo/deploy/check.rb +79 -0
  27. data/lib/pindo/deploy/configproj.rb +89 -0
  28. data/lib/pindo/deploy/confusecode.rb +248 -0
  29. data/lib/pindo/deploy/confuseproj.rb +112 -0
  30. data/lib/pindo/deploy/fabric.rb +58 -0
  31. data/lib/pindo/deploy/getitcinfo.rb +248 -0
  32. data/lib/pindo/deploy/iap.rb +796 -0
  33. data/lib/pindo/deploy/initconfig.rb +128 -0
  34. data/lib/pindo/deploy/itcapp.rb +147 -0
  35. data/lib/pindo/deploy/itcinfo.rb +369 -0
  36. data/lib/pindo/deploy/pem.rb +55 -0
  37. data/lib/pindo/deploy/pullconfig.rb +46 -0
  38. data/lib/pindo/deploy/pushconfig.rb +83 -0
  39. data/lib/pindo/deploy/quswark.rb +146 -0
  40. data/lib/pindo/deploy/quswauth.rb +67 -0
  41. data/lib/pindo/deploy/reportbug.rb +135 -0
  42. data/lib/pindo/deploy/resign.rb +338 -0
  43. data/lib/pindo/deploy/tag.rb +108 -0
  44. data/lib/pindo/deploy/updateconfig.rb +129 -0
  45. data/lib/pindo/deploy/uploadipa.rb +63 -0
  46. data/lib/pindo/deploy.rb +44 -0
  47. data/lib/pindo/dev/autobuild.rb +204 -0
  48. data/lib/pindo/dev/autoresign.rb +186 -0
  49. data/lib/pindo/dev/confusecode.rb +127 -0
  50. data/lib/pindo/dev/confuseproj.rb +111 -0
  51. data/lib/pindo/dev/createbuild.rb +159 -0
  52. data/lib/pindo/dev/debug.rb +141 -0
  53. data/lib/pindo/dev/pub.rb +171 -0
  54. data/lib/pindo/dev/renewcert.rb +142 -0
  55. data/lib/pindo/dev.rb +23 -0
  56. data/lib/pindo/env/dreamstudio.rb +53 -0
  57. data/lib/pindo/env/flutter.rb +59 -0
  58. data/lib/pindo/env/flutter.sh +116 -0
  59. data/lib/pindo/env/quarkenv.rb +58 -0
  60. data/lib/pindo/env/swarkenv.rb +62 -0
  61. data/lib/pindo/env/workhard.rb +56 -0
  62. data/lib/pindo/env.rb +17 -0
  63. data/lib/pindo/ipa/autoresign.rb +188 -0
  64. data/lib/pindo/ipa/import.rb +261 -0
  65. data/lib/pindo/ipa/output.rb +396 -0
  66. data/lib/pindo/ipa.rb +22 -0
  67. data/lib/pindo/lib/forcepush.rb +159 -0
  68. data/lib/pindo/lib/lint.rb +115 -0
  69. data/lib/pindo/lib/push.rb +143 -0
  70. data/lib/pindo/lib/update.rb +75 -0
  71. data/lib/pindo/lib.rb +18 -0
  72. data/lib/pindo/module/appselect.rb +200 -0
  73. data/lib/pindo/module/appstore_in_app_purchase.rb +1803 -0
  74. data/lib/pindo/module/appstore_metadata_connect_api_helper.rb +12 -0
  75. data/lib/pindo/module/appstore_metadata_fastlane_helper.rb +922 -0
  76. data/lib/pindo/module/buildconfighelper.rb +13 -0
  77. data/lib/pindo/module/buildhelper.rb +76 -0
  78. data/lib/pindo/module/commonconfuseproj.rb +271 -0
  79. data/lib/pindo/module/config_project.sh +143 -0
  80. data/lib/pindo/module/configprojhelper.rb +631 -0
  81. data/lib/pindo/module/iap_tier.json +813 -0
  82. data/lib/pindo/module/icon_contents.json +116 -0
  83. data/lib/pindo/module/imessage_icon.json +91 -0
  84. data/lib/pindo/module/imgset_contents.json +21 -0
  85. data/lib/pindo/module/launchimg_contents.json +21 -0
  86. data/lib/pindo/module/pemcreate.rb +63 -0
  87. data/lib/pindo/module/pgyerhelper.rb +339 -0
  88. data/lib/pindo/module/xcodebuildpre.rb +258 -0
  89. data/lib/pindo/module/xcodehelper.rb +521 -0
  90. data/lib/pindo/options/appconfigoptions.rb +23 -0
  91. data/lib/pindo/options/deployoptions.rb +363 -0
  92. data/lib/pindo/pgyer/apptest.rb +104 -0
  93. data/lib/pindo/pgyer/comment.rb +95 -0
  94. data/lib/pindo/pgyer/download.rb +105 -0
  95. data/lib/pindo/pgyer/login.rb +61 -0
  96. data/lib/pindo/pgyer/upload.rb +234 -0
  97. data/lib/pindo/pgyer.rb +17 -0
  98. data/lib/pindo/repo/clone.rb +78 -0
  99. data/lib/pindo/repo/create.rb +55 -0
  100. data/lib/pindo/repo/login.rb +64 -0
  101. data/lib/pindo/repo/search.rb +60 -0
  102. data/lib/pindo/repo.rb +16 -0
  103. data/lib/pindo/setup.rb +60 -0
  104. data/lib/pindo/upgrade.rb +56 -0
  105. data/lib/pindo/utils/applovin.rb +213 -0
  106. data/lib/pindo/utils/boss.rb +209 -0
  107. data/lib/pindo/utils/clearcert.rb +60 -0
  108. data/lib/pindo/utils/device.rb +279 -0
  109. data/lib/pindo/utils/icon.rb +91 -0
  110. data/lib/pindo/utils/icon.sh +133 -0
  111. data/lib/pindo/utils/podindex.rb +56 -0
  112. data/lib/pindo/utils/podindex.sh +30 -0
  113. data/lib/pindo/utils/renewproj.rb +146 -0
  114. data/lib/pindo/utils/tgate.rb +159 -0
  115. data/lib/pindo/utils/xcassets.rb +46 -0
  116. data/lib/pindo/utils/xcassets.sh +88 -0
  117. data/lib/pindo/utils.rb +29 -0
  118. data/lib/pindo/version.rb +110 -0
  119. data/lib/pindo.rb +34 -0
  120. metadata +364 -0
@@ -0,0 +1,61 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'pindo/module/pgyerhelper.rb'
6
+
7
+
8
+ module Pindo
9
+ class Command
10
+ class Pgyer < Command
11
+
12
+ class Login < Pgyer
13
+
14
+ self.summary = '登录pgyer'
15
+
16
+ self.description = <<-DESC
17
+ 登录pgyer,终端运行:pindo pgyer login
18
+ DESC
19
+
20
+ self.arguments = [
21
+
22
+ ]
23
+
24
+ def self.options
25
+ [
26
+ ['--force', '强制重新登录pgyer'],
27
+ ].concat(super)
28
+ end
29
+
30
+
31
+
32
+ def initialize(argv)
33
+
34
+ @args_login_flag = argv.flag?('force', false)
35
+
36
+ super(argv)
37
+ @additional_args = argv.remainder!
38
+ end
39
+
40
+ def validate!
41
+ super
42
+ end
43
+
44
+ def run
45
+
46
+ app_info_obj = nil
47
+ @pgyer_client = PgyerClient.new
48
+
49
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
50
+
51
+ if !login_success
52
+ raise Informative, "登录失败!!!"
53
+ end
54
+
55
+
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,234 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'json'
6
+ require 'faraday'
7
+ require 'pindo/module/pgyerhelper.rb'
8
+
9
+
10
+ module Pindo
11
+ class Command
12
+ class Pgyer < Command
13
+ class Upload < Pgyer
14
+
15
+
16
+ self.summary = '上传ipa包到pgyer测试网站'
17
+
18
+ self.description = <<-DESC
19
+ 上传ipa包到pgyer。用法:例如:pindo pgyer upload path/to/demo.ipa
20
+ DESC
21
+
22
+ self.arguments = [
23
+ CLAide::Argument.new('path/to/demo.ipa', false),
24
+ ]
25
+
26
+ def self.options
27
+ [
28
+ ['--login', '强制再次登录pgyer网站,用法: pindo pgyer upload --login'],
29
+ ['--ipa', '强制指定上传的ipa文件: pindo pgyer upload --ipa=path/to/demo.ipa'],
30
+ ['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo pgyer upload --proj=prancksoundv4'],
31
+ ['--attach', '指定需要和ipa一起上传的附件: pindo pgyer upload --attach=path/to/attach.zip'],
32
+ ['--send', '上传到之后是否发送测试信息,用法:pindo pgyer upload --send'],
33
+ ['--desc', '指定上传的备注信息: -pindo pgyer upload -desc="1.upload message"'],
34
+
35
+ ].concat(super)
36
+ end
37
+
38
+
39
+ def initialize(argv)
40
+
41
+ @args_ipa_file = argv.shift_argument
42
+ @args_ipa_file = argv.option('ipa')
43
+
44
+ if @args_ipa_file && !@args_ipa_file.empty?
45
+ @args_ipa_file = @args_ipa_file.strip.gsub(/\"/, '')
46
+ end
47
+ @args_login_flag = argv.flag?('login', false)
48
+ @args_send_flag = argv.flag?('send', false)
49
+ @args_proj_name = argv.option('proj')
50
+ @args_attach_name = argv.option('attach')
51
+ @args_upload_desc = argv.option('desc')
52
+ if @args_upload_desc && !@args_upload_desc.empty?
53
+ @args_upload_desc = @args_upload_desc.strip.gsub(/\"/, '')
54
+ end
55
+
56
+
57
+
58
+ super(argv)
59
+ @additional_args = argv.remainder!
60
+ end
61
+
62
+ def validate!
63
+
64
+ if @args_proj_name.nil?
65
+ xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
66
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
67
+ if !proj_name.nil?
68
+ puts
69
+ answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
70
+ if answer
71
+ @args_proj_name = proj_name
72
+ end
73
+ end
74
+ end
75
+
76
+ super
77
+ end
78
+
79
+ def run
80
+
81
+ current_project_dir = Dir.pwd
82
+ is_in_project_dir = false
83
+
84
+ if @args_ipa_file.nil? || !File.exist?(@args_ipa_file)
85
+
86
+ build_path = File.join(current_project_dir, "build", "*.ipa")
87
+ @args_ipa_file = Dir.glob(build_path).max_by {|f| File.mtime(f)}
88
+ if @args_ipa_file.nil?
89
+ build_path = File.join(current_project_dir, "*.ipa")
90
+ @args_ipa_file = Dir.glob(build_path).max_by {|f| File.mtime(f)}
91
+ end
92
+ if !@args_ipa_file.nil?
93
+ answer = agree("需要上传的ipa文件是: #{@args_ipa_file} ?(Y/n)")
94
+ if !answer
95
+ @args_ipa_file = nil
96
+ end
97
+ end
98
+
99
+ if !@args_ipa_file.nil? && File.exist?(@args_ipa_file)
100
+ is_in_project_dir = true
101
+ else
102
+ @args_ipa_file = ask('需要上传的IPA文件:') || nil
103
+ @args_ipa_file = @args_ipa_file.strip.gsub(/\\ /, ' ')
104
+
105
+ end
106
+ end
107
+
108
+ if !File.exist?(@args_ipa_file)
109
+ raise Informative, "#{@args_ipa_file} 文件不存在"
110
+ end
111
+
112
+
113
+ @pgyer_client = PgyerClient.new
114
+ app_info_obj = nil
115
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
116
+ if login_success
117
+ PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
118
+ if !@args_proj_name.nil?
119
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
120
+ end
121
+
122
+ if app_info_obj.nil?
123
+ @args_proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
124
+ @args_proj_name = @args_proj_name.strip
125
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
126
+ end
127
+ end
128
+
129
+ if app_info_obj.nil?
130
+ raise Informative, "#{@args_proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
131
+ end
132
+
133
+
134
+
135
+ if @args_upload_desc.nil?
136
+ if is_in_project_dir
137
+ commit_id_info = git_latest_commit_id(local_repo_dir:current_project_dir)
138
+ @args_upload_desc = "commit " + commit_id_info
139
+ end
140
+ end
141
+
142
+
143
+ addtach_file = nil
144
+ if is_in_project_dir && File.exist?(File.join(current_project_dir, "VMData"))
145
+
146
+ server_file_directory = Dir.glob(File.join(current_project_dir, "VMData/Archives/*")).max_by {|f| File.mtime(f)}
147
+ zip_base_name = File.basename(server_file_directory)
148
+
149
+ server_zipfile_name = File.join(current_project_dir, "VMData", zip_base_name+".zip")
150
+
151
+ if File.exist?(server_zipfile_name)
152
+ FileUtils.rm_rf(server_zipfile_name)
153
+ end
154
+ Zip::File.open(server_zipfile_name, Zip::File::CREATE) do |zipfile|
155
+ Dir.chdir server_file_directory
156
+ Dir.glob("**/*").reject {|fn| File.directory?(fn) }.each do |file|
157
+ zipfile.add(file.sub(server_file_directory + '/', ''), file)
158
+ end
159
+ end
160
+
161
+ addtach_file = server_zipfile_name
162
+ Dir.chdir current_project_dir
163
+ end
164
+
165
+ args_ipa_file_dir = File.expand_path(File::dirname(@args_ipa_file))
166
+ @args_ipa_file=File.join(args_ipa_file_dir, File.basename(@args_ipa_file))
167
+
168
+ puts "==========================="
169
+ puts " 准备上传 ..."
170
+ puts "==========================="
171
+ puts
172
+ puts "上传项目: #{@args_proj_name}"
173
+ puts "上传备注: #{@args_upload_desc}"
174
+
175
+
176
+ aws_client = AWSS3Client.new
177
+ upload_res = aws_client.upload_file(binary_file:@args_ipa_file)
178
+
179
+ attach_key_url = nil
180
+ attachFileUrls = []
181
+
182
+
183
+ begin
184
+ if !addtach_file.nil? && File.exist?(addtach_file)
185
+ puts "存在附件, 继续上传附件..."
186
+ attach_key_url = aws_client.upload_file(binary_file:addtach_file, isAttach:true)
187
+ end
188
+
189
+ if !attach_key_url.nil?
190
+ attachFileUrls << attach_key_url
191
+ end
192
+
193
+ rescue => error
194
+ puts "附件上传失败".bold.red
195
+ end
196
+
197
+
198
+
199
+ app_version_info_obj = nil
200
+
201
+ if !upload_res.nil? && !app_info_obj.nil?
202
+
203
+ puts attachFileUrls
204
+
205
+ result_data = @pgyer_client.post_app_update_binary(appId:app_info_obj["appId"], params:{
206
+ description: @args_upload_desc,
207
+ s3Url: upload_res,
208
+ attachFileUrls:attachFileUrls
209
+ })
210
+
211
+
212
+ if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
213
+ puts
214
+ puts "上传成功 !!!"
215
+ puts
216
+ puts
217
+
218
+ msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:result_data["data"], msg_from: @pgyer_client.token["username"])
219
+
220
+ PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
221
+ if @args_send_flag
222
+ PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
223
+ end
224
+ end
225
+
226
+ end
227
+
228
+
229
+ end
230
+
231
+ end
232
+ end
233
+ end
234
+ end
@@ -0,0 +1,17 @@
1
+
2
+ require 'pindo/pgyer/login'
3
+ require 'pindo/pgyer/upload'
4
+ require 'pindo/pgyer/download'
5
+ require 'pindo/pgyer/comment'
6
+ require 'pindo/pgyer/apptest'
7
+
8
+ module Pindo
9
+ class Command
10
+
11
+ class Pgyer < Command
12
+ self.abstract_command = true
13
+ self.summary = '操作pgyer网站的相关命令'
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,78 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'json'
6
+ require 'faraday'
7
+
8
+
9
+ module Pindo
10
+ class Command
11
+ class Repo < Command
12
+ class Clone < Repo
13
+
14
+ self.summary = '下载仓库到本地'
15
+
16
+ self.description = <<-DESC
17
+ 下载仓库到本地,终端运行:pindo repo clone 仓库名称
18
+ DESC
19
+
20
+ self.arguments = [
21
+ CLAide::Argument.new('仓库名称', true),
22
+ ]
23
+
24
+ def self.options
25
+ [
26
+
27
+ ].concat(super)
28
+ end
29
+
30
+
31
+ def initialize(argv)
32
+
33
+ @args_repo_name = argv.shift_argument
34
+ super(argv)
35
+ @additional_args = argv.remainder!
36
+
37
+ end
38
+
39
+
40
+
41
+ def validate!
42
+ super
43
+ temp_config_file = "./config.json"
44
+ @repo_name = @args_repo_name if @args_repo_name
45
+ if @args_repo_name.nil? && @repo_name.nil?
46
+ if File::exist?(temp_config_file)
47
+ temp_config_file_fullname=File::expand_path(temp_config_file)
48
+ temp_config_json=JSON.parse(File.read(temp_config_file_fullname))
49
+ if temp_config_json['project_info'] && temp_config_json['project_info']['launch_project'] && temp_config_json['project_info']['launch_project']['project_git_url']
50
+ @code_git_url = temp_config_json['project_info']['launch_project']['project_git_url']
51
+ temp_url = String.new(@code_git_url)
52
+ index = temp_url.rindex('/')
53
+ temp_url = temp_url.slice(index + 1, temp_url.length)
54
+ @repo_name = temp_url.gsub!(/\.git/, "")
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+
61
+ def run
62
+
63
+ new_branch = "master"
64
+ if !@code_git_url.nil? && !@repo_name.nil?
65
+ puts
66
+ puts "Repo Name: #{@repo_name}"
67
+ puts "Repo Url: #{@code_git_url}"
68
+ puts "New Branch: #{new_branch}"
69
+
70
+ getcode_to_dir(reponame:@repo_name, remote_url:@code_git_url, path:Dir.pwd, new_branch:new_branch, new_tag:nil)
71
+
72
+ end
73
+ end
74
+
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,55 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+
6
+
7
+ module Pindo
8
+ class Command
9
+ class Repo < Command
10
+ class Create < Repo
11
+
12
+ self.summary = '代码托管网站中创建仓库'
13
+
14
+ self.description = <<-DESC
15
+ 代码托管网站中创建仓库,终端运行:pindo repo create
16
+ DESC
17
+
18
+ self.arguments = [
19
+ CLAide::Argument.new('仓库名称', true),
20
+ ]
21
+
22
+ def self.options
23
+ [
24
+ ['--login', '强制再登录网站'],
25
+ ['--repo', '仓库的名称'],
26
+ ['--org', '仓库的group信息'],
27
+ ].concat(super)
28
+ end
29
+
30
+
31
+ def initialize(argv)
32
+
33
+ @args_repo_name = argv.shift_argument
34
+ @args_login_flag = argv.flag?('force', false)
35
+ @repo_name = argv.option('repo')
36
+ @org_name = argv.option('org')
37
+
38
+ super(argv)
39
+ @additional_args = argv.remainder!
40
+ end
41
+
42
+ def validate!
43
+ super
44
+ end
45
+
46
+ def run
47
+
48
+ puts " coming soon !!"
49
+
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,64 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'json'
6
+ require 'faraday'
7
+ require 'pindo/client/pgyerclient'
8
+ require 'pindo/client/aws3sclient'
9
+
10
+
11
+ module Pindo
12
+ class Command
13
+ class Repo < Command
14
+
15
+ class Login < Repo
16
+
17
+ self.summary = '登录代码仓库托管网站'
18
+
19
+ self.description = <<-DESC
20
+ 登录代码仓库托管网站,终端运行:pindo repo login
21
+ DESC
22
+
23
+ self.arguments = [
24
+
25
+ ]
26
+
27
+ def self.options
28
+ [
29
+ ['--force', '强制重新登录pgyer'],
30
+ ].concat(super)
31
+ end
32
+
33
+
34
+
35
+ def initialize(argv)
36
+
37
+ @args_login_flag = argv.flag?('force', false)
38
+
39
+ super(argv)
40
+ @additional_args = argv.remainder!
41
+ end
42
+
43
+ def validate!
44
+ super
45
+ end
46
+
47
+ def run
48
+
49
+ app_info_obj = nil
50
+ @pgyer_client = PgyerClient.new
51
+
52
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
53
+
54
+ if !login_success
55
+ raise Informative, "登录失败!!!"
56
+ end
57
+
58
+
59
+ end
60
+
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,60 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'json'
6
+ require 'faraday'
7
+ require 'pindo/client/pgyerclient'
8
+ require 'pindo/client/aws3sclient'
9
+
10
+
11
+ module Pindo
12
+ class Command
13
+ class Repo < Command
14
+ class Search < Repo
15
+
16
+ self.summary = '代码托管网站中模糊搜索仓库信息'
17
+
18
+ self.description = <<-DESC
19
+ 代码托管网站中模糊搜索仓库信息,终端运行:pindo repo search 搜索关键词
20
+ DESC
21
+
22
+ self.arguments = [
23
+ CLAide::Argument.new('搜索关键词', true),
24
+ ]
25
+
26
+ def self.options
27
+ [
28
+ ['--login', '强制再登录网站'],
29
+ ['--repo', '仓库的名称'],
30
+ ['--org', '仓库的group信息'],
31
+ ].concat(super)
32
+ end
33
+
34
+
35
+
36
+ def initialize(argv)
37
+
38
+ @args_repo_name = argv.shift_argument
39
+ @args_login_flag = argv.flag?('force', false)
40
+ @repo_name = argv.option('repo')
41
+ @org_name = argv.option('org')
42
+
43
+ super(argv)
44
+ @additional_args = argv.remainder!
45
+ end
46
+
47
+ def validate!
48
+ super
49
+ end
50
+
51
+ def run
52
+
53
+ puts " coming soon !!"
54
+
55
+ end
56
+
57
+ end
58
+ end
59
+ end
60
+ end
data/lib/pindo/repo.rb ADDED
@@ -0,0 +1,16 @@
1
+
2
+ require 'pindo/repo/login'
3
+ require 'pindo/repo/clone'
4
+ require 'pindo/repo/create'
5
+ require 'pindo/repo/search'
6
+
7
+ module Pindo
8
+ class Command
9
+
10
+ class Repo < Command
11
+ self.abstract_command = true
12
+ self.summary = '仓库网站相关命令'
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,60 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Pindo
5
+ class Command
6
+ class Setup < Command
7
+
8
+ self.summary = '初始化pindo配置'
9
+
10
+ self.description = <<-DESC
11
+ 用法:
12
+ 使用 gem install pindo 安装,安装完之后使用pindo setup初始化pindo的配置,
13
+ 默认dreamstudio环境。
14
+ DESC
15
+
16
+ self.arguments = [
17
+
18
+ ]
19
+
20
+ def self.options
21
+ [
22
+
23
+ ].concat(super)
24
+ end
25
+
26
+ def initialize(argv)
27
+ super(argv)
28
+ @additional_args = argv.remainder!
29
+ end
30
+
31
+ def validate!
32
+ super
33
+ end
34
+
35
+ def run
36
+
37
+ pindo_dir = File.expand_path(ENV['PINDO_DIR'] || '~/.pindo')
38
+
39
+ if !File.exist?(pindo_dir)
40
+ FileUtils.mkdir(pindo_dir)
41
+ end
42
+
43
+ if File.exist?(File.join(pindo_dir, ".pindo_env"))
44
+ FileUtils.rm_rf(File.join(pindo_dir, ".pindo_env"))
45
+ end
46
+
47
+
48
+ pindo_common_dir = pindo_single_config.pindo_common_configdir
49
+
50
+ if File.exist?(pindo_common_dir)
51
+ FileUtils.rm_rf(pindo_common_dir)
52
+ end
53
+ clone_pindo_common_config_repo(force_delete:true)
54
+
55
+ Pindo::Command::Env::Dreamstudio::run([])
56
+ end
57
+
58
+ end
59
+ end
60
+ end