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,279 @@
1
+
2
+ require 'highline/import'
3
+ require 'fileutils'
4
+ require 'json'
5
+ require 'csv'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Utils < Command
10
+ class Device < Utils
11
+
12
+ self.summary = '同步开发者账号中测试设备udid'
13
+
14
+ self.description = <<-DESC
15
+ 同步开发者账号中测试设备udid
16
+ DESC
17
+
18
+ class DeviceItem
19
+
20
+ attr_accessor :name
21
+ attr_accessor :udid
22
+ attr_accessor :platform
23
+ attr_accessor :device_type
24
+ attr_accessor :device_model
25
+
26
+ attr_accessor :device_description
27
+ end
28
+
29
+
30
+
31
+ self.arguments = [
32
+
33
+ ]
34
+
35
+ def self.options
36
+ [
37
+
38
+ ].concat(super)
39
+ end
40
+
41
+ def initialize(argv)
42
+
43
+ super(argv)
44
+ @additional_args = argv.remainder!
45
+ end
46
+
47
+ def validate!
48
+ super
49
+ end
50
+
51
+ def run
52
+
53
+ login
54
+ fetch_device
55
+
56
+
57
+ end
58
+
59
+
60
+ def login
61
+ Spaceship::Portal.login(pindo_single_config.demo_apple_id)
62
+ Spaceship::Portal.select_team
63
+ end
64
+
65
+ def fetch_device
66
+
67
+
68
+ devices = Spaceship::Portal.device.all(include_disabled: true).select do |device|
69
+ device.enabled?
70
+ end
71
+ mac_disabled_devices = Spaceship::Portal.device.all(mac: true, include_disabled: true).select do |device|
72
+ device.enabled?
73
+ end
74
+
75
+ my_total_devices = {}
76
+
77
+ devices.each do |item|
78
+ device_item = DeviceItem.new
79
+ device_item.name = item.name
80
+ device_item.name = device_item.name.downcase
81
+ device_item.udid = item.udid
82
+ device_item.platform = item.platform
83
+ device_item.device_model = item.model
84
+ device_item.device_type = item.device_type
85
+
86
+ device_item.device_description = ""
87
+ my_total_devices[item.udid] = device_item
88
+ end
89
+
90
+ mac_disabled_devices.each do |item|
91
+ # puts item
92
+ device_item = DeviceItem.new
93
+ device_item.name = item.name
94
+ device_item.name = device_item.name.downcase
95
+ device_item.udid = item.udid
96
+ device_item.platform = item.platform
97
+ device_item.device_model = item.model
98
+ device_item.device_type = item.device_type
99
+ device_item.device_description = ""
100
+ my_total_devices[item.udid] = device_item
101
+ end
102
+
103
+
104
+
105
+ use_devices = read_user_csv()
106
+
107
+ use_devices.each do |key, item|
108
+ if !my_total_devices[key].nil?
109
+
110
+ if !item.device_description.nil?
111
+ my_total_devices[key].device_description = item.device_description
112
+ end
113
+ if my_total_devices[key].device_description.nil? || my_total_devices[key].device_description.eql?("")
114
+ my_total_devices[key].device_description = item.name.to_s.downcase
115
+ end
116
+
117
+ if my_total_devices[key].device_model.nil? || my_total_devices[key].device_model.eql?("")
118
+ my_total_devices[key].device_model = item.device_model
119
+
120
+ end
121
+ if my_total_devices[key].device_model.nil? || my_total_devices[key].device_model.eql?("")
122
+ my_total_devices[key].device_model = item.name.to_s.downcase
123
+ end
124
+ end
125
+ end
126
+
127
+
128
+
129
+
130
+ pgyer_devices = read_apppgyer_csv()
131
+ pgyer_devices.each do |key, item|
132
+ if !my_total_devices[key].nil?
133
+
134
+ if !item.device_description.nil?
135
+ my_total_devices[key].device_description = item.device_description
136
+ end
137
+ end
138
+ end
139
+
140
+
141
+ # my_total_devices = read_user_csv()
142
+
143
+
144
+ write_appstore_text(devices:my_total_devices)
145
+ # write_user_csv(devices:my_total_devices)
146
+ write_apppgyer_csv(devices:my_total_devices)
147
+
148
+ end
149
+
150
+ def write_appstore_text(devices:nil)
151
+
152
+ device_file = File.join(Dir.pwd, "new_devices_list.txt");
153
+
154
+ str_text = String.new
155
+ str_text = "DEVICE ID\tDEVICE NAME\tDEVICE PLATFORM\n"
156
+ devices.each do |key, device|
157
+ if device.platform.nil? || !(device.platform.to_s.eql?("ios") || device.platform.to_s.eql?("mac"))
158
+ if device.device_type.to_s.downcase!.eql?("mac")
159
+ device.platform = "mac"
160
+ else
161
+ device.platform = "ios"
162
+ end
163
+ end
164
+ str = String.new
165
+ str = str + device.udid
166
+ str = str + "\t"
167
+ str = str + device.name
168
+ str = str + "\t"
169
+ str = str + device.platform
170
+ str = str + "\n"
171
+ str_text = str_text + str
172
+ end
173
+
174
+ File.open(device_file, "w") do |f|
175
+ f.write(str_text)
176
+ end
177
+ end
178
+
179
+ def write_apppgyer_csv(devices:nil)
180
+
181
+ device_file = File.join(Dir.pwd, "new_pgyer_devices_list.csv");
182
+
183
+ devices.each do |key, item|
184
+ if item.device_type.to_s.eql?("ipad")
185
+ item.device_type = "iPad"
186
+ elsif item.device_type.to_s.eql?("iphone")
187
+ item.device_type = "iPhone"
188
+ elsif item.device_type.to_s.eql?("watch")
189
+ item.device_type = "Apple Watch"
190
+ elsif item.device_type.to_s.eql?("appleSiliconMac")
191
+ item.device_type = "Mac"
192
+ elsif item.device_type.to_s.eql?("mac")
193
+ item.device_type = "Mac"
194
+ end
195
+ end
196
+
197
+
198
+ CSV.open(device_file, "wb") do |csv|
199
+ csv << ["型号", "udid", "设备类型", "设备名称", "备注", "udid来源", "添加时间"]
200
+
201
+ devices.each do |key, device|
202
+ csv << [device.device_model,device.udid,device.device_type,device.name ,device.device_description]
203
+ end
204
+ end
205
+ end
206
+
207
+
208
+ def read_apppgyer_csv()
209
+
210
+ devices = {}
211
+
212
+
213
+ device_file = File.join(Dir.pwd, "pgyer_devices_list.csv");
214
+ if File.exist?(device_file)
215
+ line_num=0
216
+ CSV.foreach(device_file, headers:false) do |row|
217
+ if line_num > 0
218
+ device_item = DeviceItem.new
219
+ device_item.device_model = row[0]
220
+ device_item.udid = row[1]
221
+ device_item.device_type = row[2]
222
+ device_item.name = row[3]
223
+ device_item.device_description = row[4]
224
+ devices[device_item.udid] = device_item
225
+ end
226
+ line_num += 1
227
+ end
228
+ end
229
+
230
+
231
+ return devices
232
+
233
+ end
234
+
235
+
236
+ def write_user_csv(devices:nil)
237
+
238
+ device_file = File.join(Dir.pwd, "new_user_devices_list.csv");
239
+
240
+ CSV.open(device_file, "wb") do |csv|
241
+ csv << ["设备名称", "udid", "设备类型", "型号", "备注"]
242
+
243
+ devices.each do |key, device|
244
+ csv << [device.name,device.udid,device.device_type,device.device_model ,device.device_description]
245
+ end
246
+ end
247
+ end
248
+
249
+ def read_user_csv()
250
+
251
+ devices = {}
252
+
253
+ device_file = File.join(Dir.pwd, "user_devices_list.csv");
254
+
255
+ if File.exist?(device_file)
256
+ puts 1111
257
+ line_num=0
258
+ CSV.foreach(device_file, headers:false) do |row|
259
+ if line_num > 0
260
+ device_item = DeviceItem.new
261
+ device_item.name = row[0]
262
+ device_item.udid = row[1]
263
+ device_item.device_type = row[2]
264
+ device_item.device_model = row[3]
265
+ device_item.device_description = row[4]
266
+ devices[device_item.udid] = device_item
267
+ end
268
+ line_num += 1
269
+ end
270
+ end
271
+ # puts devices
272
+ return devices
273
+
274
+ end
275
+
276
+ end
277
+ end
278
+ end
279
+ end
@@ -0,0 +1,91 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'json'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Utils < Command
10
+ class Icon < Utils
11
+
12
+ self.summary = '根据1024*1024icon生成Xcode标准icon文件'
13
+
14
+ self.description = <<-DESC
15
+ 根据1024*1024icon生成Xcode标准icon文件,用法:pindo utils icon path/to/demo.png
16
+ DESC
17
+
18
+
19
+ self.arguments = [
20
+ CLAide::Argument.new('path/to/demo.png', true),
21
+ ]
22
+
23
+ def self.options
24
+ [
25
+
26
+ ].concat(super)
27
+ end
28
+
29
+ def initialize(argv)
30
+ @icon_name = argv.shift_argument
31
+ super(argv)
32
+ @additional_args = argv.remainder!
33
+ end
34
+
35
+ def validate!
36
+ super
37
+
38
+ help! 'Need a icon name' if @icon_name.nil? || @icon_name.empty?
39
+
40
+ end
41
+
42
+ def run
43
+ utils_icon()
44
+ end
45
+
46
+ def utils_icon
47
+
48
+ imessage_icon_dir = File.dirname(@icon_name)
49
+ imessage_icon = File.join(imessage_icon_dir, "icon1024_768.png")
50
+
51
+
52
+ time = Time.now.strftime('%m%d-%H%M%S')
53
+ new_icon_dir = File.join(Dir.pwd, "icon_"+time)
54
+
55
+ if File.exist?(imessage_icon)
56
+ command = 'sh ' + File.join(File.expand_path('./', __dir__), 'icon.sh') + ' -i "' + @icon_name+ '" -a "' + imessage_icon + '" -o "' + new_icon_dir + '"'
57
+ else
58
+ command = 'sh ' + File.join(File.expand_path('./', __dir__), 'icon.sh') + ' -i "' + @icon_name+ '" -o "' + new_icon_dir + '"'
59
+ end
60
+ puts command
61
+ system command
62
+
63
+
64
+ new_proj_file = File.join(new_icon_dir, "Contents.json")
65
+ default_json_file = File.join(File.expand_path('../', __dir__), 'module/icon_contents.json')
66
+ new_proj_file_json = JSON.parse(File.read(default_json_file))
67
+ File.open(new_proj_file, "w") do |f|
68
+ f.write(JSON.pretty_generate(new_proj_file_json))
69
+ end
70
+
71
+
72
+ imessage_icon_dir = File.join(new_icon_dir, "imessage")
73
+ if File.exist?(imessage_icon_dir)
74
+ new_proj_file = File.join(new_icon_dir, "imessage/Contents.json")
75
+ default_json_file = File.join(File.expand_path('../', __dir__), 'module/imessage_icon.json')
76
+ new_proj_file_json = JSON.parse(File.read(default_json_file))
77
+ File.open(new_proj_file, "w") do |f|
78
+ f.write(JSON.pretty_generate(new_proj_file_json))
79
+ end
80
+ end
81
+
82
+
83
+
84
+ system "open #{new_icon_dir}"
85
+
86
+ end
87
+
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,133 @@
1
+
2
+
3
+
4
+ INPUT_IMESSAGE_FILE=
5
+
6
+ while getopts "i:o:a:" opt
7
+ do
8
+ case $opt in
9
+ i)
10
+ INPUT_FILE=$OPTARG
11
+ echo "Input File: $INPUT_FILE"
12
+ ;;
13
+ a)
14
+ INPUT_IMESSAGE_FILE=$OPTARG
15
+ echo "INPUT_IMESSAGE_FILE: $INPUT_IMESSAGE_FILE"
16
+ ;;
17
+ o)
18
+ OUTPUT_DIR=$OPTARG
19
+ echo "Output Dir: $OUTPUT_DIR"
20
+ ;;
21
+ *)
22
+ echo "Use with -i name -o prefix"
23
+ exit 1
24
+ ;;
25
+ esac
26
+ done
27
+
28
+ DIR=`dirname "$INPUT_FILE"`
29
+ TEMP_DIR="$DIR"/iconres_$(date +%Y%m%d%H%M%S)
30
+
31
+ if [[ "$OUTPUT_DIR" == "" ]]; then
32
+ OUTPUT_DIR="$TEMP_DIR"
33
+ fi
34
+
35
+ echo
36
+
37
+ if ! [[ -d "$OUTPUT_DIR" ]]; then
38
+ mkdir "$OUTPUT_DIR"
39
+ fi
40
+
41
+
42
+ if [[ "$INPUT_IMESSAGE_FILE" != "" ]]; then
43
+ if ! [[ -d "$OUTPUT_DIR/imessage" ]]; then
44
+ mkdir "$OUTPUT_DIR/imessage"
45
+ fi
46
+ fi
47
+
48
+
49
+ # function mkIconAndroid() {
50
+ # if [[ -z "$@" ]]; then
51
+ # echo "Input file missing"
52
+ # else
53
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 32 32 $INPUT_FILE --out "$OUTPUT_DIR"/icon_ldpi.png
54
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 36 36 $INPUT_FILE --out "$OUTPUT_DIR"/icon.png
55
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 48 48 $INPUT_FILE --out "$OUTPUT_DIR"/icon_mdpi.png
56
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 72 72 $INPUT_FILE --out "$OUTPUT_DIR"/icon_hdpi.png
57
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 96 96 $INPUT_FILE --out "$OUTPUT_DIR"/icon_xhdpi.png
58
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 144 144 $INPUT_FILE --out "$OUTPUT_DIR"/icon_xxhdpi.png
59
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 192 192 $INPUT_FILE --out "$OUTPUT_DIR"/icon_xxxhdpi.png
60
+ # fi
61
+ # }
62
+
63
+
64
+
65
+ function ceaate_ios_icon() {
66
+ if [[ -z "$@" ]]; then
67
+ echo "Input file missing"
68
+ else
69
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 20 20 "$1" --out "$OUTPUT_DIR"/icon20@1x.png
70
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 40 40 "$1" --out "$OUTPUT_DIR"/icon20@2x.png
71
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 60 60 "$1" --out "$OUTPUT_DIR"/icon20@3x.png
72
+
73
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 29 29 "$1" --out "$OUTPUT_DIR"/icon29@1x.png
74
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 58 58 "$1" --out "$OUTPUT_DIR"/icon29@2x.png
75
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 87 87 "$1" --out "$OUTPUT_DIR"/icon29@3x.png
76
+
77
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 40 40 "$1" --out "$OUTPUT_DIR"/icon40@1x.png
78
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 80 80 "$1" --out "$OUTPUT_DIR"/icon40@2x.png
79
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 120 120 "$1" --out "$OUTPUT_DIR"/icon40@3x.png
80
+
81
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 120 120 "$1" --out "$OUTPUT_DIR"/icon60@2x.png
82
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 180 180 "$1" --out "$OUTPUT_DIR"/icon60@3x.png
83
+
84
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 76 76 "$1" --out "$OUTPUT_DIR"/icon76@1x.png
85
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 152 152 "$1" --out "$OUTPUT_DIR"/icon76@2x.png
86
+
87
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 167 167 "$1" --out "$OUTPUT_DIR"/icon83_5@2x.png
88
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 1024 1024 "$1" --out "$OUTPUT_DIR"/icon1024@1x.png
89
+ fi
90
+ }
91
+
92
+ function ceaate_ios_imessage_icon() {
93
+ if [[ -z "$@" ]]; then
94
+ echo "Input file missing"
95
+ else
96
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 58 58 "$1" --out "$OUTPUT_DIR"/imessage/icon29@2x.png
97
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 87 87 "$1" --out "$OUTPUT_DIR"/imessage/icon29@3x.png
98
+
99
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 90 120 "$2" --out "$OUTPUT_DIR"/imessage/icon60_45@2x.png
100
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 135 180 "$2" --out "$OUTPUT_DIR"/imessage/icon60_45@3x.png
101
+
102
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 100 134 "$2" --out "$OUTPUT_DIR"/imessage/icon67_50@2x.png
103
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 110 148 "$2" --out "$OUTPUT_DIR"/imessage/icon74_55@2x.png
104
+
105
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 1024 1024 "$1" --out "$OUTPUT_DIR"/imessage/icon1024@1x.png
106
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 768 1024 "$2" --out "$OUTPUT_DIR"/imessage/icon1024_768@1x.png
107
+
108
+
109
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 40 54 "$2" --out "$OUTPUT_DIR"/imessage/icon27_20@2x.png
110
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 60 81 "$2" --out "$OUTPUT_DIR"/imessage/icon27_20@3x.png
111
+
112
+
113
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 48 64 "$2" --out "$OUTPUT_DIR"/imessage/icon32_24@2x.png
114
+ sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 72 96 "$2" --out "$OUTPUT_DIR"/imessage/icon32_24@3x.png
115
+
116
+ fi
117
+ }
118
+
119
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 512 512 $INPUT_FILE --out $DEST_DIR/Icon-512.png
120
+ # sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' -z 1024 1024 $INPUT_FILE --out $DEST_DIR/Icon-1024.png
121
+
122
+ # mkIconAndroid $INPUT_FILE
123
+ ceaate_ios_icon "$INPUT_FILE"
124
+
125
+ if [[ "$INPUT_IMESSAGE_FILE" != "" ]]; then
126
+ ceaate_ios_imessage_icon "$INPUT_FILE" "$INPUT_IMESSAGE_FILE"
127
+ fi
128
+
129
+
130
+
131
+
132
+
133
+
@@ -0,0 +1,56 @@
1
+
2
+
3
+ require 'highline/import'
4
+
5
+ module Pindo
6
+ class Command
7
+ class Utils < Command
8
+ class Podindex < Utils
9
+
10
+ self.summary = '更新私有pod所索引库.'
11
+
12
+ self.description = <<-DESC
13
+ 更新私有pod所索引库
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
+ current_dir = Dir.pwd;
38
+
39
+ clone_pindo_common_config_repo(force_delete:false)
40
+ clone_pindo_env_config_repo(force_delete:false)
41
+
42
+ pod_array = pindo_single_config.pod_repo_dict
43
+
44
+ if !pod_array.nil?
45
+ pod_array.each do |key, value|
46
+ command = 'sh ' + File.join(File.expand_path('./', __dir__), 'podindex.sh') + " #{value}"
47
+ system command
48
+ end
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+
3
+
4
+ LONG_REPO_URL=$1
5
+
6
+ SHORT_REPO_URL=${LONG_REPO_URL##*/}
7
+
8
+ SHORT_REPO_NAME=${SHORT_REPO_URL%.*}
9
+
10
+
11
+ REPOPATH=$(pod repo | grep -A 1 "$SHORT_REPO_URL" | sed -n '2p'| awk '{print $3}')
12
+
13
+ if [[ $REPOPATH == "" ]]; then
14
+ pod repo add $SHORT_REPO_NAME $LONG_REPO_URL
15
+ else
16
+ echo
17
+ echo Update ${REPOPATH} ...
18
+ echo
19
+ /usr/bin/git -C ${REPOPATH} fetch origin --progress
20
+ /usr/bin/git -C ${REPOPATH} rev-parse --abbrev-ref HEAD
21
+ /usr/bin/git -C ${REPOPATH} reset --hard origin/master
22
+ fi
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+