pindo 4.6.9 → 4.7.0

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