pindo 4.6.9 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/aeshelper.rb +48 -2
  3. data/lib/pindo/base/funlog.rb +89 -0
  4. data/lib/pindo/base/githelper.rb +30 -12
  5. data/lib/pindo/base/plaininformative.rb +3 -0
  6. data/lib/pindo/base/standarderror.rb +1 -0
  7. data/lib/pindo/base/xcodeconst.rb +251 -0
  8. data/lib/pindo/client/applovinclient.rb +6 -3
  9. data/lib/pindo/client/aws3sclient.rb +33 -46
  10. data/lib/pindo/client/bossclient.rb +1 -1
  11. data/lib/pindo/client/pgyerclient.rb +78 -14
  12. data/lib/pindo/command/appstore/iap.rb +43 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +41 -0
  14. data/lib/pindo/command/appstore/metadata.rb +43 -0
  15. data/lib/pindo/command/appstore/screenshots.rb +43 -0
  16. data/lib/pindo/command/appstore/upload.rb +40 -0
  17. data/lib/pindo/command/appstore.rb +17 -0
  18. data/lib/pindo/command/deploy/build.rb +109 -0
  19. data/lib/pindo/{deploy → command/deploy}/bundleid.rb +1 -1
  20. data/lib/pindo/command/deploy/cert.rb +179 -0
  21. data/lib/pindo/command/deploy/configproj.rb +105 -0
  22. data/lib/pindo/{deploy → command/deploy}/getitcinfo.rb +1 -1
  23. data/lib/pindo/{deploy → command/deploy}/iap.rb +30 -9
  24. data/lib/pindo/{deploy → command/deploy}/itcapp.rb +0 -1
  25. data/lib/pindo/{deploy → command/deploy}/itcinfo.rb +2 -3
  26. data/lib/pindo/{deploy → command/deploy}/pem.rb +3 -2
  27. data/lib/pindo/{deploy → command/deploy}/resign.rb +14 -63
  28. data/lib/pindo/command/deploy.rb +44 -0
  29. data/lib/pindo/{dev → command/dev}/autobuild.rb +17 -80
  30. data/lib/pindo/{dev → command/dev}/autoresign.rb +17 -64
  31. data/lib/pindo/{dev → command/dev}/createbuild.rb +0 -2
  32. data/lib/pindo/{dev → command/dev}/debug.rb +6 -2
  33. data/lib/pindo/command/dev/pgyercert.rb +75 -0
  34. data/lib/pindo/command/dev.rb +25 -0
  35. data/lib/pindo/command/env.rb +17 -0
  36. data/lib/pindo/{ipa → command/ipa}/autoresign.rb +18 -70
  37. data/lib/pindo/{ipa → command/ipa}/import.rb +47 -102
  38. data/lib/pindo/{ipa → command/ipa}/output.rb +38 -135
  39. data/lib/pindo/command/ipa.rb +16 -0
  40. data/lib/pindo/{lib → command/lib}/update.rb +19 -10
  41. data/lib/pindo/command/lib.rb +16 -0
  42. data/lib/pindo/{pgyer → command/pgyer}/apptest.rb +7 -29
  43. data/lib/pindo/{pgyer → command/pgyer}/comment.rb +7 -30
  44. data/lib/pindo/{pgyer → command/pgyer}/download.rb +35 -30
  45. data/lib/pindo/{pgyer → command/pgyer}/login.rb +3 -4
  46. data/lib/pindo/command/pgyer/resign.rb +111 -0
  47. data/lib/pindo/command/pgyer/upload.rb +123 -0
  48. data/lib/pindo/command/pgyer.rb +18 -0
  49. data/lib/pindo/{repo.rb → command/repo.rb} +4 -4
  50. data/lib/pindo/{utils → command/utils}/applovin.rb +43 -33
  51. data/lib/pindo/{utils → command/utils}/boss.rb +3 -3
  52. data/lib/pindo/command/utils/icon.rb +81 -0
  53. data/lib/pindo/{utils → command/utils}/renewproj.rb +1 -0
  54. data/lib/pindo/command/utils.rb +26 -0
  55. data/lib/pindo/command.rb +23 -26
  56. data/lib/pindo/module/build/swarkhelper.rb +95 -0
  57. data/lib/pindo/module/cert/certhelper.rb +176 -0
  58. data/lib/pindo/module/cert/keychainhelper.rb +138 -0
  59. data/lib/pindo/module/{pemcreate.rb → cert/pemhelper.rb} +3 -1
  60. data/lib/pindo/module/cert/provisioninghelper.rb +137 -0
  61. data/lib/pindo/module/cert/xcodecerthelper.rb +301 -0
  62. data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -35
  63. data/lib/pindo/module/xcode/xcodeappconfig.rb +188 -0
  64. data/lib/pindo/module/xcode/xcodebuildconfig.rb +12 -0
  65. data/lib/pindo/module/xcode/xcodebuildhelper.rb +312 -0
  66. data/lib/pindo/module/xcode/xcoderesconstant.rb +248 -0
  67. data/lib/pindo/module/xcode/xcodereshandler.rb +198 -0
  68. data/lib/pindo/module/xcode/xcodereshelper.rb +120 -0
  69. data/lib/pindo/options/appconfigoptions.rb +1 -0
  70. data/lib/pindo/options/deployoptions.rb +38 -41
  71. data/lib/pindo/version.rb +1 -1
  72. metadata +109 -97
  73. data/lib/pindo/deploy/Fastfile +0 -233
  74. data/lib/pindo/deploy/build.rb +0 -167
  75. data/lib/pindo/deploy/cert.rb +0 -508
  76. data/lib/pindo/deploy/configproj.rb +0 -89
  77. data/lib/pindo/deploy.rb +0 -44
  78. data/lib/pindo/dev.rb +0 -23
  79. data/lib/pindo/env/flutter.rb +0 -59
  80. data/lib/pindo/env/flutter.sh +0 -116
  81. data/lib/pindo/env.rb +0 -17
  82. data/lib/pindo/ipa.rb +0 -22
  83. data/lib/pindo/lib.rb +0 -18
  84. data/lib/pindo/module/buildconfighelper.rb +0 -13
  85. data/lib/pindo/module/buildhelper.rb +0 -76
  86. data/lib/pindo/module/config_project.sh +0 -143
  87. data/lib/pindo/module/configprojhelper.rb +0 -631
  88. data/lib/pindo/module/icon_contents.json +0 -116
  89. data/lib/pindo/module/imessage_icon.json +0 -91
  90. data/lib/pindo/module/imgset_contents.json +0 -21
  91. data/lib/pindo/module/launchimg_contents.json +0 -21
  92. data/lib/pindo/module/xcodebuildpre.rb +0 -258
  93. data/lib/pindo/pgyer/upload.rb +0 -234
  94. data/lib/pindo/pgyer.rb +0 -17
  95. data/lib/pindo/utils/icon.rb +0 -91
  96. data/lib/pindo/utils/icon.sh +0 -133
  97. data/lib/pindo/utils/podindex.rb +0 -56
  98. data/lib/pindo/utils/podindex.sh +0 -30
  99. data/lib/pindo/utils.rb +0 -29
  100. /data/lib/pindo/{deploy → command/deploy}/check.rb +0 -0
  101. /data/lib/pindo/{deploy → command/deploy}/confusecode.rb +0 -0
  102. /data/lib/pindo/{deploy → command/deploy}/confuseproj.rb +0 -0
  103. /data/lib/pindo/{deploy → command/deploy}/fabric.rb +0 -0
  104. /data/lib/pindo/{deploy → command/deploy}/initconfig.rb +0 -0
  105. /data/lib/pindo/{deploy → command/deploy}/pullconfig.rb +0 -0
  106. /data/lib/pindo/{deploy → command/deploy}/pushconfig.rb +0 -0
  107. /data/lib/pindo/{deploy → command/deploy}/quswark.rb +0 -0
  108. /data/lib/pindo/{deploy → command/deploy}/quswauth.rb +0 -0
  109. /data/lib/pindo/{deploy → command/deploy}/reportbug.rb +0 -0
  110. /data/lib/pindo/{deploy → command/deploy}/tag.rb +0 -0
  111. /data/lib/pindo/{deploy → command/deploy}/updateconfig.rb +0 -0
  112. /data/lib/pindo/{deploy → command/deploy}/uploadipa.rb +0 -0
  113. /data/lib/pindo/{dev → command/dev}/confusecode.rb +0 -0
  114. /data/lib/pindo/{dev → command/dev}/confuseproj.rb +0 -0
  115. /data/lib/pindo/{dev → command/dev}/pub.rb +0 -0
  116. /data/lib/pindo/{dev → command/dev}/renewcert.rb +0 -0
  117. /data/lib/pindo/{env → command/env}/dreamstudio.rb +0 -0
  118. /data/lib/pindo/{env → command/env}/quarkenv.rb +0 -0
  119. /data/lib/pindo/{env → command/env}/swarkenv.rb +0 -0
  120. /data/lib/pindo/{env → command/env}/workhard.rb +0 -0
  121. /data/lib/pindo/{lib → command/lib}/forcepush.rb +0 -0
  122. /data/lib/pindo/{lib → command/lib}/lint.rb +0 -0
  123. /data/lib/pindo/{lib → command/lib}/push.rb +0 -0
  124. /data/lib/pindo/{repo → command/repo}/clone.rb +0 -0
  125. /data/lib/pindo/{repo → command/repo}/create.rb +0 -0
  126. /data/lib/pindo/{repo → command/repo}/login.rb +0 -0
  127. /data/lib/pindo/{repo → command/repo}/search.rb +0 -0
  128. /data/lib/pindo/{setup.rb → command/setup.rb} +0 -0
  129. /data/lib/pindo/{upgrade.rb → command/upgrade.rb} +0 -0
  130. /data/lib/pindo/{utils → command/utils}/clearcert.rb +0 -0
  131. /data/lib/pindo/{utils → command/utils}/device.rb +0 -0
  132. /data/lib/pindo/{utils → command/utils}/tgate.rb +0 -0
  133. /data/lib/pindo/{utils → command/utils}/xcassets.rb +0 -0
  134. /data/lib/pindo/{utils → command/utils}/xcassets.sh +0 -0
  135. /data/lib/pindo/module/{appstore_in_app_purchase.rb → appstore/appstore_in_app_purchase.rb} +0 -0
  136. /data/lib/pindo/module/{appstore_metadata_connect_api_helper.rb → appstore/appstore_metadata_connect_api_helper.rb} +0 -0
  137. /data/lib/pindo/module/{appstore_metadata_fastlane_helper.rb → appstore/appstore_metadata_fastlane_helper.rb} +0 -0
  138. /data/lib/pindo/module/{iap_tier.json → appstore/iap_tier.json} +0 -0
  139. /data/lib/pindo/module/{commonconfuseproj.rb → build/commonconfuseproj.rb} +0 -0
  140. /data/lib/pindo/module/{xcodehelper.rb → xcode/xcodehelper.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 78cbf0c3494294a495f70d4d68732ab4d7fcb111efb47c13832bcc5570fdda49
4
- data.tar.gz: 9b6072f6a35def3e42a09f36796bbe4a4999e2157d76225864ba3325a55d6d1c
3
+ metadata.gz: 4c7daab6ca92e2942ae682695e06ea741b5cb2ae45804dd9af94bdacc59a49cf
4
+ data.tar.gz: d237736dfdf676455395a85590142ac30ab8604cd8dd2636577582b48d1da389
5
5
  SHA512:
6
- metadata.gz: cb6837bd54cd72e830010a5d263437913af930b6c3e9ce1c15ee9450a0699fa58e74b3cc14de69f6979efd147b051536d4698e36eebecfa47c6b6d6c97f5f731
7
- data.tar.gz: 44b8eefc1b54857a60f20a72026f790bf134110976b97415dee6419086336cd7f30472cccdc37b7dda501a878609a279d55dbd5f8c9ca21eb99cf47dc773eb8e
6
+ metadata.gz: d5dc55d34adbd57fd5fa0d0d5268418f88b5fe019e2f1f33c9f5dd19016e15ff3ce00272966c76d6a90b8b68af2eb0d40f49f700990010557abbad69e3338bdf
7
+ data.tar.gz: f6d9f58c141d0a0b2702f84f34745315b821d59d04f59f8a61c963c6cfc8497b3532455d344e65f73cdfbccd7282cb84166ee5dd46517e5f47c7463a003f36d3
@@ -1,11 +1,11 @@
1
+ require 'openssl'
2
+
1
3
  module Pindo
2
4
 
3
5
 
4
6
  module AESHelper
5
7
 
6
8
 
7
-
8
-
9
9
  def self.aes_128_ecb_encrypt(key, encrypted_string)
10
10
  cipher = OpenSSL::Cipher::Cipher.new('AES-128-ECB')
11
11
  cipher.encrypt
@@ -24,6 +24,52 @@ module Pindo
24
24
  end
25
25
 
26
26
 
27
+ def self.encrypt_specific_file(src_file: nil, password: nil, output_dir: nil)
28
+ UI.user_error!("No password supplied") if password.to_s.strip.length == 0
29
+
30
+ data_to_encrypt = File.binread(path)
31
+ salt = SecureRandom.random_bytes(8)
32
+
33
+ # The :: is important, as there is a name clash
34
+ cipher = ::OpenSSL::Cipher.new('AES-256-CBC')
35
+ cipher.encrypt
36
+ cipher.pkcs5_keyivgen(password, salt, 1, "MD5")
37
+ encrypted_data = "Salted__" + salt + cipher.update(data_to_encrypt) + cipher.final
38
+
39
+ destfile = File.join(output_dir, File.basename(src_file))
40
+ File.write(destfile, Base64.encode64(encrypted_data))
41
+ return destfile
42
+ rescue error
43
+ puts path
44
+ raise Informative, error
45
+ end
46
+
47
+ # The encryption parameters in this implementations reflect the old behavior which depended on the users' local OpenSSL version
48
+ # 1.0.x OpenSSL and earlier versions use MD5, 1.1.0c and newer uses SHA256, we try both before giving an error
49
+ def self.decrypt_specific_file(src_file: nil, password: nil, output_dir: nil, hash_algorithm: "MD5")
50
+
51
+ begin
52
+ stored_data = Base64.decode64(File.read(src_file))
53
+ salt = stored_data[8..15]
54
+ data_to_decrypt = stored_data[16..-1]
55
+
56
+ decipher = ::OpenSSL::Cipher.new('AES-256-CBC')
57
+ decipher.decrypt
58
+ decipher.pkcs5_keyivgen(password, salt, 1, hash_algorithm)
59
+
60
+ decrypted_data = decipher.update(data_to_decrypt) + decipher.final
61
+ destfile = File.join(output_dir, File.basename(src_file))
62
+ File.binwrite(destfile, decrypted_data)
63
+ return destfile
64
+ rescue => error
65
+ fallback_hash_algorithm = "SHA256"
66
+ if hash_algorithm != fallback_hash_algorithm
67
+ decrypt_specific_file(src_file: src_file, password: password, hash_algorithm: fallback_hash_algorithm)
68
+ else
69
+ raise Informative, "Couldn't decrypt the repo, please make sure you enter the right password!"
70
+ end
71
+ end
72
+ end
27
73
 
28
74
  end
29
75
 
@@ -0,0 +1,89 @@
1
+ require "tty-spinner"
2
+
3
+ module Pindo
4
+
5
+ class Funlog
6
+
7
+
8
+ def create_spinner(info_key:nil)
9
+ # spinner = TTY::Spinner.new("[:spinner] :#{info_key}", format: :dots_2, error_mark: "❌", success_mark: "✅")
10
+ spinner = TTY::Spinner.new("[:spinner] :#{info_key}", format: :dots_2, error_mark: "❌")
11
+ spinner
12
+ end
13
+
14
+ def spinner_log_handle
15
+ if @spinner_log.nil?
16
+ @spinner_log = create_spinner(info_key:"title")
17
+ end
18
+ @spinner_log
19
+ end
20
+
21
+
22
+
23
+ def fancyinfo_start(*args)
24
+ message = args.join(" ")
25
+ spinner_log_handle.update(title:message)
26
+ spinner_log_handle.auto_spin
27
+ @spinner_log
28
+ end
29
+
30
+
31
+ def fancyinfo_update(*args)
32
+ message = args.join(" ")
33
+ spinner_log_handle.update(title:message)
34
+ spinner_log_handle.spin
35
+ @spinner_log
36
+ end
37
+
38
+ def fancyinfo_success(*args)
39
+ message = args.join(" ")
40
+ spinner_log_handle.update(title:message)
41
+ spinner_log_handle.success
42
+ @spinner_log =nil
43
+ end
44
+
45
+ def fancyinfo_error(*args)
46
+ message = args.join(" ")
47
+ spinner_log_handle.update(title:message)
48
+ spinner_log_handle.error
49
+ @spinner_log =nil
50
+ end
51
+
52
+ #-------------------------------------------------------------------------#
53
+ #-------------------------------------------------------------------------#
54
+ # @!group Singleton
55
+
56
+ # @return [Config] the current config instance creating one if needed.
57
+ #
58
+ def self.reload_instance
59
+ @instance = new
60
+ end
61
+
62
+ def self.instance
63
+ @instance ||= new
64
+ end
65
+
66
+ # Sets the current config instance. If set to nil the config will be
67
+ # recreated when needed.
68
+ #
69
+ # @param [Config, Nil] the instance.
70
+ #
71
+ # @return [void]
72
+ #
73
+ class << self
74
+ attr_writer :instance
75
+ end
76
+
77
+ # Provides support for accessing the configuration instance in other
78
+ # scopes.
79
+ #
80
+ module Mixin
81
+ def pindo_log_instance
82
+ Funlog.instance
83
+ end
84
+ end
85
+
86
+ end
87
+
88
+
89
+ end
@@ -199,6 +199,11 @@ module Pindo
199
199
  def git_latest_commit_id(local_repo_dir:nil)
200
200
 
201
201
  current=Dir.pwd
202
+
203
+ unless File.exist?(File::join(local_repo_dir, ".git"))
204
+ return nil
205
+ end
206
+
202
207
  commit_id = nil
203
208
 
204
209
  if File.exist?(local_repo_dir)
@@ -218,13 +223,14 @@ module Pindo
218
223
 
219
224
  def getcode_to_dir(reponame:nil, remote_url:nil, path: nil, new_branch:"master", new_tag: nil)
220
225
 
221
- current=Dir.pwd
222
- # puts reponame
223
- # puts remote_url
224
- # puts path
226
+ current=Dir.pwd
227
+ local_repo_dir = File::join(path, reponame)
228
+
229
+ Funlog.instance.fancyinfo_start("开始更新仓库:#{local_repo_dir}...")
230
+
231
+ begin
232
+
225
233
 
226
- local_repo_dir = File::join(path, reponame)
227
- puts "正在更新仓库: #{local_repo_dir}"
228
234
  if !reponame.empty? && !remote_url.empty? && !path.empty?
229
235
 
230
236
  if File.exist?(local_repo_dir)
@@ -279,9 +285,17 @@ module Pindo
279
285
  end
280
286
 
281
287
  end
288
+
289
+ Funlog.instance.fancyinfo_success("仓库#{local_repo_dir}更新完成!")
290
+ rescue StandardError => e
282
291
 
283
- Dir.chdir(current)
284
- return local_repo_dir
292
+ Funlog.instance.fancyinfo_error("仓库#{local_repo_dir}更新失败!")
293
+
294
+ raise Informative, e.to_s
295
+ end
296
+
297
+ Dir.chdir(current)
298
+ return local_repo_dir
285
299
  end
286
300
 
287
301
  def get_repo_base_name(repo_url:nil)
@@ -294,6 +308,7 @@ module Pindo
294
308
 
295
309
  def clong_buildconfig_repo(repo_name:nil)
296
310
 
311
+
297
312
  pindo_dir = File::expand_path(Pindoconfig.instance.pindo_dir)
298
313
  if !File.exist?(pindo_dir)
299
314
  FileUtils.mkdir(pindo_dir)
@@ -310,6 +325,9 @@ module Pindo
310
325
  url = File.join("https://gitee.com", repo_org_name, repo_name + ".git")
311
326
  getcode_to_dir(reponame:repo_name, remote_url: url, path:pindo_dir)
312
327
  config_repo_dir = File.join(pindo_dir, repo_name)
328
+
329
+
330
+
313
331
  return config_repo_dir
314
332
  end
315
333
 
@@ -390,12 +408,12 @@ module Pindo
390
408
  git! ['commit', '-m ' + "#{message}"]
391
409
  git! ['push']
392
410
  else
393
- puts "\n#{path}\n!!!仓库中文件未发生变化,无需提交!!!\n"
411
+ # puts "\n#{path}\n!!!仓库中文件未发生变化,无需提交!!!\n"
394
412
  end
395
413
  else
396
414
  files_list = git! ['ls-files', '--other', '--modified', '--exclude-standard'] || []
397
- puts "提交如下内容:"
398
- puts files_list
415
+ # puts "提交如下内容:"
416
+ # puts files_list
399
417
  if !files_list.nil? && files_list.size > 0
400
418
  git! ['add', '-A']
401
419
  git! ['commit', '-m ' + "#{message}"]
@@ -406,7 +424,7 @@ module Pindo
406
424
  end
407
425
 
408
426
  rescue => error
409
- puts(error.to_s)
427
+ # puts(error.to_s)
410
428
  raise Informative, "\n#{path}\n 仓库失败 !!!"
411
429
  end
412
430
 
@@ -1,3 +1,6 @@
1
+ require 'pindo/base/standarderror'
2
+
3
+
1
4
  module Pindo
2
5
 
3
6
  require 'claide'
@@ -1,3 +1,4 @@
1
+
1
2
  module Pindo
2
3
 
3
4
  require 'pindo/version'
@@ -0,0 +1,251 @@
1
+ require 'openssl'
2
+
3
+ module Pindo
4
+
5
+
6
+ module XcodoeConst
7
+
8
+ def self.xcode_ios_icon_json
9
+ model_data = {
10
+ "images" => [
11
+ {
12
+ "size" => "20x20",
13
+ "idiom" => "iphone",
14
+ "filename" => "icon20@2x.png",
15
+ "scale" => "2x"
16
+ },
17
+ {
18
+ "size" => "20x20",
19
+ "idiom" => "iphone",
20
+ "filename" => "icon20@3x.png",
21
+ "scale" => "3x"
22
+ },
23
+ {
24
+ "size" => "29x29",
25
+ "idiom" => "iphone",
26
+ "filename" => "icon29@2x.png",
27
+ "scale" => "2x"
28
+ },
29
+ {
30
+ "size" => "29x29",
31
+ "idiom" => "iphone",
32
+ "filename" => "icon29@3x.png",
33
+ "scale" => "3x"
34
+ },
35
+ {
36
+ "size" => "40x40",
37
+ "idiom" => "iphone",
38
+ "filename" => "icon40@2x.png",
39
+ "scale" => "2x"
40
+ },
41
+ {
42
+ "size" => "40x40",
43
+ "idiom" => "iphone",
44
+ "filename" => "icon40@3x.png",
45
+ "scale" => "3x"
46
+ },
47
+ {
48
+ "size" => "60x60",
49
+ "idiom" => "iphone",
50
+ "filename" => "icon60@2x.png",
51
+ "scale" => "2x"
52
+ },
53
+ {
54
+ "size" => "60x60",
55
+ "idiom" => "iphone",
56
+ "filename" => "icon60@3x.png",
57
+ "scale" => "3x"
58
+ },
59
+ {
60
+ "size" => "20x20",
61
+ "idiom" => "ipad",
62
+ "filename" => "icon20@1x.png",
63
+ "scale" => "1x"
64
+ },
65
+ {
66
+ "size" => "20x20",
67
+ "idiom" => "ipad",
68
+ "filename" => "icon20@2x.png",
69
+ "scale" => "2x"
70
+ },
71
+ {
72
+ "size" => "29x29",
73
+ "idiom" => "ipad",
74
+ "filename" => "icon29@1x.png",
75
+ "scale" => "1x"
76
+ },
77
+ {
78
+ "size" => "29x29",
79
+ "idiom" => "ipad",
80
+ "filename" => "icon29@2x.png",
81
+ "scale" => "2x"
82
+ },
83
+ {
84
+ "size" => "40x40",
85
+ "idiom" => "ipad",
86
+ "filename" => "icon40@1x.png",
87
+ "scale" => "1x"
88
+ },
89
+ {
90
+ "size" => "40x40",
91
+ "idiom" => "ipad",
92
+ "filename" => "icon40@2x.png",
93
+ "scale" => "2x"
94
+ },
95
+ {
96
+ "size" => "76x76",
97
+ "idiom" => "ipad",
98
+ "filename" => "icon76@1x.png",
99
+ "scale" => "1x"
100
+ },
101
+ {
102
+ "size" => "76x76",
103
+ "idiom" => "ipad",
104
+ "filename" => "icon76@2x.png",
105
+ "scale" => "2x"
106
+ },
107
+ {
108
+ "size" => "83.5x83.5",
109
+ "idiom" => "ipad",
110
+ "filename" => "icon83_5@2x.png",
111
+ "scale" => "2x"
112
+ },
113
+ {
114
+ "size" => "1024x1024",
115
+ "idiom" => "ios-marketing",
116
+ "filename" => "icon1024@1x.png",
117
+ "scale" => "1x"
118
+ }
119
+ ],
120
+ "info" => {
121
+ "version" => 1,
122
+ "author" => "xcode"
123
+ }
124
+ }
125
+ return model_data
126
+ end
127
+
128
+ def self.xcode_ios_imessage_icon_json
129
+ model_data = {
130
+ "images" => [
131
+ {
132
+ "size" => "29x29",
133
+ "idiom" => "iphone",
134
+ "filename" => "icon29@2x.png",
135
+ "scale" => "2x"
136
+ },
137
+ {
138
+ "size" => "29x29",
139
+ "idiom" => "iphone",
140
+ "filename" => "icon29@3x.png",
141
+ "scale" => "3x"
142
+ },
143
+ {
144
+ "size" => "60x45",
145
+ "idiom" => "iphone",
146
+ "filename" => "icon60_45@2x.png",
147
+ "scale" => "2x"
148
+ },
149
+ {
150
+ "size" => "60x45",
151
+ "idiom" => "iphone",
152
+ "filename" => "icon60_45@3x.png",
153
+ "scale" => "3x"
154
+ },
155
+ {
156
+ "size" => "29x29",
157
+ "idiom" => "ipad",
158
+ "filename" => "icon29@2x.png",
159
+ "scale" => "2x"
160
+ },
161
+ {
162
+ "size" => "67x50",
163
+ "idiom" => "ipad",
164
+ "filename" => "icon67_50@2x.png",
165
+ "scale" => "2x"
166
+ },
167
+ {
168
+ "size" => "74x55",
169
+ "idiom" => "ipad",
170
+ "filename" => "icon74_55@2x.png",
171
+ "scale" => "2x"
172
+ },
173
+ {
174
+ "size" => "1024x1024",
175
+ "idiom" => "ios-marketing",
176
+ "filename" => "icon1024@1x.png",
177
+ "scale" => "1x"
178
+ },
179
+ {
180
+ "size" => "27x20",
181
+ "idiom" => "universal",
182
+ "filename" => "icon27_20@2x.png",
183
+ "scale" => "2x",
184
+ "platform" => "ios"
185
+ },
186
+ {
187
+ "size" => "27x20",
188
+ "idiom" => "universal",
189
+ "filename" => "icon27_20@3x.png",
190
+ "scale" => "3x",
191
+ "platform" => "ios"
192
+ },
193
+ {
194
+ "size" => "32x24",
195
+ "idiom" => "universal",
196
+ "filename" => "icon32_24@2x.png",
197
+ "scale" => "2x",
198
+ "platform" => "ios"
199
+ },
200
+ {
201
+ "size" => "32x24",
202
+ "idiom" => "universal",
203
+ "filename" => "icon32_24@3x.png",
204
+ "scale" => "3x",
205
+ "platform" => "ios"
206
+ },
207
+ {
208
+ "size" => "1024x768",
209
+ "idiom" => "ios-marketing",
210
+ "filename" => "icon1024_768@1x.png",
211
+ "scale" => "1x",
212
+ "platform" => "ios"
213
+ }
214
+ ],
215
+ "info" => {
216
+ "version" => 1,
217
+ "author" => "xcode"
218
+ }
219
+ }
220
+ return model_data
221
+ end
222
+
223
+
224
+
225
+ XCODE_IOS_LAUNCHIMG_JSON = {
226
+ "images" => [
227
+ {
228
+ "idiom" => "universal",
229
+ "scale" => "1x"
230
+ },
231
+ {
232
+ "idiom" => "universal",
233
+ "filename" => "w768_h1024@2x.png",
234
+ "scale" => "2x"
235
+ },
236
+ {
237
+ "idiom" => "universal",
238
+ "scale" => "3x"
239
+ }
240
+ ],
241
+ "info" => {
242
+ "version" => 1,
243
+ "author" => "xcode"
244
+ }
245
+ }
246
+
247
+
248
+ end
249
+
250
+
251
+ end
@@ -113,8 +113,11 @@ module Pindo
113
113
  result_data = JSON.parse(res.body)
114
114
 
115
115
  end
116
- puts JSON.pretty_generate(result_data)
116
+ # puts JSON.pretty_generate(result_data)
117
+
118
+ # return result_data
117
119
 
120
+ return nil
118
121
  end
119
122
 
120
123
 
@@ -144,9 +147,9 @@ module Pindo
144
147
  if !res.body.nil?
145
148
  result_data = JSON.parse(res.body)
146
149
  end
147
- puts JSON.pretty_generate(result_data)
150
+ # puts JSON.pretty_generate(result_data)
148
151
 
149
- return result_data
152
+ return nil
150
153
 
151
154
  end
152
155
 
@@ -2,9 +2,9 @@
2
2
  require 'uri'
3
3
  require 'json'
4
4
  require 'faraday'
5
- require 'pindo/base/aeshelper'
6
5
  require "aws-sdk-s3"
7
6
  require 'securerandom'
7
+ require 'pindo/base/aeshelper'
8
8
 
9
9
  module Pindo
10
10
 
@@ -115,64 +115,51 @@ module Pindo
115
115
  object_key = upload_path + file_uuid + extension
116
116
 
117
117
  puts "上传路径: #{object_key}"
118
-
118
+ puts
119
+
119
120
  upload_result = nil
121
+
122
+
123
+ Funlog.instance.fancyinfo_start("开始上传...")
124
+
120
125
  begin
121
-
122
-
123
- obj = Aws::S3::Object.new(@bucket_name, object_key)
124
126
 
125
- progress = Proc.new do |bytes, totals|
126
- set_progress(bytes.sum, totals.sum)
127
+ obj = Aws::S3::Object.new(@bucket_name, object_key)
128
+ progress = Proc.new do |bytes, totals|
129
+ set_progress(bytes.sum, totals.sum)
130
+ end
131
+
132
+ if isAttach
133
+ obj.upload_file(binary_file, progress_callback: progress, content_disposition:content_disposition)
134
+ else
135
+ obj.upload_file(binary_file, progress_callback: progress)
136
+ end
137
+
138
+ upload_result = object_key
139
+
140
+ Funlog.instance.fancyinfo_success(@upload_message)
141
+ Funlog.instance.fancyinfo_success("#{binary_file} 上传成功!")
142
+ rescue => ex
143
+ Funlog.instance.fancyinfo_error("#{binary_file} 上传失败!")
127
144
  end
128
-
129
-
130
- if isAttach
131
- puts
132
- puts "正在上传附件..."
133
- obj.upload_file(binary_file, progress_callback: progress, content_disposition:content_disposition)
134
- else
135
- puts
136
- puts "正在上传安装包..."
137
- obj.upload_file(binary_file, progress_callback: progress)
138
- end
139
-
140
- upload_result = object_key
141
-
142
- # bucket = find_bucket!()
143
- # details = {
144
- # # acl: 'private'
145
- # key: object_key,
146
- # body: bytes
147
- # }
148
- # obj = bucket.put_object(details)
149
- # # When you enable versioning on a S3 bucket,
150
- # # writing to an object will create an object version
151
- # # instead of replacing the existing object.
152
- # # http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
153
- # if obj.kind_of?(Aws::S3::ObjectVersion)
154
- # obj = obj.object
155
- # end
156
-
157
- # # Return public url
158
- # puts obj.public_url.to_s
159
- # upload_result = object_key
160
- rescue => ex
161
- puts ex.to_s
162
- puts "Upload S3 failed !!!"
163
- end
164
145
 
165
146
  return upload_result
166
147
  end
167
148
 
168
149
 
169
- def set_progress(index_num, total_num, char = '=')
150
+ def set_progress(index_num, total_num, char ='>' )
170
151
  progress_str = sprintf("%.2f", 100.0 * index_num / total_num )
171
152
  total_size = sprintf("%.2f", 1.00 * total_num / 1024 /1024 )
172
153
  index = 100.0 * index_num / total_num
173
154
 
174
- $stdout.print " 已上传: #{progress_str} \% ", (char * (index/1).floor).ljust(100, ' '), " Total: #{total_size} M \r"
175
- $stdout.flush
155
+ # (char * (index/1).floor).ljust(100, ' ')
156
+
157
+ upload_message = "已下载:#{progress_str}\%【" + (char * (index/1).floor).ljust(100, '_') + "】Total: #{total_size} M"
158
+ @upload_message = upload_message
159
+ Funlog.instance.fancyinfo_update(upload_message)
160
+ # @spinner.reset
161
+ # $stdout.print " 已上传: #{progress_str} \% ", (char * (index/1).floor).ljust(100, ' '), " Total: #{total_size} M \r"
162
+ # $stdout.flush
176
163
  # print " 已上传: #{progress_str} \% ", (char * (index/1).floor).ljust(100, ' '), " Total: #{total_size} M \r"
177
164
  # $stdout.flush
178
165
  end
@@ -24,7 +24,7 @@ module Pindo
24
24
  attr_accessor :base_url
25
25
 
26
26
 
27
- def initialize(app_type:"FancyApp", is_dev:true, base_url:nil)
27
+ def initialize(app_type:"FunnyApp", is_dev:true, base_url:nil)
28
28
 
29
29
  #
30
30
  @app_type = app_type