Sha256: 90eec630f77912d63bb41f51642445365f2effe7b51fe3803dd3ca97debb6520
Contents?: true
Size: 2 KB
Versions: 1
Compression:
Stored size: 2 KB
Contents
# frozen_string_literal: true require "rails_interactive/prompt" require "rails_interactive/message" require "fileutils" module RailsInteractive # CLI class for the interactive CLI module class CLI def initialize @inputs = {} end def perform(key) case key when "new" Message.greet initialize_project when "help" Message.help else puts "Invalid parameter" end end def initialize_project name type database css_frameworks create end def create # Install gems system("bin/setup") # Create project system(setup) # Prepare project requirements and give instructions Dir.chdir "./#{@inputs[:name]}" system("rails db:create") sign_project Message.prepare end def setup base = "rails new" cmd = "" @inputs.each { |_key, value| cmd += "#{value} " } "#{base} #{cmd}".strip! end private def name @inputs[:name] = Prompt.new("Enter the name of the project: ", "ask", required: true).perform end def type types = { "App" => "", "API" => "--api" } @inputs[:type] = Prompt.new("Choose project type: ", "select", types, required: true).perform end def database database_types = { "PostgreSQL" => "-d postgresql", "MySQL" => "-d mysql", "SQLite" => "" } @inputs[:database] = Prompt.new("Choose project's database: ", "select", database_types, required: true).perform end def css_frameworks css_frameworks = { "None" => "", "Bootstrap" => "--css=bootstrap", "Tailwind" => "--css=tailwind" } @inputs[:css_framework] = Prompt.new("Choose project's CSS framework: ", "select", css_frameworks, required: true).perform end def sign_project file = "README.md" msg = "\n> This project was generated by [Rails Interactive CLI](https://github.com/oguzsh/rails-interactive)" File.write(file, msg, mode: "a+") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rails-interactive-1.0.0 | lib/rails_interactive.rb |