next_rails_scaffold 0.1.2 → 0.1.3
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c927e1fa3e4aedbe0f200329d7940ad2762339b18a40cab4c9ab96e5d3ccf37
|
4
|
+
data.tar.gz: 48aef6d4c24f14d83ac02b762e27f74f1536051daf101d2eabc23ee064d13cbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad57f6aaddc7318aaa6d6fe1a64001475813e267207a287c2645cd0345690f512d7987801f54102b95005aa9f9b47072f170d83718e72b548ae36b02187a9be8
|
7
|
+
data.tar.gz: 93bf210d3f8a2f9fa7387f1f3fc64bd3dba00aae2df3c7710ce3700145222f97e3687820011506c9e852dcf21fb3dbe55f208da4714f55ba0e18a3daa62f41ac
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Rails
|
4
|
+
include NextRails::Actions
|
5
|
+
|
4
6
|
class NextRailsGenerator < Rails::Generators::NamedBase
|
5
7
|
source_root File.expand_path("templates", __dir__)
|
6
8
|
|
@@ -41,9 +43,11 @@ module Rails
|
|
41
43
|
route "resources :#{file_name.pluralize}", namespace: regular_class_path, scope: "/api"
|
42
44
|
end
|
43
45
|
|
44
|
-
# Check Javascript depencies and create a new Next.js project
|
46
|
+
# Check Javascript depencies and create a new Next.js project. Install the the usefull packages and create the
|
45
47
|
# scaffold code for frontend application.
|
46
48
|
def create_frontend_project
|
49
|
+
return say_status :remove, "skip frontend folder", :yellow if shell.base.behavior == :revoke
|
50
|
+
|
47
51
|
check_node!
|
48
52
|
append_gitignore!
|
49
53
|
|
@@ -51,8 +55,6 @@ module Rails
|
|
51
55
|
|
52
56
|
inside("frontend") do
|
53
57
|
create_next_app!
|
54
|
-
|
55
|
-
install_hygen!
|
56
58
|
install_dependencies!
|
57
59
|
|
58
60
|
run("npx hygen generate scaffold #{name} #{mapped_attributes.join(" ")}")
|
@@ -66,9 +68,9 @@ module Rails
|
|
66
68
|
node_version = run("node --version", capture: true).gsub(/[^0-9.]/, "")
|
67
69
|
|
68
70
|
if Gem::Dependency.new("", NODE_REQUIRED_VERSION).match?("", node_version)
|
69
|
-
|
71
|
+
log :node_version, "Your Node version is '#{node_version}'"
|
70
72
|
else
|
71
|
-
|
73
|
+
say_status :node_version, "You need to have a Node version '#{NODE_REQUIRED_VERSION}'", :red
|
72
74
|
abort
|
73
75
|
end
|
74
76
|
end
|
@@ -99,6 +101,7 @@ module Rails
|
|
99
101
|
end
|
100
102
|
|
101
103
|
def install_dependencies!
|
104
|
+
install_hygen!
|
102
105
|
run("yarn add #{NODULES_MODULES.join(" ")}")
|
103
106
|
end
|
104
107
|
|
@@ -106,46 +109,6 @@ module Rails
|
|
106
109
|
attributes.map { |attr| "#{attr.name}:#{attr.type}" }
|
107
110
|
end
|
108
111
|
|
109
|
-
# Make an entry in \Rails routing file <tt>config/routes.rb</tt>
|
110
|
-
#
|
111
|
-
# route "root 'welcome#index'"
|
112
|
-
# route "root 'admin#index'", namespace: :admin
|
113
|
-
# route "root 'admin#index'", namespace: :admin, scope: '/api'
|
114
|
-
def route(routing_code, namespace: nil, scope: nil)
|
115
|
-
namespace = Array(namespace)
|
116
|
-
namespace_pattern = route_namespace_pattern(namespace)
|
117
|
-
routing_code = namespace.reverse.reduce(routing_code) do |code, name|
|
118
|
-
"namespace :#{name} do\n#{rebase_indentation(code, 2)}end"
|
119
|
-
end
|
120
|
-
|
121
|
-
scope = Array(scope)
|
122
|
-
routing_code = scope.reverse.reduce(routing_code) do |code, name|
|
123
|
-
"scope '#{name}' do\n#{rebase_indentation(code, 2)}end"
|
124
|
-
end
|
125
|
-
|
126
|
-
log :route, routing_code
|
127
|
-
|
128
|
-
in_root do
|
129
|
-
if namespace_match = match_file("config/routes.rb", namespace_pattern)
|
130
|
-
base_indent, *, existing_block_indent = namespace_match.captures.compact.map(&:length)
|
131
|
-
existing_line_pattern = /^ {,#{existing_block_indent}}\S.+\n?/
|
132
|
-
routing_code = rebase_indentation(routing_code, base_indent + 2).gsub(existing_line_pattern, "")
|
133
|
-
namespace_pattern = /#{Regexp.escape namespace_match.to_s}/
|
134
|
-
end
|
135
|
-
|
136
|
-
inject_into_file "config/routes.rb", routing_code, after: namespace_pattern, verbose: false, force: false
|
137
|
-
|
138
|
-
if behavior == :revoke && namespace.any? && namespace_match
|
139
|
-
empty_block_pattern = /(#{namespace_pattern})((?:\s*end\n){1,#{namespace.size}})/
|
140
|
-
gsub_file "config/routes.rb", empty_block_pattern, verbose: false, force: true do |matched|
|
141
|
-
beginning, ending = empty_block_pattern.match(matched).captures
|
142
|
-
ending.sub!(/\A\s*end\n/, "") while !ending.empty? && beginning.sub!(/^ *namespace .+ do\n\s*\z/, "")
|
143
|
-
beginning + ending
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
112
|
def exit_on_failure?
|
150
113
|
true
|
151
114
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NextRails
|
4
|
+
# Make an entry in Rails routing file <tt>config/routes.rb</tt>
|
5
|
+
#
|
6
|
+
# route "root 'welcome#index'"
|
7
|
+
# route "root 'admin#index'", namespace: :admin
|
8
|
+
# route "root 'admin#index'", namespace: :admin, scope: '/api'
|
9
|
+
def route(routing_code, namespace: nil, scope: nil)
|
10
|
+
namespace = Array(namespace)
|
11
|
+
namespace_pattern = route_namespace_pattern(namespace)
|
12
|
+
routing_code = namespace.reverse.reduce(routing_code) do |code, name|
|
13
|
+
"namespace :#{name} do\n#{rebase_indentation(code, 2)}end"
|
14
|
+
end
|
15
|
+
|
16
|
+
scope = Array(scope)
|
17
|
+
routing_code = scope.reverse.reduce(routing_code) do |code, name|
|
18
|
+
"scope '#{name}' do\n#{rebase_indentation(code, 2)}end"
|
19
|
+
end
|
20
|
+
|
21
|
+
log :route, routing_code
|
22
|
+
|
23
|
+
in_root do
|
24
|
+
if (namespace_match = match_file("config/routes.rb", namespace_pattern))
|
25
|
+
base_indent, *, existing_block_indent = namespace_match.captures.compact.map(&:length)
|
26
|
+
existing_line_pattern = /^ {,#{existing_block_indent}}\S.+\n?/
|
27
|
+
routing_code = rebase_indentation(routing_code, base_indent + 2).gsub(existing_line_pattern, "")
|
28
|
+
namespace_pattern = /#{Regexp.escape namespace_match.to_s}/
|
29
|
+
end
|
30
|
+
|
31
|
+
inject_into_file "config/routes.rb", routing_code, after: namespace_pattern, verbose: false, force: false
|
32
|
+
|
33
|
+
if behavior == :revoke && namespace.any? && namespace_match
|
34
|
+
empty_block_pattern = /(#{namespace_pattern})((?:\s*end\n){1,#{namespace.size}})/
|
35
|
+
gsub_file "config/routes.rb", empty_block_pattern, verbose: false, force: true do |matched|
|
36
|
+
beginning, ending = empty_block_pattern.match(matched).captures
|
37
|
+
ending.sub!(/\A\s*end\n/, "") while !ending.empty? && beginning.sub!(/^ *namespace .+ do\n\s*\z/, "")
|
38
|
+
beginning + ending
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/next_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: next_rails_scaffold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raphael Araújo
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- lib/generators/next_rails/templates/config/initializers/next_rails.rb
|
56
56
|
- lib/generators/rails/next_rails/next_rails_generator.rb
|
57
57
|
- lib/next_rails.rb
|
58
|
+
- lib/next_rails/actions.rb
|
58
59
|
- lib/next_rails/version.rb
|
59
60
|
- sig/next_rails.rbs
|
60
61
|
homepage: https://github.com/raphox/next-rails#readme
|