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,258 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Pindo
5
+
6
+ module Xcodebuildpre
7
+
8
+ def prepare_env(project_dir:nil, apple_id:nil, bundle_id:nil, config_json:nil)
9
+
10
+ apple_id_temp=apple_id
11
+ bundle_id_temp = bundle_id
12
+
13
+
14
+ if !File.exist?(File.join(project_dir, "fastlane"))
15
+ FileUtils.mkdir(File.join(project_dir, "fastlane"))
16
+ end
17
+
18
+ if File.exist?(File.join(project_dir, "fastlane/metadata"))
19
+ FileUtils.rm_rf(File.join(project_dir, "fastlane/metadata"))
20
+ end
21
+ FileUtils.mkdir(File.join(project_dir, "fastlane/metadata"))
22
+
23
+ if File.exist?(File.join(project_dir, "fastlane/screenshots"))
24
+ FileUtils.rm_rf(File.join(project_dir, "fastlane/screenshots"))
25
+ end
26
+ FileUtils.mkdir(File.join(project_dir, "fastlane/screenshots"))
27
+
28
+ if File.exist?(File.join(project_dir, "fastlane/Appfile"))
29
+ FileUtils.rm_rf(File.join(project_dir, "fastlane/Appfile"))
30
+ end
31
+
32
+ if File.exist?(File.join(project_dir, "fastlane/Deliverfile"))
33
+ FileUtils.rm_rf(File.join(project_dir, "fastlane/Deliverfile"))
34
+ end
35
+
36
+ # aFile = File.new(File.join(project_dir, "fastlane/Deliverfile"), "w+")
37
+ # if aFile
38
+ # aFile.syswrite(%Q{username "#{apple_id_temp}"\r\n})
39
+ # aFile.syswrite(%Q{app_identifier "#{bundle_id_temp}"\r\n})
40
+ # end
41
+
42
+ if File.exist?(File.join(project_dir, "fastlane/Matchfile"))
43
+ FileUtils.rm_rf(File.join(project_dir, "fastlane/Matchfile"))
44
+ end
45
+
46
+ project_fullname = ""
47
+ Dir.foreach(project_dir) do |file|
48
+ if file =~ /(.*).xcodeproj/
49
+ project_fullname = file
50
+ break;
51
+ end
52
+ end
53
+
54
+ project_base_name=File.basename(project_fullname, ".xcodeproj")
55
+
56
+ fast_file = File.join(File.expand_path('../', __dir__), 'deploy/Fastfile')
57
+ FileUtils.cp_r(fast_file, File.join(project_dir, "fastlane/Fastfile"))
58
+
59
+ app_version_temp = "1.0.0"
60
+ if config_json && config_json['app_info'] && config_json['app_info']['app_version']
61
+ app_version_temp = config_json['app_info']['app_version']
62
+ end
63
+ app_ipaname_temp = config_json['app_info']['app_display_name']
64
+ app_ipaname_temp = app_ipaname_temp.gsub(/ /, '');
65
+ app_ipaname_temp = app_ipaname_temp.gsub(/\'/, '');
66
+
67
+ if File.exist?(File.join(project_dir, "fastlane/Fastfile"))
68
+ text = File.read(File.join(project_dir, "fastlane/Fastfile"))
69
+ new_contents = text.gsub!(/demo_apple_id/, "#{apple_id_temp}")
70
+ new_contents = text.gsub!(/demo_bundle_id/, "#{bundle_id_temp}")
71
+ new_contents = text.gsub!(/DemoProj/, "#{project_base_name}")
72
+ new_contents = text.gsub!(/1.0.0/, "#{app_version_temp}")
73
+ new_contents = text.gsub!(/demo_ipa_name/, "#{app_ipaname_temp}")
74
+ File.open(File.join(project_dir, "fastlane/Fastfile"), "w") {|file| file.puts new_contents }
75
+ end
76
+
77
+ end
78
+
79
+
80
+
81
+ def config_project_cert(new_proj_name:nil, new_project_dir:nil, cert_type:nil, team_id_vaule:nil, bundle_id_dict:nil)
82
+
83
+ new_proj_fullname = File.join(new_project_dir, new_proj_name) + ".xcodeproj"
84
+ new_project_obj = Xcodeproj::Project.open(new_proj_fullname)
85
+
86
+ bundle_id_value = bundle_id_dict['bundle_id']['bundle_id_value']
87
+
88
+ bundle_id_pushcontent_value = nil
89
+ if bundle_id_dict['bundle_id_pushcontent']
90
+ bundle_id_pushcontent_value = bundle_id_dict['bundle_id_pushcontent']['bundle_id_pushcontent_value']
91
+ end
92
+
93
+ bundle_id_pushservice_value = nil
94
+ if bundle_id_dict['bundle_id_pushservice']
95
+ bundle_id_pushservice_value = bundle_id_dict['bundle_id_pushservice']['bundle_id_pushservice_value']
96
+ end
97
+ bundle_id_keyboard_value = nil
98
+ if bundle_id_dict['bundle_id_keyboard']
99
+ bundle_id_keyboard_value = bundle_id_dict['bundle_id_keyboard']['bundle_id_keyboard_value']
100
+ end
101
+
102
+ bundle_id_imessage_value = nil
103
+ if bundle_id_dict['bundle_id_imessage']
104
+ bundle_id_imessage_value = bundle_id_dict['bundle_id_imessage']['bundle_id_imessage_value']
105
+ end
106
+
107
+ bundle_id_siri_value = nil
108
+ if bundle_id_dict['bundle_id_siri']
109
+ bundle_id_siri_value = bundle_id_dict['bundle_id_siri']['bundle_id_siri_value']
110
+ end
111
+
112
+ bundle_id_siriui_value = nil
113
+ if bundle_id_dict['bundle_id_siriui']
114
+ bundle_id_siriui_value = bundle_id_dict['bundle_id_siriui']['bundle_id_siriui_value']
115
+ end
116
+
117
+ bundle_id_widget_value = nil
118
+ if bundle_id_dict['bundle_id_widget']
119
+ bundle_id_widget_value = bundle_id_dict['bundle_id_widget']['bundle_id_widget_value']
120
+ end
121
+
122
+ bundle_id_extension_value = nil
123
+ if bundle_id_dict['bundle_id_extension']
124
+ bundle_id_extension_value = bundle_id_dict['bundle_id_extension']['bundle_id_extension_value']
125
+ end
126
+
127
+ bundle_id_extensionad_value = nil
128
+ if bundle_id_dict['bundle_id_extensionad']
129
+ bundle_id_extensionad_value = bundle_id_dict['bundle_id_extensionad']['bundle_id_extensionad_value']
130
+ end
131
+
132
+ bundle_id_extensionporn_value = nil
133
+ if bundle_id_dict['bundle_id_extensionporn']
134
+ bundle_id_extensionporn_value = bundle_id_dict['bundle_id_extensionporn']['bundle_id_extensionporn_value']
135
+ end
136
+
137
+
138
+ bundle_id_watchapp_value = nil
139
+ if bundle_id_dict['bundle_id_watchapp']
140
+ bundle_id_watchapp_value = bundle_id_dict['bundle_id_watchapp']['bundle_id_watchapp_value']
141
+ end
142
+
143
+ bundle_id_watchapp_extension_value = nil
144
+ if bundle_id_dict['bundle_id_watchapp_extension']
145
+ bundle_id_watchapp_extension_value = bundle_id_dict['bundle_id_watchapp_extension']['bundle_id_watchapp_extension_value']
146
+ end
147
+
148
+
149
+
150
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', "Apple Distribution")
151
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Distribution")
152
+
153
+ if cert_type == "development"
154
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY[sdk=iphoneos*]', "Apple Development")
155
+ new_project_obj.root_object.build_configuration_list.set_setting('CODE_SIGN_IDENTITY*', "Apple Development")
156
+ end
157
+
158
+ new_project_obj.root_object.attributes['TargetAttributes'] = new_project_obj.root_object.attributes['TargetAttributes'] || {}
159
+ target_atts_obj = new_project_obj.root_object.attributes['TargetAttributes']
160
+
161
+ new_project_obj.targets.each do |target|
162
+
163
+ target.build_configurations.each do |config|
164
+
165
+ target_atts_obj[target.uuid] = target_atts_obj[target.uuid] || {}
166
+ target_atts_obj[target.uuid]['DevelopmentTeam'] = team_id_vaule
167
+ target_atts_obj[target.uuid]['ProvisioningStyle'] = "Manual"
168
+ config.build_settings['DEVELOPMENT_TEAM'] = team_id_vaule
169
+ config.build_settings['DEVELOPMENT_TEAM[sdk=iphoneos*]'] = team_id_vaule
170
+ config.build_settings['CODE_SIGN_STYLE'] = "Manual"
171
+
172
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Distribution"
173
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = "Apple Distribution"
174
+
175
+ if cert_type == "development"
176
+ config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Development"
177
+ config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = "Apple Development"
178
+ end
179
+
180
+ if target.name.to_s.end_with?("Content") then
181
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_pushcontent']['bundle_id']
182
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_pushcontent_value
183
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_pushcontent_value
184
+ elsif target.name.to_s.end_with?("Service") then
185
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_pushservice']['bundle_id']
186
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_pushservice_value
187
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_pushservice_value
188
+ elsif target.name.to_s.end_with?("Keyboard") then
189
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_keyboard']['bundle_id']
190
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_keyboard_value
191
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_keyboard_value
192
+ elsif target.name.to_s.end_with?("iMessage") then
193
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_imessage']['bundle_id']
194
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_imessage_value
195
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_imessage_value
196
+ elsif target.name.to_s.end_with?("Siri") then
197
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_siri']['bundle_id']
198
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_siri_value
199
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_siri_value
200
+ elsif target.name.to_s.end_with?("SiriUI") then
201
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_siriui']['bundle_id']
202
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_siriui_value
203
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_siriui_value
204
+ elsif target.name.to_s.end_with?("Widget") then
205
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_widget']['bundle_id']
206
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_widget_value
207
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_widget_value
208
+ elsif target.name.to_s.end_with?("Extension") then
209
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_extension']['bundle_id']
210
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_extension_value
211
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_extension_value
212
+ elsif target.name.to_s.end_with?("ExtensionAd") then
213
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_extensionad']['bundle_id']
214
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_extensionad_value
215
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_extensionad_value
216
+ elsif target.name.to_s.end_with?("ExtensionPorn") then
217
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_extensionporn']['bundle_id']
218
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_extensionporn_value
219
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_extensionporn_value
220
+ elsif target.name.to_s.end_with?("WatchApp") then
221
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_watchapp']['bundle_id']
222
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_watchapp_value
223
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_watchapp_value
224
+ elsif target.name.to_s.end_with?("WatchAppComplication") then
225
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id_watchapp_extension']['bundle_id']
226
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_watchapp_extension_value
227
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_watchapp_extension_value
228
+ else
229
+ config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id_dict['bundle_id']['bundle_id']
230
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = bundle_id_value
231
+ config.build_settings['PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]'] = bundle_id_value
232
+ end
233
+ end
234
+ end
235
+ new_project_obj.save
236
+
237
+ end
238
+
239
+ def modify_entitlements_plist(entitlements_plist_path:nil, group_id:nil, icloud_id:nil)
240
+ if File.exist?(entitlements_plist_path)
241
+
242
+ entitlements_plist_dict = Xcodeproj::Plist.read_from_path(entitlements_plist_path)
243
+
244
+ if !group_id.nil? && !entitlements_plist_dict['com.apple.security.application-groups'].nil?
245
+ entitlements_plist_dict['com.apple.security.application-groups'] = [group_id]
246
+ end
247
+
248
+ if !icloud_id.nil?
249
+ entitlements_plist_dict['com.apple.developer.icloud-container-identifiers'] = [icloud_id]
250
+ entitlements_plist_dict['com.apple.developer.ubiquity-container-identifiers'] = [icloud_id]
251
+ end
252
+
253
+ Xcodeproj::Plist.write_to_path(entitlements_plist_dict, entitlements_plist_path)
254
+ end
255
+ end
256
+
257
+ end
258
+ end