next_rails_scaffold 0.4.0 → 0.4.2
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d11278bd324e9d9e0578c45bdba6ad9c0593a1b0a840ace0d655bb174e1a896
|
4
|
+
data.tar.gz: f63cf1c37de59625a87a1bbb24698840987bdf78ab8d98880cfbdc9321326f9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc2256f5b2240fe34df82adfa383ad54c497de6c63994201d5fe4a4461d89ad85337e349e505ed411d1fab57485f2168f84604bd2a0e9a7df822b6edc6e5305e
|
7
|
+
data.tar.gz: '0079fa4d104f63c64e127dcbef1a0062bee283df99885a542a1f5b9b8da1a42d318c3d15a278e9f98ab042a3d460ece8d3dc867cc0fb8fd9eab2025d2ad6a386'
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require "tty-prompt"
|
4
|
+
|
5
|
+
PackageManager = Struct.new(:fetch, :run, :add, :lock_file, :version) do
|
6
|
+
def to_s = run.split.first
|
5
7
|
end
|
6
8
|
|
7
9
|
module Rails
|
@@ -29,18 +31,9 @@ module Rails
|
|
29
31
|
def initialize(args, *options) # :nodoc:
|
30
32
|
super
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
-
package_manager = shell.base.options[:package_manager]
|
35
|
-
until PACKAGE_MANAGERS.keys.include?(package_manager)
|
36
|
-
puts "Invalid package manager" unless package_manager.nil?
|
37
|
-
package_manager = ask(
|
38
|
-
"Which package manager do you want to use? " \
|
39
|
-
"(#{PACKAGE_MANAGERS.keys.to_sentence(words_connector: " or ")}): "
|
40
|
-
)
|
41
|
-
end
|
34
|
+
@prompt = TTY::Prompt.new
|
42
35
|
|
43
|
-
self.
|
36
|
+
self.attributes = shell.base.attributes
|
44
37
|
end
|
45
38
|
|
46
39
|
# Properly nests namespaces passed into a generator
|
@@ -67,19 +60,20 @@ module Rails
|
|
67
60
|
def create_frontend_project
|
68
61
|
return say_status :remove, "skip frontend folder", :yellow if shell.base.behavior == :revoke
|
69
62
|
|
70
|
-
check_node!
|
71
63
|
append_gitignore!
|
72
64
|
|
73
65
|
empty_directory "frontend"
|
74
66
|
|
75
67
|
inside("frontend") do
|
68
|
+
check_node!
|
69
|
+
check_pm_version!
|
76
70
|
create_next_app!
|
77
71
|
install_hygen!
|
78
72
|
|
79
73
|
language = File.exist?("tsconfig.json") ? "typescript" : "javascript"
|
80
74
|
|
81
75
|
run("#{selected_package_manager} hygen scaffold #{language} #{name} #{mapped_attributes.join(" ")}")
|
82
|
-
if !options[:skip_build] &&
|
76
|
+
if !options[:skip_build] && !@prompt.no?("Do you want to build your Next.js project?")
|
83
77
|
run("#{selected_package_manager.run} build")
|
84
78
|
end
|
85
79
|
end
|
@@ -98,10 +92,34 @@ module Rails
|
|
98
92
|
end
|
99
93
|
end
|
100
94
|
|
95
|
+
def check_pm_version!
|
96
|
+
package_manager = shell.base.options[:package_manager]
|
97
|
+
|
98
|
+
unless package_manager
|
99
|
+
PACKAGE_MANAGERS.each do |manager, details|
|
100
|
+
if File.exist?(details.lock_file)
|
101
|
+
package_manager = manager
|
102
|
+
break
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
until PACKAGE_MANAGERS.keys.include?(package_manager)
|
108
|
+
puts "Invalid package manager" unless package_manager.nil?
|
109
|
+
|
110
|
+
package_manager = @prompt.select("Which package manager do you want to use?", PACKAGE_MANAGERS.keys)
|
111
|
+
end
|
112
|
+
|
113
|
+
self.selected_package_manager = PACKAGE_MANAGERS[package_manager]
|
114
|
+
|
115
|
+
selected_package_manager.version = run("#{selected_package_manager} --version", capture: true).gsub(/[^0-9.]/, "")
|
116
|
+
log :package_manager, "Using #{selected_package_manager} version '#{selected_package_manager.version}'"
|
117
|
+
end
|
118
|
+
|
101
119
|
def append_gitignore!
|
102
120
|
rows = <<~HEREDOC
|
103
121
|
|
104
|
-
#
|
122
|
+
# Ignoring node modules for Rails and Next.js projects
|
105
123
|
node_modules/
|
106
124
|
HEREDOC
|
107
125
|
|
@@ -115,6 +133,11 @@ module Rails
|
|
115
133
|
"#{selected_package_manager.fetch} create-next-app@#{NEXT_VERSION} . " \
|
116
134
|
"--no-app --src-dir --import-alias \"@/*\""
|
117
135
|
)
|
136
|
+
|
137
|
+
if selected_package_manager.to_s == "yarn" &&
|
138
|
+
Gem::Dependency.new("", ">= 2.0").match?("", selected_package_manager.version)
|
139
|
+
run("yarn config set nodeLinker node-modules")
|
140
|
+
end
|
118
141
|
end
|
119
142
|
|
120
143
|
def install_hygen!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: next_rails_scaffold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raphael Araújo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 7.1.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: tty-prompt
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.23.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.23.1
|
27
41
|
description: |
|
28
42
|
The `next_rails_scaffold` gem is a powerful extension to the standard Ruby on Rails scaffold generator. It streamlines the development workflow by not only creating the backend structure with Rails but also automating the setup of a frontend directory using Next.js. Upon running the scaffold generator, this gem intelligently generates a Next.js application within the specified frontend directory.
|
29
43
|
|