next_rails_scaffold 0.1.2 → 0.1.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: abd99131dfb6cd8584a12c366b039b743168e744b41f471c902596e10b77e138
4
- data.tar.gz: 9523b8f173ba5373678d946497a7344e36afbd11505187153eeb79d2223e6540
3
+ metadata.gz: 2a6647fa7b38f0706706f7d2c3b10255da244aace2bfe265101783874bcc73e8
4
+ data.tar.gz: c0876dcf129be740087769449578b6094e31d1015341a02e6aa1f671a26133ca
5
5
  SHA512:
6
- metadata.gz: d630cd3b07ce3c38b0411638def67bf59f5e2c1d79fbcc358a2ba681cf8318ca7bce8d8ef3a6b2f6929ec51c3019a49bdcbac8b36300f95e5c7c3fa1de311d0a
7
- data.tar.gz: 49a4fb1332d41bfe302c91ab814177e748ff152fa4ed0f3ad43154d73a30e8137ee7ab3e96c6fc638ad48b5119f5e2973ef5380e139269b7f0f41717469c9c9f
6
+ metadata.gz: 0312f9c5a2db0a45f8824adfa940aec9c428b3221a94fcea763f01665d17e2ee0f67f062ca9a2b124e92c163ac04541c26d6f06a8f36df1106adcee4c6d39c4c
7
+ data.tar.gz: fee680f8695608ad4e7782334bd4f4bbeb6f36cb0a95210f493df6df486cd68f3656b6d232cd0e9971de074df31da46e932b32a22c1e8bcb9e3d8bca408557c5
@@ -4,6 +4,8 @@ require "next_rails"
4
4
 
5
5
  NextRails.setup do |config|
6
6
  config.generators do |g|
7
+ g.api_only = true
8
+ g.resource_route false
7
9
  g.helper :next_rails
8
10
  end
9
11
  end
@@ -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, install the the usefull packages and create the
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
- say "Your Node version is '#{node_version}'", :green
71
+ log :node_version, "Your Node version is '#{node_version}'"
70
72
  else
71
- say_error "You need to have a Node version '#{NODE_REQUIRED_VERSION}'", :red
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,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NextRails
4
+ module Actions
5
+ # Make an entry in Rails routing file <tt>config/routes.rb</tt>
6
+ #
7
+ # route "root 'welcome#index'"
8
+ # route "root 'admin#index'", namespace: :admin
9
+ # route "root 'admin#index'", namespace: :admin, scope: '/api'
10
+ def route(routing_code, namespace: nil, scope: nil)
11
+ namespace = Array(namespace)
12
+ namespace_pattern = route_namespace_pattern(namespace)
13
+ routing_code = namespace.reverse.reduce(routing_code) do |code, name|
14
+ "namespace :#{name} do\n#{rebase_indentation(code, 2)}end"
15
+ end
16
+
17
+ scope = Array(scope)
18
+ routing_code = scope.reverse.reduce(routing_code) do |code, name|
19
+ "scope '#{name}' do\n#{rebase_indentation(code, 2)}end"
20
+ end
21
+
22
+ log :route, routing_code
23
+
24
+ in_root do
25
+ if (namespace_match = match_file("config/routes.rb", namespace_pattern))
26
+ base_indent, *, existing_block_indent = namespace_match.captures.compact.map(&:length)
27
+ existing_line_pattern = /^ {,#{existing_block_indent}}\S.+\n?/
28
+ routing_code = rebase_indentation(routing_code, base_indent + 2).gsub(existing_line_pattern, "")
29
+ namespace_pattern = /#{Regexp.escape namespace_match.to_s}/
30
+ end
31
+
32
+ inject_into_file "config/routes.rb", routing_code, after: namespace_pattern, verbose: false, force: false
33
+
34
+ if behavior == :revoke && namespace.any? && namespace_match
35
+ empty_block_pattern = /(#{namespace_pattern})((?:\s*end\n){1,#{namespace.size}})/
36
+ gsub_file "config/routes.rb", empty_block_pattern, verbose: false, force: true do |matched|
37
+ beginning, ending = empty_block_pattern.match(matched).captures
38
+ ending.sub!(/\A\s*end\n/, "") while !ending.empty? && beginning.sub!(/^ *namespace .+ do\n\s*\z/, "")
39
+ beginning + ending
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NextRails
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.4"
5
5
  end
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.2
4
+ version: 0.1.4
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