next_rails_scaffold 0.4.0 → 0.4.1
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: 7cfc0dd5220ecc60e9781e9844d08a3636b858e013572d66bbc8097b4928fa26
|
4
|
+
data.tar.gz: b93eb19cd0e4d9ea2effa6cef7ff11fd5a4d4f792d5925ccb2baaad9eee5f5d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79bc08d233802b69d1a1b6745dc561d95c8c8e1c1f138eadf4116840ee11d95e55b3c03447e843740eb05ea88298a94e3141e152b184330d142a9afa5b2839fd
|
7
|
+
data.tar.gz: 3f6245dd4badbfced192b0474541a27f14de49435fa43ed137afc2b0bb17542cc41d8d054396ba21614bcf211fcb37db980c37f710b60035029fe5e37cb41aa5
|
@@ -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? (y/N)")
|
83
77
|
run("#{selected_package_manager.run} build")
|
84
78
|
end
|
85
79
|
end
|
@@ -98,6 +92,30 @@ 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
|
|
@@ -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.1
|
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
|
|