gonative-cli 0.8.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/gonative/commands/ios/embed_extensions.rb +1 -1
- data/lib/gonative/commands/ios/publish.rb +0 -1
- data/lib/gonative/commands/ios/set_bundle_id.rb +18 -0
- data/lib/gonative/commands.rb +3 -2
- data/lib/gonative/plugins/ios/embed_extensions.rb +17 -11
- data/lib/gonative/plugins/ios/extract_extensions.rb +2 -1
- data/lib/gonative/plugins/ios/release.rb +1 -1
- data/lib/gonative/plugins/ios/set_bundle_id.rb +65 -0
- data/lib/gonative/version.rb +1 -1
- data/templates/plugins/ios/common/PLUGIN_NAME.podspec.tpl +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 209c566d675f24e9d390dc519042c8e0e4ae7d34106cc11554420645dec7059e
|
4
|
+
data.tar.gz: d64745af6c9013723754bf43e3ad5741d157ab108f9f9257cb6d37bc466873e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7d09ae152c411ca063d5285d112aa7fd3f62672b0847d24e72c01ef0729402899e82e7e7f98fda7f6909fcfb518676418dc078abbb198d9272c4e12721bfbad
|
7
|
+
data.tar.gz: 2d510fa5fb4f2d1ad93b4a52033870eb3bf52a56a3987567133a7c550c8cc87e3ac9282da0a823e8415fa22b6639191f4b6d24bfe95527c1cb4dfea93cf3bc97
|
data/Gemfile.lock
CHANGED
@@ -11,7 +11,6 @@ module GoNative
|
|
11
11
|
option :archs, default: 'x86_64,arm64'
|
12
12
|
|
13
13
|
def call(skip_build:, debug:, archs:, **)
|
14
|
-
FileUtils.cd('/Users/hunaidhassan/Projects/gonative/AuthPlugin')
|
15
14
|
Plugins::IOS::Verify.call
|
16
15
|
Plugins::IOS::BuildFramework.call(archs, debug) unless skip_build
|
17
16
|
Plugins::IOS::Release.call
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GoNative
|
4
|
+
module Commands
|
5
|
+
module IOS
|
6
|
+
class SetBundleId < Base
|
7
|
+
desc 'Sets bundle Id '
|
8
|
+
|
9
|
+
argument :bundle_id, required: true, desc: 'Bundle id for the app'
|
10
|
+
option :with_entitlements, type: :boolean, default: false
|
11
|
+
|
12
|
+
def call(bundle_id:, with_entitlements:, **)
|
13
|
+
Plugins::IOS::SetBundleId.call(bundle_id, with_entitlements)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/gonative/commands.rb
CHANGED
@@ -7,8 +7,9 @@ module GoNative
|
|
7
7
|
register 'version', Version, aliases: %w[--version -v]
|
8
8
|
register 'ios create', IOS::Create
|
9
9
|
register 'ios publish', IOS::Publish
|
10
|
-
register 'ios extract', IOS::ExtractExtensions
|
11
|
-
register 'ios embed', IOS::EmbedExtensions
|
10
|
+
register 'ios extract-extensions', IOS::ExtractExtensions
|
11
|
+
register 'ios embed-extensions', IOS::EmbedExtensions
|
12
|
+
register 'ios set-bundle-id', IOS::SetBundleId
|
12
13
|
register 'android create', Android::Create
|
13
14
|
end
|
14
15
|
end
|
@@ -13,6 +13,7 @@ module GoNative
|
|
13
13
|
attr_reader :extensions
|
14
14
|
|
15
15
|
def call
|
16
|
+
FileUtils.cd('/Users/hunaidhassan/Projects/gonative/gonative-ios')
|
16
17
|
prepare_extensions
|
17
18
|
embed_in_project
|
18
19
|
modify_podfile
|
@@ -25,13 +26,14 @@ module GoNative
|
|
25
26
|
.flatten
|
26
27
|
.each { |path| FileUtils.cp_r(path, '.') }
|
27
28
|
@extensions = extension_paths
|
28
|
-
.map { |path| Pathname(path).children.select{ |p| p.extname == '.json'} }
|
29
|
+
.map { |path| Pathname(path).children.select { |p| p.extname == '.json' } }
|
29
30
|
.flatten
|
30
31
|
.map { |p| JSON.parse(File.read(p)) }
|
31
32
|
end
|
32
33
|
|
33
34
|
def embed_in_project
|
34
35
|
proj = Xcodeproj::Project.open('GoNativeIOS.xcodeproj')
|
36
|
+
app_target = proj.native_targets.first
|
35
37
|
extensions.each do |extension|
|
36
38
|
target = proj.new_target(:app_extension,
|
37
39
|
extension['name'],
|
@@ -39,17 +41,21 @@ module GoNative
|
|
39
41
|
'11.0')
|
40
42
|
extension_group = proj.new_group(extension['name'], extension['name'])
|
41
43
|
|
42
|
-
extension['headers'].each{ |path| extension_group.new_file(path) }
|
43
|
-
target.add_file_references(extension['source_files'].map{ |path| extension_group.new_file(path) })
|
44
|
-
target.add_resources(extension['resources'].map{ |path| extension_group.new_file(path) })
|
44
|
+
extension['headers'].each { |path| extension_group.new_file(path) }
|
45
|
+
target.add_file_references(extension['source_files'].map { |path| extension_group.new_file(path) })
|
46
|
+
target.add_resources(extension['resources'].map { |path| extension_group.new_file(path) })
|
45
47
|
target.add_system_frameworks(extension['system_frameworks'])
|
46
|
-
|
47
|
-
if extension['entitlements']
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
extension_group.new_file(extension['info'])
|
49
|
+
extension_group.new_file(extension['entitlements']) if extension['entitlements']
|
50
|
+
target.build_configurations.each do |config|
|
51
|
+
config.build_settings['PRODUCT_NAME'] = "$(TARGET_NAME)"
|
52
|
+
config.build_settings['INFOPLIST_FILE'] = "#{extension['name']}/#{extension['info']}"
|
53
|
+
config.build_settings['CODE_SIGN_ENTITLEMENTS'] = "#{extension['name']}/#{extension['entitlements']}" if extension['entitlements']
|
52
54
|
end
|
55
|
+
app_target.add_dependency(target)
|
56
|
+
extension_file = proj.files.find{|f| f.path == "#{extension['name']}.appex" }
|
57
|
+
embed_phase = app_target.build_phases.find { |phase| phase.class.method_defined?(:name) && phase.name == 'Embed App Extensions' }
|
58
|
+
embed_phase.add_file_reference(extension_file, true)
|
53
59
|
end
|
54
60
|
|
55
61
|
proj.save
|
@@ -61,7 +67,7 @@ module GoNative
|
|
61
67
|
f.puts "target '#{extension['name']}' do"
|
62
68
|
f.puts "\tuse_frameworks!"
|
63
69
|
extension['dependencies'].each do |dep|
|
64
|
-
f.puts "\tpod #{dep['name']}, #{dep['requirement']}"
|
70
|
+
f.puts "\tpod '#{dep['name']}', '#{dep['requirement']}'"
|
65
71
|
end
|
66
72
|
f.puts "end"
|
67
73
|
end
|
@@ -31,6 +31,7 @@ module GoNative
|
|
31
31
|
target_definition[:name] = extension_name
|
32
32
|
|
33
33
|
FileUtils.cd(extension_name)
|
34
|
+
target_definition[:info] = `find . -name '*Info.plist'`.split("\n").first
|
34
35
|
target_definition[:entitlements] = `find -E . -regex ".*\.(entitlements)"`.split("\n").first
|
35
36
|
target_definition[:headers] = `find -E . -regex ".*\.(h)"`.split("\n")
|
36
37
|
target_definition[:source_files] = `find -E . -regex ".*\.(m|swift)"`.split("\n")
|
@@ -56,7 +57,7 @@ module GoNative
|
|
56
57
|
}
|
57
58
|
end
|
58
59
|
|
59
|
-
target_definition.slice(:entitlements, :headers, :source_files, :resources).values.compact.flatten.each do |file_path|
|
60
|
+
target_definition.slice(:info, :entitlements, :headers, :source_files, :resources).values.compact.flatten.each do |file_path|
|
60
61
|
system('ditto', file_path, "#{original_path}/#{extension_path}/#{file_path}")
|
61
62
|
end
|
62
63
|
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'xcodeproj'
|
4
|
+
require 'cfpropertylist'
|
5
|
+
|
6
|
+
module GoNative
|
7
|
+
module Plugins
|
8
|
+
module IOS
|
9
|
+
class SetBundleId
|
10
|
+
extend DSL::Serviceable
|
11
|
+
|
12
|
+
attr_reader :bundle_id
|
13
|
+
|
14
|
+
def initialize(bundle_id, update_entitlements)
|
15
|
+
@bundle_id = bundle_id
|
16
|
+
@update_entitlements = update_entitlements
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
update_project
|
21
|
+
update_entitlements if update_entitlements?
|
22
|
+
end
|
23
|
+
|
24
|
+
def update_project
|
25
|
+
proj = Xcodeproj::Project.open('./GoNativeIOS.xcodeproj')
|
26
|
+
proj.targets.each do |target|
|
27
|
+
case target.product_type
|
28
|
+
when Xcodeproj::Constants::PRODUCT_TYPE_UTI[:application]
|
29
|
+
set_target_bundle_id(target, bundle_id)
|
30
|
+
when Xcodeproj::Constants::PRODUCT_TYPE_UTI[:app_extension]
|
31
|
+
set_target_bundle_id(target, bundle_id + '.' + target.name)
|
32
|
+
else
|
33
|
+
next
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
proj.save
|
38
|
+
end
|
39
|
+
|
40
|
+
def update_entitlements
|
41
|
+
entitlement_files = `find -E . -maxdepth 2 -regex ".*\.(entitlements)"`.split("\n")
|
42
|
+
entitlement_files.each do |entitlement_file|
|
43
|
+
plist = CFPropertyList::List.new(file: entitlement_file)
|
44
|
+
entitlements = CFPropertyList.native_types(plist.value)
|
45
|
+
entitlements['com.apple.security.application-groups'] = ['group.' + bundle_id]
|
46
|
+
plist.value = CFPropertyList.guess(entitlements)
|
47
|
+
plist.save(entitlement_file, CFPropertyList::List::FORMAT_XML)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def set_target_bundle_id(target, bundle_id)
|
54
|
+
target.build_configurations.each do |config|
|
55
|
+
config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = bundle_id
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def update_entitlements?
|
60
|
+
@update_entitlements
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/gonative/version.rb
CHANGED
@@ -14,7 +14,7 @@ TODO: Add long description of the pod here.
|
|
14
14
|
|
15
15
|
s.ios.deployment_target = '10.0'
|
16
16
|
s.swift_versions = '5.0'
|
17
|
-
s.preserve_paths = 'plist/*.{plist}'
|
17
|
+
s.preserve_paths = ['plist/*.{plist}', 'Extensions/**/*']
|
18
18
|
|
19
19
|
s.subspec 'Source' do |cs|
|
20
20
|
cs.source_files = '#{plugin_name}/Classes/**/*.{h,m,swift}'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gonative-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hunaid Hassan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02
|
11
|
+
date: 2022-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-cli
|
@@ -193,6 +193,7 @@ files:
|
|
193
193
|
- lib/gonative/commands/ios/embed_extensions.rb
|
194
194
|
- lib/gonative/commands/ios/extract_extensions.rb
|
195
195
|
- lib/gonative/commands/ios/publish.rb
|
196
|
+
- lib/gonative/commands/ios/set_bundle_id.rb
|
196
197
|
- lib/gonative/commands/version.rb
|
197
198
|
- lib/gonative/dsl/error_catchable.rb
|
198
199
|
- lib/gonative/dsl/serviceable.rb
|
@@ -202,6 +203,7 @@ files:
|
|
202
203
|
- lib/gonative/plugins/ios/embed_extensions.rb
|
203
204
|
- lib/gonative/plugins/ios/extract_extensions.rb
|
204
205
|
- lib/gonative/plugins/ios/release.rb
|
206
|
+
- lib/gonative/plugins/ios/set_bundle_id.rb
|
205
207
|
- lib/gonative/plugins/ios/verify.rb
|
206
208
|
- lib/gonative/utils.rb
|
207
209
|
- lib/gonative/utils/content_evaluator.rb
|