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,81 @@
1
+
2
+ require 'fileutils'
3
+ require 'json'
4
+
5
+
6
+ module Pindo
7
+
8
+ class PindoUserLocalConfig
9
+
10
+ attr_accessor :pindo_user_local_config_json
11
+
12
+ def initialize( )
13
+
14
+ # puts "initialize Pindoconfig"
15
+ if !File.exist?(Pindoconfig.instance.pindo_dir)
16
+ FileUtils.mkdir(Pindoconfig.instance.pindo_dir)
17
+ end
18
+
19
+ @pindo_user_local_config_json = nil
20
+
21
+ @pindo_user_local_config_file = File.join(File::expand_path(Pindoconfig.instance.pindo_dir), ".pindo_use_local_config.json")
22
+
23
+ if File.exist?(@pindo_user_local_config_file)
24
+ begin
25
+ @pindo_user_local_config_json = JSON.parse(File.read(@pindo_user_local_config_file))
26
+ rescue => exception
27
+ puts "Error !!! +++++++++++ load Pindo local config error !!!"
28
+ end
29
+
30
+ if @pindo_user_local_config_json.nil?
31
+ begin
32
+ FileUtils.rm_rf(@pindo_user_local_config_file)
33
+ rescue => exception
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def read_local_wechat_url
41
+
42
+ local_wechat_url = nil
43
+ if !@pindo_user_local_config_json.nil?
44
+ local_wechat_url = @pindo_user_local_config_json["local_wechat_url"]
45
+ end
46
+ return local_wechat_url;
47
+ end
48
+
49
+ def write_local_wechat_url(wechat_msg_url:nil)
50
+
51
+ @pindo_user_local_config_json = @pindo_user_local_config_json || {}
52
+ @pindo_user_local_config_json["local_wechat_url"] = wechat_msg_url
53
+ File.open(@pindo_user_local_config_file, "w") do |file|
54
+ file.write(JSON.pretty_generate(@pindo_user_local_config_json))
55
+ file.close
56
+ end
57
+ end
58
+
59
+
60
+
61
+
62
+ def self.reload_instance
63
+ @instance = new
64
+ end
65
+
66
+ def self.instance
67
+ @instance ||= new
68
+ end
69
+
70
+ class << self
71
+ attr_writer :instance
72
+ end
73
+
74
+ module PindoUserLocalMixin
75
+ def pindo_user_local_single_config
76
+ PindoUserLocalConfig.instance
77
+ end
78
+ end
79
+
80
+ end
81
+ end
@@ -0,0 +1,233 @@
1
+ # This file contains the fastlane.tools configuration
2
+ # You can find the documentation at https://docs.fastlane.tools
3
+ #
4
+ # For a list of all available actions, check out
5
+ #
6
+ # https://docs.fastlane.tools/actions
7
+ #
8
+
9
+ # Uncomment the line if you want fastlane to automatically update itself
10
+ # update_fastlane
11
+
12
+ default_platform(:ios)
13
+
14
+ platform :ios do
15
+
16
+ lane :resigndev do
17
+ resign(
18
+ ipa: "demo_ipa_name",
19
+ signing_identity: ENV["sigh_demo_bundle_id_development_certificate-name"],
20
+ bundle_id: "demo_bundle_id",
21
+ use_app_entitlements: true,
22
+ provisioning_profile: {
23
+ "demo_bundle_id" => ENV["sigh_demo_bundle_id_development_profile-name"],
24
+ "demo_bundle_id.service" => ENV["sigh_demo_bundle_id.service_development_profile-name"],
25
+ "demo_bundle_id.content" => ENV["sigh_demo_bundle_id.content_development_profile-name"]
26
+ }
27
+ )
28
+ end
29
+
30
+ lane :resignadhoc do
31
+ resign(
32
+ ipa: "demo_ipa_name",
33
+ signing_identity: ENV["sigh_demo_bundle_id_adhoc_certificate-name"],
34
+ bundle_id: "demo_bundle_id",
35
+ use_app_entitlements: true,
36
+ provisioning_profile: {
37
+ "demo_bundle_id" => ENV["sigh_demo_bundle_id_adhoc_profile-name"],
38
+ "demo_bundle_id.service" => ENV["sigh_demo_bundle_id.service_adhoc_profile-name"],
39
+ "demo_bundle_id.content" => ENV["sigh_demo_bundle_id.content_adhoc_profile-name"]
40
+ }
41
+ )
42
+ end
43
+
44
+ lane :resignrelease do
45
+ resign(
46
+ ipa: "demo_ipa_name",
47
+ signing_identity: ENV["sigh_demo_bundle_id_appstore_certificate-name"],
48
+ bundle_id: "demo_bundle_id",
49
+ use_app_entitlements: true,
50
+ provisioning_profile: {
51
+ "demo_bundle_id" => ENV["sigh_demo_bundle_id_appstore_profile-name"],
52
+ "demo_bundle_id.service" => ENV["sigh_demo_bundle_id.service_appstore_profile-name"],
53
+ "demo_bundle_id.content" => ENV["sigh_demo_bundle_id.content_appstore_profile-name"]
54
+ }
55
+ )
56
+ end
57
+
58
+ lane :development do
59
+
60
+ # match(
61
+ # git_url: "dev_cert_giturl",
62
+ # username:"demo_apple_id",
63
+ # git_branch:"demo_apple_id",
64
+ # keychain_password:"goodcert1",
65
+ # app_identifier: ["demo_bundle_id","demo_bundle_id.service","demo_bundle_id.content"],
66
+ # type: "development",
67
+ # force_for_new_devices:true
68
+ # )
69
+
70
+ gym(
71
+ workspace: "DemoProj.xcworkspace",
72
+ scheme:"DemoProj",
73
+ configuration: "Release",
74
+ clean: true,
75
+ export_method: "development",
76
+ output_directory:"./build/",
77
+ # export_options: {
78
+ # provisioningProfiles: {
79
+ # "demo_bundle_id" => ENV["sigh_demo_bundle_id_development_profile-name"],
80
+ # "demo_bundle_id.service" => ENV["sigh_demo_bundle_id.service_development_profile-name"],
81
+ # "demo_bundle_id.content" => ENV["sigh_demo_bundle_id.content_development_profile-name"]
82
+ # }
83
+ # },
84
+ # codesigning_identity:ENV["sigh_demo_bundle_id_appstore_certificate-name"],
85
+ output_name: "demo_ipa_name.ipa"
86
+ )
87
+
88
+ end
89
+
90
+ lane :adhoc do
91
+
92
+ # match(
93
+ # git_url: "dev_cert_giturl",
94
+ # username:"demo_apple_id",
95
+ # git_branch:"demo_apple_id",
96
+ # keychain_password:"goodcert1",
97
+ # app_identifier: ["demo_bundle_id","demo_bundle_id.service","demo_bundle_id.content"],
98
+ # type: "adhoc",
99
+ # force_for_new_devices:true
100
+ # )
101
+
102
+ gym(
103
+ workspace: "DemoProj.xcworkspace",
104
+ scheme:"DemoProj",
105
+ configuration: "Release",
106
+ clean: true,
107
+ export_method: "ad-hoc",
108
+ output_directory:"./build/",
109
+ # export_options: {
110
+ # provisioningProfiles: {
111
+ # "demo_bundle_id" => ENV["sigh_demo_bundle_id_adhoc_profile-name"],
112
+ # "demo_bundle_id.service" => ENV["sigh_demo_bundle_id.service_adhoc_profile-name"],
113
+ # "demo_bundle_id.content" => ENV["sigh_demo_bundle_id.content_adhoc_profile-name"]
114
+ # }
115
+ # },
116
+ # codesigning_identity:ENV["sigh_demo_bundle_id_appstore_certificate-name"],
117
+ output_name: "demo_ipa_name.ipa"
118
+ )
119
+
120
+ end
121
+
122
+
123
+ lane :release do
124
+
125
+
126
+ # match(
127
+ # git_url: "deploy_cert_giturl",
128
+ # username:"demo_apple_id",
129
+ # git_branch:"demo_apple_id",
130
+ # keychain_password:"goodcert1",
131
+ # app_identifier: ["demo_bundle_id","demo_bundle_id.service","demo_bundle_id.content"],
132
+ # type: "appstore",
133
+ # )
134
+
135
+ gym(
136
+ workspace: "DemoProj.xcworkspace",
137
+ scheme:"DemoProj",
138
+ configuration: "Release",
139
+ clean: true,
140
+ export_method: "app-store",
141
+ output_directory:"./build/",
142
+ include_symbols: false,
143
+ include_bitcode: false,
144
+ # export_options: {
145
+ # provisioningProfiles: {
146
+ # "demo_bundle_id" => ENV["sigh_demo_bundle_id_appstore_profile-name"],
147
+ # "demo_bundle_id.service" => ENV["sigh_demo_bundle_id.service_appstore_profile-name"],
148
+ # "demo_bundle_id.content" => ENV["sigh_demo_bundle_id.content_appstore_profile-name"]
149
+ # }
150
+ # },
151
+ # codesigning_identity:ENV["sigh_demo_bundle_id_appstore_certificate-name"],
152
+ output_name: "demo_ipa_name.ipa"
153
+ )
154
+ end
155
+
156
+ # lane :fabric do
157
+
158
+ # upload_symbols_to_crashlytics(
159
+ # dsym_path: "./build/demo_ipa_name.app.dSYM.zip",
160
+ # api_token: " "
161
+ # )
162
+
163
+ # crashlytics(
164
+ # crashlytics_path: "./Pods/Crashlytics/submit",
165
+ # api_token: " ",
166
+ # build_secret: " ",
167
+ # ipa_path: "./build/demo_ipa_name.ipa",
168
+ # notifications: true
169
+ # )
170
+
171
+ # end
172
+
173
+ lane :metadata do
174
+ deliver(
175
+ username:"demo_apple_id",
176
+ app_identifier:"demo_bundle_id",
177
+ app_version:"1.0.0",
178
+ price_tier:0,
179
+ app_rating_config_path:"./fastlane/metadata/rating.json",
180
+ submit_for_review: false,
181
+ automatic_release: false,
182
+ force: true,
183
+ skip_metadata: false,
184
+ skip_screenshots: true,
185
+ skip_binary_upload: true,
186
+ overwrite_screenshots:true,
187
+ precheck_include_in_app_purchases:false,
188
+ run_precheck_before_submit:false,
189
+ skip_app_version_update:true,
190
+ metadata_path:"./fastlane/metadata"
191
+ )
192
+ end
193
+
194
+ lane :screen_shots do
195
+ deliver(
196
+ username:"demo_apple_id",
197
+ app_identifier:"demo_bundle_id",
198
+ app_version:"1.0.0",
199
+ submit_for_review: false,
200
+ automatic_release: false,
201
+ force: true,
202
+ skip_metadata: true,
203
+ skip_screenshots: false,
204
+ skip_binary_upload: true,
205
+ overwrite_screenshots:true,
206
+ precheck_include_in_app_purchases:false,
207
+ run_precheck_before_submit:false,
208
+ skip_app_version_update:true,
209
+ screenshots_path:"./fastlane/screenshots"
210
+ )
211
+ end
212
+
213
+ lane :uploadipa do
214
+ deliver(
215
+ username:"demo_apple_id",
216
+ app_identifier:"demo_bundle_id",
217
+ app_version:"1.0.0",
218
+ submit_for_review: false,
219
+ automatic_release: false,
220
+ force: true,
221
+ skip_metadata: true,
222
+ skip_screenshots: true,
223
+ skip_binary_upload: false,
224
+ overwrite_screenshots:true,
225
+ precheck_include_in_app_purchases:false,
226
+ run_precheck_before_submit:false,
227
+ skip_app_version_update:true,
228
+ ipa: "./build/demo_ipa_name.ipa"
229
+ )
230
+ end
231
+ end
232
+
233
+
@@ -0,0 +1,167 @@
1
+ require 'highline/import'
2
+ require 'fileutils'
3
+ require 'json'
4
+ require 'xcodeproj'
5
+ require 'gym'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Deploy < Command
10
+ class Build < Deploy
11
+
12
+ include Command::DeployOptions
13
+
14
+ include Xcodebuildpre
15
+
16
+ include CommonConfuseProj
17
+
18
+ self.summary = '编译工程'
19
+
20
+ self.description = <<-DESC
21
+ 编译工程. 用法:在工程目录下执行 pindo deploy build
22
+ DESC
23
+
24
+ self.arguments = [
25
+ CLAide::Argument.new('path/to/config.json', true),
26
+ ]
27
+
28
+ def run
29
+
30
+ current_project_dir = Dir.pwd
31
+
32
+ new_project_dir = current_project_dir
33
+ new_project_fullname = ""
34
+
35
+ Dir.foreach(new_project_dir) do |file|
36
+ if file =~ /(.*).xcodeproj/
37
+ new_project_fullname = file
38
+ break;
39
+ end
40
+ end
41
+
42
+ if File.exist?(File.join(new_project_dir, "build"))
43
+ FileUtils.rm_rf(File.join(new_project_dir, "build"))
44
+ end
45
+
46
+ check_swark_authorize
47
+
48
+ new_proj_name = File.basename(new_project_fullname, ".xcodeproj")
49
+ gym_options = get_gym_build_values(new_proj_name:new_proj_name)
50
+ puts gym_options
51
+ config = FastlaneCore::Configuration.create(Gym::Options.available_options, gym_options)
52
+ Gym::Manager.new.work(config)
53
+
54
+ # command = "fastlane release"
55
+ # if @args_dev_flag
56
+ # command = "fastlane development"
57
+ # end
58
+ # if @args_adhoc_flag
59
+ # command = "fastlane adhoc"
60
+ # end
61
+ # system command
62
+
63
+
64
+ check_swark_authorize
65
+
66
+ end
67
+
68
+
69
+ def get_gym_build_values(new_proj_name:nil)
70
+
71
+ @build_type = "app-store"
72
+ icloud_env = "Production"
73
+ if @args_adhoc_flag
74
+ @build_type = "ad-hoc"
75
+ icloud_env = "Development"
76
+ end
77
+ if @args_dev_flag
78
+ @build_type = "development"
79
+ icloud_env = "Development"
80
+ end
81
+
82
+ app_ipaname_temp = @config_json['app_info']['app_display_name']
83
+ app_ipaname_temp = app_ipaname_temp.gsub(/ /, '');
84
+ app_ipaname_temp = app_ipaname_temp.gsub(/\'/, '');
85
+
86
+ if File.exist?(File.join(Dir.pwd, "Podfile"))
87
+ values = {
88
+ workspace: "#{new_proj_name}.xcworkspace",
89
+ scheme:"#{new_proj_name}",
90
+ configuration: "Release",
91
+ clean: true,
92
+ export_method: @build_type,
93
+ output_directory:"./build/",
94
+ output_name: "#{app_ipaname_temp}.ipa"
95
+ }
96
+ else
97
+ values = {
98
+ project: "#{new_proj_name}.xcodeproj",
99
+ scheme:"#{new_proj_name}",
100
+ configuration: "Release",
101
+ clean: true,
102
+ export_method: @build_type,
103
+ output_directory:"./build/",
104
+ output_name: "#{app_ipaname_temp}.ipa"
105
+ }
106
+ end
107
+
108
+
109
+ values[:export_options] ||={}
110
+ values[:export_options][:compileBitcode] = false
111
+ values[:export_options][:stripSwiftSymbols] = true
112
+ values[:export_options][:uploadSymbols] = false
113
+
114
+ if !@deploy_icloud_id.nil?
115
+
116
+ values[:export_options][:iCloudContainerEnvironment] = icloud_env
117
+ end
118
+ return values
119
+
120
+ end
121
+
122
+ def check_swark_authorize
123
+ if @config_json['project_info']['xcode_build_type'] && @config_json["project_info"]["xcode_build_type"].include?("swark")
124
+
125
+ app_config_dir = File.join(File::expand_path(pindo_single_config.pindo_dir), @deploy_identifier)
126
+ swark_authorize_file = File.join(app_config_dir, "swark_authorize.json")
127
+ if File.exist?(swark_authorize_file)
128
+ swark_authorize_json=JSON.parse(File.read(swark_authorize_file))
129
+ unless swark_authorize_json && swark_authorize_json['swark_authorize_status']
130
+ show_swark_authorize_error(swark_authorize_json:swark_authorize_json)
131
+ end
132
+ end
133
+ end
134
+ end
135
+
136
+ def show_swark_authorize_error(swark_authorize_json:nil)
137
+
138
+ puts "++++ +++ Need authorize !!! ++++"
139
+ puts "+++ Need authorize !!! ++++"
140
+ puts "+++ Need authorize !!! +++++"
141
+ puts " =========================="
142
+ puts
143
+
144
+ puts "方法一:"
145
+ command = " 1. swark authorize "
146
+ command = command + swark_authorize_json["swark_authorize_teamid"] + "." + swark_authorize_json["swark_authorize_bundleid"]
147
+ puts command
148
+ command = " 2. 修改swark_authorize.json 中的 swark_authorize_status = true 并且提交"
149
+ puts
150
+
151
+ puts "方法二:"
152
+ puts " pindo deploy quswark"
153
+ if @args_dev_flag || @args_adhoc_flag
154
+ puts
155
+ puts
156
+ else
157
+
158
+ puts
159
+ raise Informative, "Need swark authorize !!!"
160
+
161
+ end
162
+
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end