mmine 0.9.5 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/mmine +6 -3
- data/lib/mmine/notification_extension_integrator.rb +79 -24
- data/lib/mmine/version.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdd2da8bbe98ba3e12f896877783e2d66a3c65189e626ca2f91e1c9701cbb87f
|
4
|
+
data.tar.gz: 62536d99142467ad563846ad3a669f486ad0f89623de6970c1c106794ae5a558
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d1ea2afc7248f1e211b7a9f20a84f78fa5dcdc6cd3a78bba172fdad1cfc01514ac13240e3e566002f28125922b54f3a7386384364ccf52e0615a4f3789542d1
|
7
|
+
data.tar.gz: b9d8c6d40e423c64df0340874e4513367ca781b4b563bd64b4fa06a24f91c7c35f95b33980304a363f85196db47d95c0eba8363e100313cf0cac671247bdd379
|
data/bin/mmine
CHANGED
@@ -32,6 +32,9 @@ integrate_parse = OptionParser.new do |opts|
|
|
32
32
|
opts.on("--swift-version", "--swift-version SWIFT_VER", "Provide Swift Language version for notification extension (by default 5)") do |ver|
|
33
33
|
options[:"swift-version"] = ver
|
34
34
|
end
|
35
|
+
opts.on("-s", "--override-signing", "Override parameters for MobileMessagingNotificationExtension signing using build flags") do |override|
|
36
|
+
options[:"override-signing"] = override
|
37
|
+
end
|
35
38
|
opts.on("-h", "--help", "Prints this help") do
|
36
39
|
puts opts
|
37
40
|
exit
|
@@ -46,8 +49,8 @@ when "integrate"
|
|
46
49
|
missing = mandatory.select{ |param| options[param].nil? }
|
47
50
|
unless missing.empty?
|
48
51
|
raise OptionParser::MissingArgument.new(missing.join(', '))
|
49
|
-
end
|
50
|
-
integrator = NotificationExtensionIntegrator.new(options[:"application-code"], options[:project], options[:"app-group"], options[:target], options[:cordova] || false, options[:xcframework] || false, options[:"swift-version"] || "5")
|
52
|
+
end
|
53
|
+
integrator = NotificationExtensionIntegrator.new(options[:"application-code"], options[:project], options[:"app-group"], options[:target], options[:cordova] || false, options[:xcframework] || false, options[:"swift-version"] || "5", options[:"override-signing"] || false)
|
51
54
|
integrator.logger = Logger.new(STDOUT)
|
52
55
|
integrator.logger.formatter = proc do |severity, datetime, progname, msg|
|
53
56
|
"#{severity}: #{msg}\n"
|
@@ -62,7 +65,7 @@ when "integrate"
|
|
62
65
|
puts $!.to_s
|
63
66
|
puts integrate_parse
|
64
67
|
exit
|
65
|
-
end
|
68
|
+
end
|
66
69
|
else
|
67
70
|
if first_arg == nil
|
68
71
|
puts "Please specify a command. For example 'mmine integrate'"
|
@@ -14,7 +14,7 @@ module Mmine
|
|
14
14
|
end
|
15
15
|
|
16
16
|
class NotificationExtensionIntegrator
|
17
|
-
def initialize(application_code, project_file_path, app_group, main_target_name, cordova = false, xcframework = false, swift_ver)
|
17
|
+
def initialize(application_code, project_file_path, app_group, main_target_name, cordova = false, xcframework = false, swift_ver, override_signing)
|
18
18
|
@project_file_path = project_file_path
|
19
19
|
@app_group = app_group
|
20
20
|
@main_target_name = main_target_name
|
@@ -23,6 +23,7 @@ class NotificationExtensionIntegrator
|
|
23
23
|
@xcframework = xcframework
|
24
24
|
@swift_version = swift_ver
|
25
25
|
@application_code = application_code
|
26
|
+
@override_signing = override_signing
|
26
27
|
|
27
28
|
@project_dir = Pathname.new(@project_file_path).parent.to_s
|
28
29
|
@project = Xcodeproj::Project.open(@project_file_path)
|
@@ -51,7 +52,10 @@ class NotificationExtensionIntegrator
|
|
51
52
|
create_notification_extension_target
|
52
53
|
create_notification_extension_dir
|
53
54
|
add_notification_extension_source_code
|
54
|
-
|
55
|
+
setup_extension_target_signing(@override_signing)
|
56
|
+
if @override_signing == false
|
57
|
+
setup_development_team
|
58
|
+
end
|
55
59
|
setup_deployment_target
|
56
60
|
setup_notification_extension_info_plist
|
57
61
|
setup_notification_extension_bundle_id
|
@@ -59,8 +63,8 @@ class NotificationExtensionIntegrator
|
|
59
63
|
setup_user_app_group_value
|
60
64
|
setup_background_modes_plist_value
|
61
65
|
|
62
|
-
|
63
|
-
|
66
|
+
setup_target_capabilities_for_extension_target
|
67
|
+
setup_target_capabilities_for_main_target
|
64
68
|
|
65
69
|
setup_embed_extension_action
|
66
70
|
setup_main_target_dependency
|
@@ -68,14 +72,15 @@ class NotificationExtensionIntegrator
|
|
68
72
|
setup_product_name
|
69
73
|
setup_extension_build_number
|
70
74
|
setup_run_path_search_paths
|
75
|
+
erease_bridging_header
|
71
76
|
|
72
77
|
if @cordova
|
73
|
-
setup_entitlements(
|
74
|
-
resolve_absolute_paths(["$(PROJECT_DIR)/$(PROJECT_NAME)/Entitlements-Release.plist"]),
|
78
|
+
setup_entitlements(nil,
|
75
79
|
nil,
|
76
|
-
@
|
77
|
-
@
|
78
|
-
|
80
|
+
@extension_target_name,
|
81
|
+
@extension_build_settings_debug,
|
82
|
+
@extension_build_settings_release)
|
83
|
+
#setup_extension_lib_cordova_link
|
79
84
|
setup_framework_search_paths
|
80
85
|
unless @xcframework
|
81
86
|
setup_copy_framework_script
|
@@ -98,6 +103,31 @@ class NotificationExtensionIntegrator
|
|
98
103
|
puts "🏁 Integration has been finished successfully!"
|
99
104
|
end
|
100
105
|
|
106
|
+
def setup_extension_target_signing(override_signing)
|
107
|
+
@logger.info("Overriding extension target signing: #{override_signing}")
|
108
|
+
|
109
|
+
signing_settings = {
|
110
|
+
'DEVELOPMENT_TEAM' => '$MM_EXTENSION_DEVELOPMENT_TEAM',
|
111
|
+
'CODE_SIGN_IDENTITY' => '$MM_EXTENSION_CODE_SIGN_IDENTITY',
|
112
|
+
}
|
113
|
+
|
114
|
+
signing_settings.keys.each do |key|
|
115
|
+
value = signing_settings[key]
|
116
|
+
@logger.info("Checking extension signing for key: #{key} value: #{value}")
|
117
|
+
if override_signing
|
118
|
+
set_notification_extension_build_settings(key, value)
|
119
|
+
else
|
120
|
+
# Delete setting if it was previously overridden
|
121
|
+
@extension_target.build_configurations.each do |config|
|
122
|
+
if config.resolve_build_setting(key) == value
|
123
|
+
@logger.info("Deletes extension setting for key: #{key} value: #{value}")
|
124
|
+
config.build_settings[key] = ''
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
101
131
|
def create_notification_extension_target
|
102
132
|
@extension_target_name = 'MobileMessagingNotificationExtension'
|
103
133
|
@extension_source_name_filepath = File.join(Mmine.root, 'resources', 'NotificationService.swift')
|
@@ -264,8 +294,8 @@ class NotificationExtensionIntegrator
|
|
264
294
|
end
|
265
295
|
|
266
296
|
def setup_entitlements(entitlements_debug_file_paths, entitlements_release_file_paths, target_name, _build_settings_debug, _build_settings_release)
|
267
|
-
entitlements_debug_file_paths = entitlements_debug_file_paths.compact
|
268
|
-
entitlements_release_file_paths = entitlements_release_file_paths.compact
|
297
|
+
entitlements_debug_file_paths = entitlements_debug_file_paths ? entitlements_debug_file_paths.compact : nil
|
298
|
+
entitlements_release_file_paths = entitlements_release_file_paths ? entitlements_release_file_paths.compact : nil
|
269
299
|
@logger.debug("setup_entitlements #{entitlements_debug_file_paths} #{entitlements_release_file_paths} #{target_name} #{_build_settings_debug} #{_build_settings_release}")
|
270
300
|
code_sign_entitlements_key = 'CODE_SIGN_ENTITLEMENTS'
|
271
301
|
aps_env_key = 'aps-environment'
|
@@ -291,7 +321,11 @@ class NotificationExtensionIntegrator
|
|
291
321
|
@logger.info("\tEntitlements settings are equal for debug and release schemes.")
|
292
322
|
|
293
323
|
put_key_array_element("com.apple.security.application-groups", @app_group, entitlements_debug_file_paths)
|
294
|
-
|
324
|
+
|
325
|
+
#aps env should be set only for main target
|
326
|
+
if (target_name != @extension_target_name)
|
327
|
+
put_string_value_into_xml(aps_env_key, development, entitlements_debug_file_paths)
|
328
|
+
end
|
295
329
|
else
|
296
330
|
if (entitlements_debug_file_paths == nil or entitlements_debug_file_paths.empty?) and target_name != nil
|
297
331
|
@logger.error("\tEntitlements debug settings are not set, creating entitlements file")
|
@@ -312,8 +346,12 @@ class NotificationExtensionIntegrator
|
|
312
346
|
end
|
313
347
|
|
314
348
|
put_key_array_element("com.apple.security.application-groups", @app_group, entitlements_debug_file_paths + entitlements_release_file_paths)
|
315
|
-
|
316
|
-
|
349
|
+
|
350
|
+
#aps env should be set only for main target
|
351
|
+
if (target_name != @extension_target_name)
|
352
|
+
put_string_value_into_xml(aps_env_key, development, entitlements_debug_file_paths)
|
353
|
+
put_string_value_into_xml(aps_env_key, production, entitlements_release_file_paths)
|
354
|
+
end
|
317
355
|
end
|
318
356
|
end
|
319
357
|
|
@@ -344,8 +382,12 @@ class NotificationExtensionIntegrator
|
|
344
382
|
end
|
345
383
|
end
|
346
384
|
|
385
|
+
def erease_bridging_header
|
386
|
+
set_notification_extension_build_settings('SWIFT_OBJC_BRIDGING_HEADER', '')
|
387
|
+
end
|
388
|
+
|
347
389
|
def setup_framework_search_paths
|
348
|
-
set_notification_extension_build_settings('FRAMEWORK_SEARCH_PATHS', '$SRCROOT/$PROJECT/Plugins/com-infobip-plugins-mobilemessaging')
|
390
|
+
set_notification_extension_build_settings('FRAMEWORK_SEARCH_PATHS', '$SRCROOT/$PROJECT/Plugins/com-infobip-plugins-mobilemessaging/**')
|
349
391
|
end
|
350
392
|
|
351
393
|
def setup_run_path_search_paths
|
@@ -405,11 +447,16 @@ class NotificationExtensionIntegrator
|
|
405
447
|
remove_embed_framework_phase
|
406
448
|
end
|
407
449
|
|
408
|
-
def
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
450
|
+
def setup_target_capabilities_for_extension_target
|
451
|
+
mobile_messaging_capabilities = {"SystemCapabilities" =>
|
452
|
+
{
|
453
|
+
"com.apple.ApplicationGroups.iOS" => {"enabled" => 1},
|
454
|
+
}
|
455
|
+
}
|
456
|
+
setup_target_capabilities(@extension_target.uuid, mobile_messaging_capabilities)
|
457
|
+
end
|
458
|
+
|
459
|
+
def setup_target_capabilities_for_main_target
|
413
460
|
mobile_messaging_capabilities = {"SystemCapabilities" =>
|
414
461
|
{
|
415
462
|
"com.apple.ApplicationGroups.iOS" => {"enabled" => 1},
|
@@ -417,12 +464,20 @@ class NotificationExtensionIntegrator
|
|
417
464
|
"com.apple.BackgroundModes" => {"enabled" => 1}
|
418
465
|
}
|
419
466
|
}
|
467
|
+
setup_target_capabilities(@main_target.uuid, mobile_messaging_capabilities)
|
468
|
+
end
|
469
|
+
|
470
|
+
def setup_target_capabilities(target_uuid, capabilities)
|
471
|
+
unless @project.root_object.attributes["TargetAttributes"]
|
472
|
+
@project.root_object.attributes["TargetAttributes"] = Hash.new
|
473
|
+
end
|
474
|
+
existing_capabilities = @project.root_object.attributes["TargetAttributes"][target_uuid]
|
420
475
|
if existing_capabilities == nil
|
421
|
-
@logger.info("\tSetting TargetAttributes #{
|
422
|
-
@project.root_object.attributes["TargetAttributes"][target_uuid] =
|
476
|
+
@logger.info("\tSetting TargetAttributes #{capabilities} for target #{target_uuid}")
|
477
|
+
@project.root_object.attributes["TargetAttributes"][target_uuid] = capabilities
|
423
478
|
else
|
424
|
-
@logger.info("\tMerging TargetAttributes #{
|
425
|
-
@project.root_object.attributes["TargetAttributes"][target_uuid] = existing_capabilities.merge(
|
479
|
+
@logger.info("\tMerging TargetAttributes #{capabilities} for target #{target_uuid}")
|
480
|
+
@project.root_object.attributes["TargetAttributes"][target_uuid] = existing_capabilities.merge(capabilities)
|
426
481
|
end
|
427
482
|
end
|
428
483
|
|
data/lib/mmine/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Mmine
|
2
|
-
VERSION = "0.9.
|
3
|
-
end
|
2
|
+
VERSION = "0.9.9"
|
3
|
+
end
|