Skip to content

Commit

Permalink
Add tty-prompt dependency and update version to 0.4.1
Browse files Browse the repository at this point in the history
  • Loading branch information
raphox committed Feb 4, 2025
1 parent c11e605 commit 47884ee
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 17 deletions.
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ gemspec
gem "minitest", "~> 5.0"
gem "rake", "~> 13.0"
gem "rubocop", "~> 1.21"
gem "tty-prompt", "~> 0.23.1"
17 changes: 16 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
PATH
remote: .
specs:
next_rails_scaffold (0.4.0)
next_rails_scaffold (0.4.1)
rails (>= 7.1.2)
tty-prompt (~> 0.23.1)

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -132,6 +133,8 @@ GEM
parser (3.2.2.4)
ast (~> 2.4.1)
racc
pastel (0.8.0)
tty-color (~> 0.5)
psych (5.1.1.1)
stringio
racc (1.7.3)
Expand Down Expand Up @@ -198,13 +201,24 @@ GEM
stringio (3.0.9)
thor (1.3.0)
timeout (0.4.1)
tty-color (0.6.0)
tty-cursor (0.7.1)
tty-prompt (0.23.1)
pastel (~> 0.8)
tty-reader (~> 0.8)
tty-reader (0.9.0)
tty-cursor (~> 0.7)
tty-screen (~> 0.8)
wisper (~> 2.0)
tty-screen (0.8.2)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.5.0)
webrick (1.8.1)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
wisper (2.0.1)
zeitwerk (2.6.12)

PLATFORMS
Expand All @@ -218,6 +232,7 @@ DEPENDENCIES
next_rails_scaffold!
rake (~> 13.0)
rubocop (~> 1.21)
tty-prompt (~> 0.23.1)

BUNDLED WITH
2.4.17
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# frozen_string_literal: true

PackageManager = Struct.new(:fetch, :run, :add, :lock_file) do
def to_s = fetch
require "tty-prompt"

PackageManager = Struct.new(:fetch, :run, :add, :lock_file, :version) do
def to_s = run.split.first
end

module Rails
Expand Down Expand Up @@ -29,18 +31,9 @@ class NextRailsScaffoldGenerator < Rails::Generators::NamedBase
def initialize(args, *options) # :nodoc:
super

self.attributes = shell.base.attributes

package_manager = shell.base.options[:package_manager]
until PACKAGE_MANAGERS.keys.include?(package_manager)
puts "Invalid package manager" unless package_manager.nil?
package_manager = ask(
"Which package manager do you want to use? " \
"(#{PACKAGE_MANAGERS.keys.to_sentence(words_connector: " or ")}): "
)
end
@prompt = TTY::Prompt.new

self.selected_package_manager = PACKAGE_MANAGERS[package_manager]
self.attributes = shell.base.attributes
end

# Properly nests namespaces passed into a generator
Expand All @@ -67,19 +60,20 @@ def add_resource_route
def create_frontend_project
return say_status :remove, "skip frontend folder", :yellow if shell.base.behavior == :revoke

check_node!
append_gitignore!

empty_directory "frontend"

inside("frontend") do
check_node!
check_pm_version!
create_next_app!
install_hygen!

language = File.exist?("tsconfig.json") ? "typescript" : "javascript"

run("#{selected_package_manager} hygen scaffold #{language} #{name} #{mapped_attributes.join(" ")}")
if !options[:skip_build] && yes?("Do you want to build your Next.js project? (y/N)")
if !options[:skip_build] && @prompt.no?("Do you want to build your Next.js project? (y/N)")
run("#{selected_package_manager.run} build")
end
end
Expand All @@ -98,6 +92,30 @@ def check_node!
end
end

def check_pm_version!
package_manager = shell.base.options[:package_manager]

unless package_manager
PACKAGE_MANAGERS.each do |manager, details|
if File.exist?(details.lock_file)
package_manager = manager
break
end
end
end

until PACKAGE_MANAGERS.keys.include?(package_manager)
puts "Invalid package manager" unless package_manager.nil?

package_manager = @prompt.select("Which package manager do you want to use?", PACKAGE_MANAGERS.keys)
end

self.selected_package_manager = PACKAGE_MANAGERS[package_manager]

selected_package_manager.version = run("#{selected_package_manager} --version", capture: true).gsub(/[^0-9.]/, "")
log :package_manager, "Using #{selected_package_manager} version '#{selected_package_manager.version}'"
end

def append_gitignore!
rows = <<~HEREDOC
Expand All @@ -115,6 +133,11 @@ def create_next_app!
"#{selected_package_manager.fetch} create-next-app@#{NEXT_VERSION} . " \
"--no-app --src-dir --import-alias \"@/*\""
)

if selected_package_manager.to_s == "yarn" &&
Gem::Dependency.new("", ">= 2.0").match?("", selected_package_manager.version)
run("yarn config set nodeLinker node-modules")
end
end

def install_hygen!
Expand Down
2 changes: 1 addition & 1 deletion lib/next_rails_scaffold/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module NextRailsScaffold
VERSION = "0.4.0"
VERSION = "0.4.1"
end
1 change: 1 addition & 0 deletions next_rails_scaffold.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Gem::Specification.new do |spec|
spec.require_paths = ["lib"]

spec.add_dependency "rails", ">= 7.1.2"
spec.add_dependency "tty-prompt", "~> 0.23.1"

# For more information and examples about making a new gem, check out our
# guide at: https://bundler.io/guides/creating_gem.html
Expand Down

0 comments on commit 47884ee

Please sign in to comment.