Sha256: 266debd4e839935124979fa23afac31c754b38f0cc2ea18a9a2c821c9015436c

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require "thor"
module Vundabar
  class Generators < Thor
    include Thor::Actions
    attr_reader :app
    def self.source_root
      File.dirname(__FILE__) + "/templates"
    end

    desc "server", "Starts vundabar server"

    def server
      exec "rackup"
    end
    map %w(s server) => "server"

    desc "new APP_NAME", "create the app boiler plate file structure"

    def new(app_name)
      @app = app_name.downcase
      say "creating your new app #{app}"
      create_app_directory

      create_config_files
      empty_directory "#{app}/db"
      create_public_directory
      add_files_to_root_folders
    end

    desc "version", "display the current version of the vundabar gem"

    def version
      say "Vundabar #{Vundabar::VERSION}"
    end
    map %w(-v --version) => "version"

    private

    def create_app_directory
      empty_directory app.to_s
      empty_directory "#{app}/app"
      empty_directory "#{app}/app/controllers"
      empty_directory "#{app}/app/models"
      create_views_folders
    end

    def create_views_folders
      empty_directory "#{app}/app/views/layouts"
      copy_file(
        "application.html.erb",
        "#{app}/app/views/layouts/application.html.erb"
      )
    end

    def create_config_files
      say "creating config folder"
      empty_directory "#{app}/config"
      copy_file "application.rb", "#{app}/config/application.rb"
      copy_file "routes.rb", "#{app}/config/routes.rb"
    end

    def create_public_directory
      empty_directory "#{app}/public"
      copy_file "invalid_route.html.erb", "#{app}/public/invalid_route.html.erb"
    end

    def add_files_to_root_folders
      copy_file "config.ru", "#{app}/config.ru"
      copy_file "Gemfile", "#{app}/Gemfile"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vundabar-0.2.0 generators/generators.rb