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: abd99131dfb6cd8584a12c366b039b743168e744b41f471c902596e10b77e138
4
- data.tar.gz: 9523b8f173ba5373678d946497a7344e36afbd11505187153eeb79d2223e6540
3
+ metadata.gz: 6c927e1fa3e4aedbe0f200329d7940ad2762339b18a40cab4c9ab96e5d3ccf37
4
+ data.tar.gz: 48aef6d4c24f14d83ac02b762e27f74f1536051daf101d2eabc23ee064d13cbb
5
5
  SHA512:
6
- metadata.gz: d630cd3b07ce3c38b0411638def67bf59f5e2c1d79fbcc358a2ba681cf8318ca7bce8d8ef3a6b2f6929ec51c3019a49bdcbac8b36300f95e5c7c3fa1de311d0a
7
- data.tar.gz: 49a4fb1332d41bfe302c91ab814177e748ff152fa4ed0f3ad43154d73a30e8137ee7ab3e96c6fc638ad48b5119f5e2973ef5380e139269b7f0f41717469c9c9f
6
+ metadata.gz: ad57f6aaddc7318aaa6d6fe1a64001475813e267207a287c2645cd0345690f512d7987801f54102b95005aa9f9b47072f170d83718e72b548ae36b02187a9be8
7
+ data.tar.gz: 93bf210d3f8a2f9fa7387f1f3fc64bd3dba00aae2df3c7710ce3700145222f97e3687820011506c9e852dcf21fb3dbe55f208da4714f55ba0e18a3daa62f41ac
@@ -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,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
@@ -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.3"
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.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