Class: NextRailsScaffold::Generators::NodePackageManager
- Inherits:
-
Object
- Object
- NextRailsScaffold::Generators::NodePackageManager
- Defined in:
- lib/generators/next_rails_scaffold/node_package_manager.rb
Instance Attribute Summary collapse
-
#selected_package_manager ⇒ Object
readonly
Returns the value of attribute selected_package_manager.
Class Method Summary collapse
Instance Method Summary collapse
- #check_node! ⇒ Object
- #check_pm_version! ⇒ Object
- #create_next_app! ⇒ Object
-
#initialize(shell) ⇒ NodePackageManager
constructor
A new instance of NodePackageManager.
- #install_hygen! ⇒ Object
Constructor Details
#initialize(shell) ⇒ NodePackageManager
39 40 41 42 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 39 def initialize(shell) @prompt = TTY::Prompt.new @shell = shell end |
Instance Attribute Details
#selected_package_manager ⇒ Object (readonly)
Returns the value of attribute selected_package_manager.
31 32 33 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 31 def selected_package_manager @selected_package_manager end |
Class Method Details
.get_version(command) ⇒ Object
33 34 35 36 37 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 33 def self.get_version(command) Open3.capture3(command, "--version").first.gsub(/[^0-9.]/, "") rescue Errno::ENOENT nil end |
Instance Method Details
#check_node! ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 44 def check_node! node_version = self.class.get_version("node") return if Gem::Dependency.new("", NODE_REQUIRED_VERSION).match?("", node_version) raise node_version ? "Your Node version is '#{node_version}'" : "Node not found" end |
#check_pm_version! ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 52 def check_pm_version! package_manager = @shell.base.[: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) raise "Invalid package manager" unless package_manager.nil? package_manager = @prompt.select( "Which package manager do you want to use?", PACKAGE_MANAGERS.keys.map { |pm| { name: pm, value: pm, disabled: !PACKAGE_MANAGERS[pm].available? } } ) end @selected_package_manager = PACKAGE_MANAGERS[package_manager] end |
#create_next_app! ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 76 def create_next_app! return if File.exist?("package.json") system( "#{selected_package_manager.fetch} create-next-app@#{NEXT_VERSION} . --use-#{selected_package_manager} " \ "--no-app --src-dir --import-alias \"@/*\" #{@shell.base.options[:typescript] ? "--ts" : ""} #{Rails.env.test? ? "--yes" : ""}" ) if selected_package_manager.to_s == "yarn" && Gem::Dependency.new("", ">= 2.0").match?("", selected_package_manager.version) system("yarn config set nodeLinker node-modules") end end |
#install_hygen! ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'lib/generators/next_rails_scaffold/node_package_manager.rb', line 90 def install_hygen! return if Dir.exist?("_templates") hygen_add = "hygen-add@https://github.com/raphox/hygen-add" system("#{selected_package_manager.add} -D hygen #{hygen_add}") system("#{selected_package_manager.fetch} #{hygen_add} next-rails-scaffold --pm #{selected_package_manager}") end |