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