react_native_util 0.2.1 → 0.2.2
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/README.md +61 -42
- data/lib/react_native_util/cli.rb +0 -45
- data/lib/react_native_util/converter.rb +60 -6
- data/lib/react_native_util/metadata.rb +1 -1
- data/lib/react_native_util/rake/react_pod_task.rb +27 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bac5388f9ceda5e72b4a54c717f742c5a56c07f0a7b7489a9cac567469cfe728
|
4
|
+
data.tar.gz: aea447d8cf31bb2d9feb5b4eb42ec8d869071ced5036f722049fabd38f17b00b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3f3375ad84f084472f36eeac3ae9a6ce2a0fda11a88bb32055a45940c7c39919daea4c5056b75650c130e509f964751e3ae70aeac0b445ef886eefad8f6fc1f
|
7
|
+
data.tar.gz: 89fcadbf7b2e9db331dd7bab9e3d066a1e06b4c2bd9117560ba79b58c5b871a1a658bf6bbe7bcd5ff6f3d60330d23202e71a79d94b78caa76a8491334aef9179
|
data/README.md
CHANGED
@@ -46,53 +46,72 @@ rn react_pod -h
|
|
46
46
|
|
47
47
|
## Try it out
|
48
48
|
|
49
|
-
|
50
|
-
```bash
|
51
|
-
react-native init TestApp
|
52
|
-
cd TestApp
|
53
|
-
yarn add react-native-webview
|
54
|
-
react-native link react-native-webview
|
55
|
-
git init .
|
56
|
-
git add .
|
57
|
-
git commit -m'Before conversion'
|
58
|
-
```
|
49
|
+
Convert examples/TestApp using Rake.
|
59
50
|
|
60
|
-
Now do the conversion:
|
61
51
|
```bash
|
62
|
-
|
52
|
+
bundle check || bundle install
|
53
|
+
bundle exec rake react_pod
|
63
54
|
git status
|
64
55
|
```
|
65
56
|
|
66
57
|
_Typical command output:_
|
67
58
|
```
|
68
|
-
2019-05-
|
69
|
-
|
70
|
-
2019-05-
|
71
|
-
2019-05-
|
72
|
-
2019-05-
|
73
|
-
2019-05-
|
74
|
-
2019-05-
|
75
|
-
2019-05-
|
76
|
-
2019-05-
|
77
|
-
2019-05-
|
78
|
-
2019-05-
|
79
|
-
2019-05-
|
80
|
-
2019-05-
|
81
|
-
2019-05-
|
82
|
-
2019-05-
|
83
|
-
|
84
|
-
2019-05-
|
85
|
-
2019-05-
|
86
|
-
|
87
|
-
|
88
|
-
2019-05-
|
89
|
-
2019-05-
|
90
|
-
2019-05-
|
91
|
-
2019-05-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
2019-05-
|
97
|
-
|
59
|
+
2019-05-12T11:42:03-07:00 react_native_util react_pod v0.2.2
|
60
|
+
[✔] yarn install success in 10.9 s
|
61
|
+
2019-05-12T11:42:14-07:00 Darwin 18.5.0 x86_64
|
62
|
+
2019-05-12T11:42:14-07:00 Ruby 2.6.3: ~/.rvm/rubies/ruby-2.6.3/bin/ruby
|
63
|
+
2019-05-12T11:42:14-07:00 RubyGems 3.0.3: ~/.rvm/rubies/ruby-2.6.3/bin/gem
|
64
|
+
2019-05-12T11:42:14-07:00 Bundler 1.17.2: ~/.rvm/gems/ruby-2.6.3/bin/bundle
|
65
|
+
2019-05-12T11:42:14-07:00 react-native-cli: /usr/local/bin/react-native
|
66
|
+
2019-05-12T11:42:14-07:00 react-native-cli: 2.0.1
|
67
|
+
2019-05-12T11:42:14-07:00 react-native: 0.59.8
|
68
|
+
2019-05-12T11:42:15-07:00 yarn 1.16.0: /usr/local/bin/yarn
|
69
|
+
2019-05-12T11:42:15-07:00 cocoapods 1.6.1: ~/.rvm/gems/ruby-2.6.3/bin/pod
|
70
|
+
2019-05-12T11:42:15-07:00 cocoapods-core: 1.6.1
|
71
|
+
2019-05-12T11:42:15-07:00 package.json:
|
72
|
+
2019-05-12T11:42:15-07:00 app name: "TestApp"
|
73
|
+
2019-05-12T11:42:15-07:00 Found Xcode project at ~/github/jdee/react_native_util/examples/TestApp/ios/TestApp.xcodeproj
|
74
|
+
2019-05-12T11:42:15-07:00 Dependencies:
|
75
|
+
2019-05-12T11:42:15-07:00 react-native-webview
|
76
|
+
2019-05-12T11:42:15-07:00 Unlinking dependencies
|
77
|
+
[✔] react-native unlink react-native-webview success in 0.7 s
|
78
|
+
2019-05-12T11:42:16-07:00 Removing Libraries from TestApp
|
79
|
+
2019-05-12T11:42:16-07:00 Removing Libraries from TestAppTests
|
80
|
+
2019-05-12T11:42:16-07:00 Removing Libraries group
|
81
|
+
2019-05-12T11:42:16-07:00 Generating ios/Podfile
|
82
|
+
2019-05-12T11:42:16-07:00 Linking dependencies
|
83
|
+
[✔] react-native link react-native-webview success in 0.5 s
|
84
|
+
2019-05-12T11:42:17-07:00 Generating Pods project and ios/TestApp.xcworkspace
|
85
|
+
[✔] pod install success in 8.2 s
|
86
|
+
2019-05-12T11:42:25-07:00 Conversion complete ✅
|
87
|
+
2019-05-12T11:42:25-07:00 $ open ios/TestApp.xcworkspace
|
88
|
+
```
|
89
|
+
|
90
|
+
## Rake task
|
91
|
+
|
92
|
+
Add to Rakefile:
|
93
|
+
```Ruby
|
94
|
+
require 'react_native_util/rake/react_pod_task'
|
95
|
+
ReactNativeUtil::Rake::ReactPodTask.new
|
96
|
+
```
|
97
|
+
|
98
|
+
Customize:
|
99
|
+
```Ruby
|
100
|
+
require 'react_native_util/rake/react_pod_task'
|
101
|
+
ReactNativeUtil::Rake::ReactPodTask.new(
|
102
|
+
:react_pod, # task name
|
103
|
+
'Convert project to use React pod', # description
|
104
|
+
chdir: '/path/to/rn/project', # path to project package.json
|
105
|
+
repo_update: true # optionally disable pod repo update
|
106
|
+
)
|
107
|
+
```
|
108
|
+
|
109
|
+
## Ruby script
|
110
|
+
|
111
|
+
```Ruby
|
112
|
+
require 'react_native_util/converter'
|
113
|
+
|
114
|
+
Dir.chdir '/path/to/rn/project' do
|
115
|
+
ReactNativeUtil::Converter.new(repo_update: true).convert_to_react_pod!
|
116
|
+
end
|
98
117
|
```
|
@@ -1,6 +1,4 @@
|
|
1
|
-
require 'cocoapods-core'
|
2
1
|
require 'commander'
|
3
|
-
require 'rubygems'
|
4
2
|
require_relative 'converter'
|
5
3
|
require_relative 'metadata'
|
6
4
|
|
@@ -24,7 +22,6 @@ module ReactNativeUtil
|
|
24
22
|
|
25
23
|
c.action do |_args, opts|
|
26
24
|
begin
|
27
|
-
report_configuration
|
28
25
|
converter = Converter.new repo_update: opts.repo_update
|
29
26
|
converter.convert_to_react_pod!
|
30
27
|
exit 0
|
@@ -41,47 +38,5 @@ module ReactNativeUtil
|
|
41
38
|
|
42
39
|
run!
|
43
40
|
end
|
44
|
-
|
45
|
-
def report_configuration
|
46
|
-
log "#{NAME} react_pod v#{VERSION}".bold
|
47
|
-
|
48
|
-
log ' Installed from Homebrew' if ENV['REACT_NATIVE_UTIL_INSTALLED_FROM_HOMEBREW']
|
49
|
-
|
50
|
-
log " #{`uname -msr`}"
|
51
|
-
|
52
|
-
log " Ruby #{RUBY_VERSION}: #{RbConfig.ruby}"
|
53
|
-
log " RubyGems #{Gem::VERSION}: #{`which gem`}"
|
54
|
-
log " Bundler #{Bundler::VERSION}: #{`which bundle`}" if defined?(Bundler)
|
55
|
-
|
56
|
-
log_command_path 'react-native', 'react-native-cli', include_version: false
|
57
|
-
unless `which react-native`.empty?
|
58
|
-
react_native_info = `react-native --version`
|
59
|
-
react_native_info.split("\n").each { |l| log " #{l}" }
|
60
|
-
end
|
61
|
-
|
62
|
-
log_command_path 'yarn'
|
63
|
-
log_command_path 'pod', 'cocoapods'
|
64
|
-
|
65
|
-
log " cocoapods-core: #{Pod::CORE_VERSION}"
|
66
|
-
rescue Errno::ENOENT
|
67
|
-
# On Windows, e.g., which and uname may not work.
|
68
|
-
log 'Conversion failed: macOS required.'.red.bold
|
69
|
-
exit(-1)
|
70
|
-
end
|
71
|
-
|
72
|
-
def log_command_path(command, package = command, include_version: true)
|
73
|
-
path = `which #{command}`
|
74
|
-
if path.empty?
|
75
|
-
log " #{package}: #{'not found'.red.bold}"
|
76
|
-
return
|
77
|
-
end
|
78
|
-
|
79
|
-
if include_version
|
80
|
-
version = `#{command} --version`.chomp
|
81
|
-
log " #{package} #{version}: #{path}"
|
82
|
-
else
|
83
|
-
log " #{package}: #{path}"
|
84
|
-
end
|
85
|
-
end
|
86
41
|
end
|
87
42
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
+
require 'cocoapods-core'
|
1
2
|
require 'erb'
|
2
3
|
require 'json'
|
4
|
+
require 'rubygems'
|
3
5
|
require 'tmpdir'
|
4
6
|
require 'tty/platform'
|
5
7
|
require 'xcodeproj'
|
@@ -57,11 +59,13 @@ module ReactNativeUtil
|
|
57
59
|
# Convert project to use React pod
|
58
60
|
# @raise ConversionError on failure
|
59
61
|
def convert_to_react_pod!
|
60
|
-
raise ConversionError, "macOS required." unless mac?
|
61
|
-
|
62
62
|
# Make sure no uncommitted changes
|
63
63
|
check_repo_status!
|
64
64
|
|
65
|
+
report_configuration!
|
66
|
+
|
67
|
+
raise ConversionError, "macOS required." unless mac?
|
68
|
+
|
65
69
|
load_package_json!
|
66
70
|
log 'package.json:'
|
67
71
|
log " app name: #{app_name.inspect}"
|
@@ -83,10 +87,6 @@ module ReactNativeUtil
|
|
83
87
|
exit 1
|
84
88
|
end
|
85
89
|
|
86
|
-
# Don't run yarn until we're sure we're proceeding.
|
87
|
-
log 'Installing NPM dependencies with yarn'
|
88
|
-
run_command_with_spinner! 'yarn', log: File.join(Dir.tmpdir, 'yarn.log')
|
89
|
-
|
90
90
|
load_react_podspec!
|
91
91
|
|
92
92
|
# 2. Detect native dependencies in Libraries group.
|
@@ -150,6 +150,60 @@ module ReactNativeUtil
|
|
150
150
|
raise ConversionError, "Failed to parse package.json: #{e.message}"
|
151
151
|
end
|
152
152
|
|
153
|
+
def install_npm_deps_if_needed!
|
154
|
+
raise ConversionError, 'package.json not found. Please run from the project root.' unless File.readable?('package.json')
|
155
|
+
|
156
|
+
execute 'yarn', 'check', '--integrity', log: nil, output: :close
|
157
|
+
execute 'yarn', 'check', '--verify-tree', log: nil, output: :close
|
158
|
+
rescue ExecutionError
|
159
|
+
# install deps if either check fails
|
160
|
+
run_command_with_spinner! 'yarn', 'install', log: File.join(Dir.tmpdir, 'yarn.log')
|
161
|
+
end
|
162
|
+
|
163
|
+
def report_configuration!
|
164
|
+
log "#{NAME} react_pod v#{VERSION}".bold
|
165
|
+
|
166
|
+
install_npm_deps_if_needed!
|
167
|
+
|
168
|
+
log ' Installed from Homebrew' if ENV['REACT_NATIVE_UTIL_INSTALLED_FROM_HOMEBREW']
|
169
|
+
|
170
|
+
log " #{`uname -msr`}"
|
171
|
+
|
172
|
+
log " Ruby #{RUBY_VERSION}: #{RbConfig.ruby}"
|
173
|
+
log " RubyGems #{Gem::VERSION}: #{`which gem`}"
|
174
|
+
log " Bundler #{Bundler::VERSION}: #{`which bundle`}" if defined?(Bundler)
|
175
|
+
|
176
|
+
log_command_path 'react-native', 'react-native-cli', include_version: false
|
177
|
+
unless `which react-native`.empty?
|
178
|
+
react_native_info = `react-native --version`
|
179
|
+
react_native_info.split("\n").each { |l| log " #{l}" }
|
180
|
+
end
|
181
|
+
|
182
|
+
log_command_path 'yarn'
|
183
|
+
log_command_path 'pod', 'cocoapods'
|
184
|
+
|
185
|
+
log " cocoapods-core: #{Pod::CORE_VERSION}"
|
186
|
+
rescue Errno::ENOENT
|
187
|
+
# On Windows, e.g., which and uname may not work.
|
188
|
+
log 'Conversion failed: macOS required.'.red.bold
|
189
|
+
exit(-1)
|
190
|
+
end
|
191
|
+
|
192
|
+
def log_command_path(command, package = command, include_version: true)
|
193
|
+
path = `which #{command}`
|
194
|
+
if path.empty?
|
195
|
+
log " #{package}: #{'not found'.red.bold}"
|
196
|
+
return
|
197
|
+
end
|
198
|
+
|
199
|
+
if include_version
|
200
|
+
version = `#{command} --version`.chomp
|
201
|
+
log " #{package} #{version}: #{path}"
|
202
|
+
else
|
203
|
+
log " #{package}: #{path}"
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
153
207
|
# Load the project at @xcodeproj_path into @xcodeproj
|
154
208
|
# @raise ConversionError on failure
|
155
209
|
def load_xcodeproj!
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# Conversion tools for React Native projects
|
2
2
|
module ReactNativeUtil
|
3
3
|
NAME = 'react_native_util'
|
4
|
-
VERSION = '0.2.
|
4
|
+
VERSION = '0.2.2'
|
5
5
|
SUMMARY = 'Community utility CLI for React Native projects'
|
6
6
|
DESCRIPTION = 'Automatically modifies a project created with react-native ' \
|
7
7
|
'init to use the React pod from node_modules.'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/tasklib'
|
3
|
+
require_relative '../converter'
|
4
|
+
|
5
|
+
module ReactNativeUtil
|
6
|
+
module Rake
|
7
|
+
# Rakefile:
|
8
|
+
# require 'react_native_util/rake/react_pod_task'
|
9
|
+
# ReactNativeUtil::Rake::ReactPodTask.new chdir: '/path/to/rn/app'
|
10
|
+
class ReactPodTask < ::Rake::TaskLib
|
11
|
+
include Util
|
12
|
+
def initialize(
|
13
|
+
name = :react_pod,
|
14
|
+
description = 'Convert project to use React pod',
|
15
|
+
chdir: '.',
|
16
|
+
repo_update: boolean_env_var?(:REACT_NATIVE_UTIL_REPO_UPDATE)
|
17
|
+
)
|
18
|
+
desc description
|
19
|
+
task name do
|
20
|
+
Dir.chdir chdir do
|
21
|
+
Converter.new(repo_update: repo_update).convert_to_react_pod!
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react_native_util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Dee
|
@@ -229,6 +229,7 @@ files:
|
|
229
229
|
- lib/react_native_util/core_ext/string.rb
|
230
230
|
- lib/react_native_util/exceptions.rb
|
231
231
|
- lib/react_native_util/metadata.rb
|
232
|
+
- lib/react_native_util/rake/react_pod_task.rb
|
232
233
|
- lib/react_native_util/util.rb
|
233
234
|
homepage: https://github.com/jdee/react_native_util
|
234
235
|
licenses:
|