gonative-cli 0.4.5 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 456654f324684cda9b2a39dad0854d93a15e233e1c7788214fbc74174cbda08a
4
- data.tar.gz: e0c57236547ecbb83a8fbbb58d98c12c4c53069e60d0d721b01a8f8ab2625e60
3
+ metadata.gz: 502329b2dfa909257cdc9a10dae6bfbeb9caed02a4de0f4c73067a79dc26a113
4
+ data.tar.gz: ab38249fa9b127cd2fe4baec9c16522b086c2eefb061dedde70399aaa1ec30d7
5
5
  SHA512:
6
- metadata.gz: 3896f5de592d2f022f8d925c8a6e5ecfca11d02f52504e8ab0e7fc714bbfa8bbaef2ee474f0d30acf5bbe5f8b4e6d5ac90db7f00fe5217d9c95dc516aa607559
7
- data.tar.gz: 724f72589b23fdcb280f60e278d58fe913bc90ec4fb7862bdee30ea4a844a1a287f07c1004a21bb64c393ceb3d62ef5f65a65dc93cfabddabeedf8a590911f9e
6
+ metadata.gz: abb9b4d9dd9098a2c3b04f9ddb15c18fbb541db1589cb4040f11b06e0a711e60fb59ec6cba9f4c7f2bf1b5d4cd901bef03268a9431537fb9bcae84d061a229a6
7
+ data.tar.gz: c8ec0c0f874390cf28aa09aac0e05bb702cb2f233dbf295f1e7d4e5c7a1edb3238f280a6c7585f03fc95caee093b4934de342c8780eccc8c842f6c12a3247d80
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gonative-cli (0.4.4)
4
+ gonative-cli (0.5.3)
5
+ activesupport (~> 6.0)
5
6
  cocoapods (~> 1.10)
6
7
  colorize (~> 0.8.0)
7
8
  dry-cli (~> 0.7)
@@ -12,11 +13,12 @@ GEM
12
13
  remote: https://rubygems.org/
13
14
  specs:
14
15
  CFPropertyList (3.0.3)
15
- activesupport (5.2.6)
16
+ activesupport (6.1.3)
16
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 0.7, < 2)
18
- minitest (~> 5.1)
19
- tzinfo (~> 1.1)
18
+ i18n (>= 1.6, < 2)
19
+ minitest (>= 5.1)
20
+ tzinfo (~> 2.0)
21
+ zeitwerk (~> 2.3)
20
22
  addressable (2.8.0)
21
23
  public_suffix (>= 2.0.2, < 5.0)
22
24
  algoliasearch (1.27.5)
@@ -26,10 +28,10 @@ GEM
26
28
  atomos (0.1.3)
27
29
  byebug (11.1.3)
28
30
  claide (1.0.3)
29
- cocoapods (1.10.2)
30
- addressable (~> 2.6)
31
+ cocoapods (1.11.2)
32
+ addressable (~> 2.8)
31
33
  claide (>= 1.0.2, < 2.0)
32
- cocoapods-core (= 1.10.2)
34
+ cocoapods-core (= 1.11.2)
33
35
  cocoapods-deintegrate (>= 1.0.3, < 2.0)
34
36
  cocoapods-downloader (>= 1.4.0, < 2.0)
35
37
  cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -40,19 +42,19 @@ GEM
40
42
  escape (~> 0.0.4)
41
43
  fourflusher (>= 2.3.0, < 3.0)
42
44
  gh_inspector (~> 1.0)
43
- molinillo (~> 0.6.6)
45
+ molinillo (~> 0.8.0)
44
46
  nap (~> 1.0)
45
- ruby-macho (~> 1.4)
46
- xcodeproj (>= 1.19.0, < 2.0)
47
- cocoapods-core (1.10.2)
48
- activesupport (> 5.0, < 6)
49
- addressable (~> 2.6)
47
+ ruby-macho (>= 1.0, < 3.0)
48
+ xcodeproj (>= 1.21.0, < 2.0)
49
+ cocoapods-core (1.11.2)
50
+ activesupport (>= 5.0, < 7)
51
+ addressable (~> 2.8)
50
52
  algoliasearch (~> 1.0)
51
53
  concurrent-ruby (~> 1.1)
52
54
  fuzzy_match (~> 2.0.4)
53
55
  nap (~> 1.0)
54
56
  netrc (~> 0.11)
55
- public_suffix
57
+ public_suffix (~> 4.0)
56
58
  typhoeus (~> 1.0)
57
59
  cocoapods-deintegrate (1.0.4)
58
60
  cocoapods-downloader (1.4.0)
@@ -82,7 +84,7 @@ GEM
82
84
  json (2.5.1)
83
85
  method_source (1.0.0)
84
86
  minitest (5.14.4)
85
- molinillo (0.6.6)
87
+ molinillo (0.8.0)
86
88
  nanaimo (0.3.0)
