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,59 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Pindo
5
+ class Command
6
+ class Env < Command
7
+ class Flutter < Env
8
+
9
+ self.summary = 'Config Flutter Env'
10
+
11
+ self.description = <<-DESC
12
+ Config Flutter Env.
13
+ DESC
14
+
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
+ config_flutter_env
38
+
39
+ end
40
+
41
+ def config_flutter_env
42
+
43
+ pindo_dir = pindo_single_config.pindo_dir
44
+ if !File.exist?(pindo_dir)
45
+ FileUtils.mkdir(pindo_dir)
46
+ end
47
+
48
+ reponame = get_repo_base_name(repo_url:pindo_single_config.deploy_flutter_giturl)
49
+ getcode_to_dir(reponame:reponame, remote_url:pindo_single_config.deploy_flutter_giturl, path:swark_dir)
50
+
51
+ env_shell = File.join(File.expand_path('./', __dir__), 'flutter.sh')
52
+ system env_shell
53
+
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,116 @@
1
+ #!/bin/bash
2
+
3
+
4
+
5
+ USER_ROOT=$HOME
6
+ PINDO_ROOT_PATH=$USER_ROOT/.pindo
7
+ FLUTTER_ROOT_PATH=$PINDO_ROOT_PATH/flutter
8
+
9
+
10
+ function add_env_var()
11
+ {
12
+ TEMP_PROFILE=$1
13
+ COMMAND_SCRIPT="export"
14
+ if [[ "$TEMP_PROFILE" =~ .fish$ ]]; then
15
+ COMMAND_SCRIPT="set"
16
+ fi
17
+
18
+ if [[ -d "$FLUTTER_ROOT_PATH" ]]; then
19
+ if [[ -f "$TEMP_PROFILE" ]]; then
20
+
21
+ sed -i "" '/FLUTTER_ROOT/d' $TEMP_PROFILE
22
+ sed -i "" '/DART_SDK_ROOT/d' $TEMP_PROFILE
23
+
24
+
25
+ if [[ "$COMMAND_SCRIPT" == "export" ]]; then
26
+ echo "export FLUTTER_ROOT=$FLUTTER_ROOT_PATH" >> $TEMP_PROFILE
27
+ echo "export DART_SDK_ROOT=\$FLUTTER_ROOT/bin/cache/dart-sdk" >> $TEMP_PROFILE
28
+
29
+ echo "export PATH=\$FLUTTER_ROOT/bin:\$PATH" >> $TEMP_PROFILE
30
+ echo "export PATH=\$DART_SDK_ROOT/bin:\$PATH" >> $TEMP_PROFILE
31
+ else
32
+ echo "export FLUTTER_ROOT=$FLUTTER_ROOT_PATH" >> $TEMP_PROFILE
33
+ echo "export DART_SDK_ROOT=\$FLUTTER_ROOT/bin/cache/dart-sdk" >> $TEMP_PROFILE
34
+
35
+ echo "set PATH \$FLUTTER_ROOT/bin \$PATH" >> $TEMP_PROFILE
36
+ echo "set PATH \$DART_SDK_ROOT/bin \$PATH" >> $TEMP_PROFILE
37
+ fi
38
+
39
+
40
+ SHELL_TOOL=`echo $SHELL`
41
+ if [[ "$TEMP_PROFILE" =~ .fish$ ]] && [[ "$SHELL_TOOL" =~ fish$ ]]; then
42
+ $SHELL_TOOL $FISH_PROFILE
43
+ fi
44
+
45
+ if [[ "$TEMP_PROFILE" =~ .fish$ ]] && [[ "$SHELL_TOOL" =~ zsh$ ]]; then
46
+ $SHELL_TOOL $FISH_PROFILE
47
+ fi
48
+
49
+ fi
50
+ fi
51
+ }
52
+
53
+
54
+
55
+
56
+ function remove_code_sign()
57
+ {
58
+ if [[ -d "$FLUTTER_ROOT/bin/cache/artifacts/engine/ios/Flutter.framework/_CodeSignature" ]]; then
59
+ rm -rf "$FLUTTER_ROOT/bin/cache/artifacts/engine/ios/Flutter.framework/_CodeSignature"
60
+ fi
61
+
62
+ if [[ -d "$FLUTTER_ROOT/bin/cache/artifacts/engine/ios-profile/Flutter.framework/_CodeSignature" ]]; then
63
+ rm -rf "$FLUTTER_ROOT/bin/cache/artifacts/engine/ios-profile/Flutter.framework/_CodeSignature"
64
+ fi
65
+
66
+ if [[ -d "$FLUTTER_ROOT/bin/cache/artifacts/engine/ios-release/Flutter.framework/_CodeSignature" ]]; then
67
+ rm -rf "$FLUTTER_ROOT/bin/cache/artifacts/engine/ios-release/Flutter.framework/_CodeSignature"
68
+ fi
69
+ }
70
+
71
+
72
+ function main()
73
+ {
74
+ if [[ -d "$FLUTTER_ROOT_PATH" ]]; then
75
+
76
+ BASH_PROFILE=$USER_ROOT/.bash_profile
77
+ add_env_var $BASH_PROFILE
78
+ source $BASH_PROFILE
79
+
80
+ ZSHRC_PROFILE=$USER_ROOT/.zshrc
81
+ add_env_var $ZSHRC_PROFILE
82
+
83
+ FISH_PROFILE=$USER_ROOT/.config/fish/config.fish
84
+ add_env_var $FISH_PROFILE
85
+
86
+
87
+ if [[ -f "$FLUTTER_ROOT/bin/cache/flutter_tools.snapshot" ]]; then
88
+ rm -rf "$FLUTTER_ROOT/bin/cache/flutter_tools.snapshot"
89
+ fi
90
+
91
+ if [[ -f "$FLUTTER_ROOT/bin/cache/flutter_tools.stamp" ]]; then
92
+ rm -rf "$FLUTTER_ROOT/bin/cache/flutter_tools.stamp"
93
+ fi
94
+
95
+ flutter --version
96
+
97
+ flutter doctor
98
+
99
+ flutter --version
100
+
101
+ pub global activate --source git https://gitee.com/gxflutter/vbdler.git
102
+
103
+ else
104
+ echo "Warning: Insall flutter !!!"
105
+ fi
106
+ }
107
+
108
+ main
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
@@ -0,0 +1,58 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Pindo
5
+ class Command
6
+ class Env < Command
7
+ class Quarkenv < Env
8
+
9
+ self.summary = '配置本机电脑quark环境'
10
+
11
+ self.description = <<-DESC
12
+ 配置本机电脑quark环境,终端下运行: pindo env quarkenv
13
+ DESC
14
+
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
+
38
+ pindo_dir = pindo_single_config.pindo_dir
39
+ if !File.exist?(pindo_dir)
40
+ FileUtils.mkdir(pindo_dir)
41
+ end
42
+
43
+ reponame = get_repo_base_name(repo_url:pindo_single_config.deploy_quark_giturl)
44
+ quark_path = getcode_to_dir(reponame:reponame, remote_url:pindo_single_config.deploy_quark_giturl, path:pindo_dir)
45
+ command = File.join(quark_path, 'quark-install')
46
+ system "/bin/chmod 777 #{command}"
47
+ system command
48
+
49
+ command = File.join(quark_path, 'quark-upgrade')
50
+ system command
51
+
52
+ end
53
+
54
+
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,62 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Pindo
5
+ class Command
6
+ class Env < Command
7
+ class Swarkenv < Env
8
+
9
+
10
+ self.summary = '配置本机电脑swark环境'
11
+
12
+ self.description = <<-DESC
13
+ 配置本机电脑swark环境,终端下运行: pindo env swarkenv
14
+ DESC
15
+
16
+
17
+ self.arguments = [
18
+
19
+ ]
20
+
21
+ def self.options
22
+ [
23
+
24
+ ].concat(super)
25
+ end
26
+
27
+ def initialize(argv)
28
+ super(argv)
29
+ @additional_args = argv.remainder!
30
+ end
31
+
32
+ def validate!
33
+ super
34
+ end
35
+
36
+ def run
37
+
38
+ swark_dir = File::expand_path(pindo_single_config.pindo_dir)
39
+ if !File.exist?(swark_dir)
40
+ FileUtils.mkdir(swark_dir)
41
+ end
42
+
43
+ reponame = get_repo_base_name(repo_url:pindo_single_config.deploy_swark_giturl)
44
+ swark_path = getcode_to_dir(reponame:'swark-toolchain-lite', remote_url:pindo_single_config.deploy_swark_giturl, path:swark_dir)
45
+
46
+ command = File.join(swark_path, 'install')
47
+ system "/bin/chmod 777 #{command}"
48
+ system command
49
+
50
+ swark_exe_dir = File::expand_path("~")
51
+ command = File.join(swark_exe_dir, 'swark-toolchain/tools/swark-upgrade')
52
+ puts command
53
+ system "/bin/chmod 777 #{command}"
54
+ system command
55
+
56
+ end
57
+
58
+
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,56 @@
1
+
2
+ require 'fileutils'
3
+
4
+
5
+
6
+ module Pindo
7
+ class Command
8
+ class Env < Command
9
+ class Workhard < Env
10
+
11
+ self.summary = '切换到 workhard 环境'
12
+
13
+ self.description = <<-DESC
14
+ 切换到 workhard 环境,终端下运行: pindo env workhard
15
+ DESC
16
+
17
+ self.arguments = [
18
+
19
+ ]
20
+
21
+ def self.options
22
+ [
23
+
24
+ ].concat(super)
25
+ end
26
+
27
+ def initialize(argv)
28
+ super(argv)
29
+ @additional_args = argv.remainder!
30
+ end
31
+
32
+ def validate!
33
+
34
+ super
35
+
36
+ end
37
+
38
+ def run
39
+
40
+ clone_pindo_common_config_repo(force_delete:false)
41
+
42
+ pindo_single_config.update_pindo_env(env_name:"workhard_config")
43
+ Pindoconfig.reload_instance
44
+
45
+ pindo_env_dir = pindo_single_config.pindo_env_configdir
46
+ if File.exist?(pindo_env_dir)
47
+ FileUtils.rm_rf(pindo_env_dir)
48
+ end
49
+ clone_pindo_env_config_repo(force_delete:true)
50
+
51
+ end
52
+
53
+ end
54
+ end
55
+ end
56
+ end
data/lib/pindo/env.rb ADDED
@@ -0,0 +1,17 @@
1
+
2
+ require 'pindo/env/dreamstudio'
3
+ require 'pindo/env/workhard'
4
+ # require 'pindo/env/flutter'
5
+ require 'pindo/env/quarkenv'
6
+ require 'pindo/env/swarkenv'
7
+
8
+ module Pindo
9
+ class Command
10
+
11
+ class Env < Command
12
+ self.abstract_command = true
13
+ self.summary = '配置环境的相关命令'
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,188 @@
1
+ require 'highline/import'
2
+ require 'xcodeproj'
3
+ require 'find'
4
+ require 'fileutils'
5
+ require 'pindo/base/executable'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Ipa < Command
10
+ class Autoresign < Ipa
11
+
12
+ include Appselect
13
+
14
+ self.summary = '发布阶段ipa包重签名及上传'
15
+
16
+ self.description = <<-DESC
17
+ 发布阶段ipa包重签名及上传,用法: pindo iap autoresign path/to/demo.ipa --upload --send
18
+ DESC
19
+
20
+ self.arguments = [
21
+ CLAide::Argument.new('path/to/ipa', true),
22
+ ]
23
+
24
+ def self.options
25
+ [
26
+
27
+ ['--ipa', 'iap file name.'],
28
+ ['--proj', '指定哪个项目(忽略大小写空格等等字符): --proj=\"prancksoundv4\"'],
29
+ ['--upload', '编译完成后是否上传ipa到pyger: --upload'],
30
+ ['--send', '上传到pgyer之后是否发送测试信息: --send'],
31
+ ['--ipa', '强制指定重签名的ipa包,用法: --ipa=path/to/demo.ipa'],
32
+ ['--dev', '使用dev证书,默认使用adhoc证书: --dev'],
33
+ ['--test', '使用测试的bundle id, 默认是用发布bundle id,用法:--test'],
34
+ ].concat(super)
35
+ end
36
+
37
+
38
+ def initialize(argv)
39
+
40
+ @args_ipa_file = argv.shift_argument
41
+ @args_set_ipa_name = argv.option('ipa')
42
+ @args_dev_flag = argv.flag?('dev', false)
43
+ @args_test_flag = argv.flag?('test', false)
44
+
45
+ @args_upload_flag = argv.flag?('upload', false)
46
+ @args_send_flag = argv.flag?('send', false)
47
+ @args_proj_name = argv.option('proj')
48
+
49
+ super
50
+ @additional_args = argv.remainder!
51
+ end
52
+
53
+
54
+ def run
55
+
56
+ ipa_file_name = @args_ipa_file
57
+ if !@args_set_ipa_name.nil?
58
+ ipa_file_name = @args_set_ipa_name
59
+ end
60
+
61
+ if !ipa_file_name.nil? && File.exist?(ipa_file_name)
62
+ else
63
+ current_dir = Dir.pwd
64
+ # File.basename(f).include?("_resigned") ? Time.local(0, 0, 0) : File.mtime(f)
65
+ ipa_file_name = Dir.glob(File.join(current_dir, "/*.ipa")).max_by {|f| File.basename(f).include?("_resigned") ? Time.local(0, 1, 1) : File.mtime(f)}
66
+
67
+ end
68
+
69
+ if !ipa_file_name.nil? && File.exist?(ipa_file_name)
70
+ puts
71
+ puts "正在重签名的ipa: #{ipa_file_name}"
72
+ puts "时间: #{File.mtime(ipa_file_name)}"
73
+ puts
74
+ else
75
+ return
76
+ end
77
+
78
+
79
+ mainapp_bundleid = nil
80
+
81
+ if @args_test_flag
82
+ mainapp_bundleid = get_selected_dev_bundleid()
83
+ else
84
+ mainapp_bundleid = get_selected_deploy_bundleid()
85
+ end
86
+ puts "mainapp_bundleid: #{mainapp_bundleid}"
87
+
88
+ args_temp = []
89
+ args_temp << mainapp_bundleid
90
+
91
+ Pindo::Command::Deploy::Pullconfig::run(args_temp)
92
+
93
+ prepare_for_upload()
94
+
95
+ args_temp = []
96
+ if @args_dev_flag
97
+ args_temp << "--dev"
98
+ else
99
+ args_temp << "--adhoc"
100
+ end
101
+
102
+
103
+
104
+ if !ipa_file_name.nil?
105
+
106
+ args_temp << "--ipa=#{ipa_file_name}"
107
+ Pindo::Command::Deploy::Resign::run(args_temp)
108
+
109
+
110
+ ipa_file_name = File::expand_path(ipa_file_name)
111
+ ipa_base_name = File.basename(ipa_file_name, ".ipa")
112
+ ipa_dir = File.dirname(ipa_file_name)
113
+ resign_ipa_name = File.join(ipa_dir, ipa_base_name + "_resigned.ipa")
114
+
115
+ if File.exist?(resign_ipa_name) && (@args_upload_flag || !@args_proj_name.nil?)
116
+ start_upload(pgyer_proj_name:@args_proj_name, ipa_file_upload:resign_ipa_name, description:"提交包重签名", args_send_flag:@args_send_flag)
117
+ end
118
+
119
+ end
120
+
121
+
122
+
123
+ #
124
+ end
125
+
126
+ def prepare_for_upload
127
+
128
+ if @args_upload_flag
129
+ if @args_proj_name.nil?
130
+ xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
131
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
132
+ if !proj_name.nil?
133
+ puts
134
+ answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
135
+ if answer
136
+ @args_proj_name = proj_name
137
+ end
138
+ end
139
+ end
140
+
141
+ @pgyer_client = PgyerClient.new
142
+ app_info_obj = nil
143
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
144
+ if login_success
145
+ PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
146
+ if !@args_proj_name.nil?
147
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
148
+ end
149
+
150
+ if app_info_obj.nil?
151
+ proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
152
+ @args_proj_name = proj_name
153
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
154
+ end
155
+ end
156
+
157
+ if app_info_obj.nil?
158
+ raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
159
+ end
160
+
161
+ end
162
+ end
163
+
164
+ def start_upload(pgyer_proj_name:nil, ipa_file_upload:nil, description:nil, args_send_flag:true)
165
+
166
+ if !pgyer_proj_name.nil? && !ipa_file_upload.nil?
167
+
168
+ args_temp = []
169
+ pgyer_proj_name = pgyer_proj_name.strip.gsub(/ /, '')
170
+ args_temp << "--proj=#{pgyer_proj_name}"
171
+ args_temp << "--ipa=\"#{ipa_file_upload}\""
172
+
173
+ if args_send_flag
174
+ args_temp << "--send"
175
+ end
176
+
177
+ if !description.nil?
178
+ args_temp << "--desc=\"#{description}\""
179
+ end
180
+
181
+ Pindo::Command::Pgyer::Upload::run(args_temp)
182
+ end
183
+ end
184
+
185
+ end
186
+ end
187
+ end
188
+ end