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.
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