87
89
  nap (1.1.0)
88
90
  netrc (0.11.0)
@@ -129,13 +131,12 @@ GEM
129
131
  rubocop-ast (>= 0.4.0)
130
132
  ruby-macho (1.4.0)
131
133
  ruby-progressbar (1.11.0)
132
- thread_safe (0.3.6)
133
134
  typhoeus (1.4.0)
134
135
  ethon (>= 0.9.0)
135
- tzinfo (1.2.9)
136
- thread_safe (~> 0.1)
136
+ tzinfo (2.0.4)
137
+ concurrent-ruby (~> 1.0)
137
138
  unicode-display_width (2.0.0)
138
- xcodeproj (1.20.0)
139
+ xcodeproj (1.21.0)
139
140
  CFPropertyList (>= 2.3.3, < 4.0)
140
141
  atomos (~> 0.1.3)
141
142
  claide (>= 1.0.2, < 2.0)
data/README.md CHANGED
@@ -1,22 +1,23 @@
1
1
  # Gonative::Cli
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/gonative/cli`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ This cli is a tool to create/publish new plugins for GoNative apps.
6
4
 
7
5
  ## Installation
8
6
 
9
- Add this line to your application's Gemfile:
7
+ This gem has a minimum Ruby version requirement which is 2.7.0+ macOS comes with Ruby 2.6 and so built-in Ruby cannot be used for this gem.
8
+
9
+ ### Homebrew
10
10
 
11
- ```ruby
12
- gem 'gonative-cli'
13
- ```
11
+ You can install newer versions of Ruby using homebrew by using
12
+
13
+ $ brew install ruby
14
+ $ echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
14
15
 
15
- And then execute:
16
+ After that you will need to restart the terminal application for changes to take effect.
16
17
 
17
- $ bundle install
18
+ Confirm the installation by running `ruby -v`
18
19
 
19
- Or install it yourself as:
20
+ Install the gem now using:
20
21
 
21
22
  $ gem install gonative-cli
22
23
 
data/gonative-cli.gemspec CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency 'cocoapods', '~> 1.10'
33
33
  spec.add_dependency 'xcodeproj', '~> 1.20'
34
34
  spec.add_dependency 'colorize', '~> 0.8.0'
35
+ spec.add_dependency 'activesupport', '~> 6.0'
35
36
 
36
37
  spec.add_development_dependency 'rspec', '~> 3.10'
37
38
  spec.add_development_dependency 'pry-byebug', '~> 3.9'
@@ -7,9 +7,10 @@ module GoNative
7
7
  desc 'Create a new plugin'
8
8
 
9
9
  argument :name, required: true, desc: 'Name of the plugin'
10
+ option :language, default: "objc", values: Plugins::IOS::Create::LANGUAGES, desc: "Plugin's language"
10
11
 
11
- def call(name:, **)
12
- Plugins::IOS::Create.call(name)
12
+ def call(name:, language:, **)
13
+ Plugins::IOS::Create.call(name, language)
13
14
  end
14
15
  end
15
16
  end
@@ -4,10 +4,12 @@ module GoNative
4
4
  module Commands
5
5
  module IOS
6
6
  class Publish < Base
7
- desc 'Publish a new version'
7
+ desc 'Verify, build and release a new version'
8
+ option :skip_build, type: :boolean, default: false
8
9
 
9
- def call
10
- Plugins::IOS::Publish.call
10
+ def call(skip_build:, **)
11
+ Plugins::IOS::Verify.call unless skip_build
12
+ Plugins::IOS::Release.call
11
13
  end
12
14
  end
13
15
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'xcodeproj'
4
+ require 'active_support/core_ext/string/inflections'
4
5
 
5
6
  module GoNative
6
7
  module Plugins
@@ -11,11 +12,15 @@ module GoNative
11
12
  extend DSL::Serviceable
12
13
 
13
14
  TEMPLATE_DIRECTORY_PATH = File.expand_path(File.join(__dir__, '../../../..', 'templates', 'plugins', 'ios'))
15
+ COMMON_TEMPLATES_PATH = File.join(TEMPLATE_DIRECTORY_PATH, 'common')
14
16
 
15
- attr_reader :plugin_name
17
+ LANGUAGES = %w[objc swift].freeze
16
18
 
17
- def initialize(plugin_name)
19
+ attr_reader :plugin_name, :language
20
+
21
+ def initialize(plugin_name, language)
18
22
  @plugin_name = plugin_name
23
+ @language = language
19
24
  end
20
25
 
21
26
  def call
@@ -40,7 +45,8 @@ module GoNative
40
45
  end
41
46
 
42
47
  def cp_template_files!
43
- FileUtils.cp_r("#{TEMPLATE_DIRECTORY_PATH}/.", '.')
48
+ FileUtils.cp_r("#{COMMON_TEMPLATES_PATH}/.", '.')
49
+ system('ditto', File.join(TEMPLATE_DIRECTORY_PATH, 'language-specific', language), '.')
44
50
  end
45
51
 
46
52
  def inflate_templates!
@@ -89,7 +95,11 @@ module GoNative
89
95
  end
90
96
 
91
97
  def contents(file)
92
- Utils::TemplateInflator.new(File.read(file)).call(PLUGIN_NAME: plugin_name)
98
+ Utils::TemplateInflator.new(File.read(file)).call(PLUGIN_NAME: plugin_name, REPO_NAME: repo_name)
99
+ end
100
+
101
+ def repo_name
102
+ plugin_name.underscore.dasherize.prepend 'ios-'
93
103
  end
94
104
  end
95
105
  end
@@ -1,25 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cocoapods'
3
+ require 'xcodeproj'
4
4
 
5
5
  module GoNative
6
6
  module Plugins
7
7
  module IOS
8
- class Publish
9
- module Release
10
- GONATIVE_SOURCE_NAME = 'gonative-specs'.freeze
11
-
12
- def release_pod!
13
- Utils::UI.info 'Linting and releasing pod'
14
- assert_spec_exists!
15
- sources_manager.update(GONATIVE_SOURCE_NAME)
16
- assert_not_pushed!
17
- create_and_push_tag!
18
- push_to_pod_repo!
19
- end
20
-
21
- private
22
-
8
+ class Release
9
+ extend DSL::Serviceable
10
+
11
+ GONATIVE_SOURCE_NAME = 'gonative-specs'.freeze
12
+
13
+ def call
14
+ Utils::UI.info 'Linting and releasing pod'
15
+ assert_spec_exists!
16
+ sources_manager.update(GONATIVE_SOURCE_NAME)
17
+ assert_not_pushed!
18
+ create_and_push_tag!
19
+ push_to_pod_repo!
20
+ end
21
+
22
+ private
23
+
23
24
  def assert_spec_exists!
24
25
  return if spec_name
25
26
 
@@ -52,7 +53,7 @@ module GoNative
52
53
  end
53
54
 
54
55
  def spec
55
- @spec ||= Pod::Specification.from_file(spec_name)
56
+ @spec ||= ::Pod::Specification.from_file(spec_name)
56
57
  end
57
58
 
58
59
  def source
@@ -60,9 +61,8 @@ module GoNative
60
61
  end
61
62
 
62
63
  def sources_manager
63
- Pod::Config.instance.sources_manager
64
+ ::Pod::Config.instance.sources_manager
64
65
  end
65
- end
66
66
  end
67
67
  end
68
68
  end
@@ -3,15 +3,13 @@
3
3
  module GoNative
4
4
  module Plugins
5
5
  module IOS
6
- class Publish
6
+ class Verify
7
7
  extend DSL::Serviceable
8
- include Release
9
8
 
10
9
  def call
11
10
  assert_valid_plugin!
12
11
  assert_staging_clear!
13
12
  build_framework!
14
- release_pod!
15
13
  end
16
14
 
17
15
  def assert_valid_plugin!
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GoNative
4
- VERSION = "0.4.5"
4
+ VERSION = "0.5.4"
5
5
  end
File without changes
@@ -10,17 +10,19 @@ TODO: Add long description of the pod here.
10
10
  s.homepage = 'https://github.com/gonativeio/{{PLUGIN_NAME}}'
11
11
  s.license = { :type => 'MIT', :file => 'LICENSE' }
12
12
  s.author = { 'hhunaid' => 'hhunaid@gmail.com' }
13
- s.source = { :git => 'git@github.com:gonativeio/{{PLUGIN_NAME}}.git', :tag => s.version.to_s }
13
+ s.source = { :git => 'git@github.com:gonativeio/{{REPO_NAME}}.git', :tag => s.version.to_s }
14
14
 
15
15
  s.ios.deployment_target = '10.0'
16
16
  s.swift_versions = '5.0'
17
17
 
18
18
  s.subspec 'Source' do |cs|
19
- cs.source_files = '{{PLUGIN_NAME}}/Classes/**/*'
19
+ cs.source_files = '{{PLUGIN_NAME}}/Classes/**/*.{h,m,swift}'
20
+ cs.resource_bundle = { 'JS' => 'js/*.{js,json}' }
20
21
  end
21
22
 
22
23
  s.subspec 'Binary' do |cs|
23
24
  cs.ios.vendored_frameworks = 'XCFramework/{{PLUGIN_NAME}}.xcframework'
25
+ cs.resource_bundle = { 'JS' => 'js/*.{js,json}' }
24
26
  end
25
27
 
26
28
  s.default_subspec = 'Source'
@@ -3,7 +3,6 @@ platform :ios, '10.0'
3
3
  source 'https://cdn.cocoapods.org/'
4
4
  source 'git@github.com:gonativeio/gonative-specs.git'
5
5
 
6
-
7
6
  target '{{PLUGIN_NAME}}Framework' do
8
7
  use_frameworks!
9
8
  pod '{{PLUGIN_NAME}}', path: '.'
@@ -2,7 +2,7 @@
2
2
  // GN{{PLUGIN_NAME}}.h
3
3
  // {{PLUGIN_NAME}}
4
4
  //
5
- // Created by Hunaid Hassan on 20.07.21.
5
+ // Created by Hunaid Hassan.
6
6
  //
7
7
 
8
8
  #import <Foundation/Foundation.h>
@@ -2,7 +2,7 @@
2
2
  // GN{{PLUGIN_NAME}}.m
3
3
  // {{PLUGIN_NAME}}
4
4
  //
5
- // Created by Hunaid Hassan on 20.07.21.
5
+ // Created by Hunaid Hassan.
6
6
  //
7
7
 
8
8
  #import "GN{{PLUGIN_NAME}}.h"
@@ -0,0 +1,12 @@
1
+ //
2
+ // GN{{PLUGIN_NAME}}.m
3
+ // {{PLUGIN_NAME}}
4
+ //
5
+ // Created by Hunaid Hassan.
6
+ //
7
+
8
+ #import <GoNativeCore/GNEventEmitter.h>
9
+
10
+ @interface GN_EXTERN_MODULE(GN{{PLUGIN_NAME}}, GNEventEmitter)
11
+
12
+ @end
@@ -0,0 +1,14 @@
1
+ //
2
+ // GN{{PLUGIN_NAME}}.swift
3
+ // {{PLUGIN_NAME}}
4
+ //
5
+ // Created by Hunaid Hassan on.
6
+ //
7
+
8
+ import Foundation
9
+ import GoNativeCore
10
+
11
+ @objc(GN{{PLUGIN_NAME}})
12
+ public class GN{{PLUGIN_NAME}}: GNEventEmitter {
13
+
14
+ }
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.5
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hunaid Hassan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-14 00:00:00.000000000 Z
11
+ date: 2021-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-cli
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.8.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: activesupport
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '6.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '6.0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -181,20 +195,23 @@ files:
181
195
  - lib/gonative/dsl/serviceable.rb
182
196
  - lib/gonative/plugins.rb
183
197
  - lib/gonative/plugins/ios/create.rb
184
- - lib/gonative/plugins/ios/publish.rb
185
- - lib/gonative/plugins/ios/publish/release.rb
198
+ - lib/gonative/plugins/ios/release.rb
199
+ - lib/gonative/plugins/ios/verify.rb
186
200
  - lib/gonative/utils/template_inflator.rb
187
201
  - lib/gonative/utils/ui.rb
188
202
  - lib/gonative/version.rb
189
- - templates/plugins/ios/.gitignore
190
- - templates/plugins/ios/LICENSE
191
- - templates/plugins/ios/PLUGIN_NAME.podspec.tpl
192
- - templates/plugins/ios/PLUGIN_NAME/Classes/GNPLUGIN_NAME.h.tpl
193
- - templates/plugins/ios/PLUGIN_NAME/Classes/GNPLUGIN_NAME.m.tpl
194
- - templates/plugins/ios/PLUGIN_NAME/Info.plist
195
- - templates/plugins/ios/Podfile.tpl
196
- - templates/plugins/ios/create-framework.sh.tpl
197
- - templates/plugins/ios/js/polyfill.js.tpl
203
+ - templates/plugins/ios/common/.gitignore
204
+ - templates/plugins/ios/common/LICENSE
205
+ - templates/plugins/ios/common/PLUGIN_NAME.podspec.tpl
206
+ - templates/plugins/ios/common/PLUGIN_NAME/Info.plist
207
+ - templates/plugins/ios/common/Podfile.tpl
208
+ - templates/plugins/ios/common/create-framework.sh.tpl
209
+ - templates/plugins/ios/common/js/info.plist.json.tpl
210
+ - templates/plugins/ios/common/js/polyfill.js.tpl
211
+ - templates/plugins/ios/language-specific/objc/PLUGIN_NAME/Classes/GNPLUGIN_NAME.h.tpl
212
+ - templates/plugins/ios/language-specific/objc/PLUGIN_NAME/Classes/GNPLUGIN_NAME.m.tpl
213
+ - templates/plugins/ios/language-specific/swift/PLUGIN_NAME/Classes/GNSwiftModule.m.tpl
214
+ - templates/plugins/ios/language-specific/swift/PLUGIN_NAME/Classes/GNSwiftModule.swift.tpl
198
215
  homepage: https://www.github.com/gonativeio/gonative-cli
199
216
  licenses:
200
217
  - MIT