bin/sinatra in sinatra-template-1.0.0 vs bin/sinatra in sinatra-template-1.1.0
- old
+ new
@@ -1,365 +1,19 @@
require 'active_support/core_ext'
require 'fileutils'
-$template_dir = File.expand_path(File.join("..", "template"), File.dirname(__FILE__))
+$:.unshift File.expand_path(File.join("..", "lib", "sinatra"), File.dirname(__FILE__))
+require 'commands'
command = ARGV[0]
-class Command
-
- def self.command
- nil
- end
-
- def self.commands
- @commands ||= []
- end
-
- def self.inherited(klass)
- self.commands << klass
- end
-
- def cmd(command)
- puts command
- system command
- end
-
-end
-
-class NameCommand < Command
- include FileUtils
-
- attr_accessor :args, :name
-
- def self.inherited(klass)
- Command.inherited(klass)
- end
-
- def underscored
- self.name.underscore
- end
-
- def classified
- self.name.classify
- end
-
- def initialize(args)
- self.args = args
- self.name = ARGV[1]
- end
-
- def clean_string(f)
- f.gsub($template_dir, @app_dir).gsub("my_app", self.underscored).gsub("MyApp", self.classified)
- end
-
-end
-
-class NewProjectGenerator < NameCommand
-
- def self.command
- "new"
- end
-
- def self.help
- "name"
- end
-
- def initialize(*args)
- super
- @app_dir = File.expand_path(File.join(pwd, self.underscored))
- end
-
- def classified
- "#{self.name.classify}App"
- end
-
- def call
- mkdir self.underscored, verbose: true
- Dir[File.expand_path(File.join("**", "*"), $template_dir)].each do |f|
- if File.directory?(f)
- mkdir_p clean_string(f), verbose: true
- else
- mkdir_p clean_string(File.dirname(f)), verbose: true
- File.open(clean_string(f), 'w') do |file|
- file.puts clean_string(File.read(f))
- end
- end
- end
- end
-
-end
-
-class AppGenerator < NameCommand
-
- def self.command
- "generate:app"
- end
-
- def self.help
- "app_name"
- end
-
- def initialize(*args)
- super
- @app_dir = File.expand_path(pwd)
- end
-
- def classified
- "#{self.name.classify}App"
- end
-
- def call
- # mkdir self.underscored, verbose: true
- %w{apps spec/apps}.each do |dir|
- Dir[File.expand_path(File.join(dir, "**", "*"), $template_dir)].each do |f|
- if File.directory?(f)
- mkdir_p clean_string(f), verbose: true
- else
- mkdir_p clean_string(File.dirname(f)), verbose: true
- File.open(clean_string(f), 'w') do |file|
- file.puts clean_string(File.read(f))
- end
- end
- end
- end
- File.open(File.expand_path(File.join(@app_dir, "config.ru")), "a") do |file|
- file.puts <<-EOF
-map "/#{self.underscored}" do
- run #{self.classified}
-end
- EOF
- end
-
- path = File.expand_path(File.join(@app_dir, "spec", "apps", "#{self.underscored}_spec.rb"))
- mkdir_p File.dirname(path), verbose: true
- File.open(path, 'w') do |file|
- file.puts <<-EOF
-require 'spec_helper'
-
-describe #{self.classified} do
-
- it "does something"
-
-end
- EOF
- end
- end
-
-end
-
-class AppDestroyer < NameCommand
-
- def self.command
- "destroy:app"
- end
-
- def self.help
- "app_name"
- end
-
- def initialize(*args)
- super
- @app_dir = File.expand_path(pwd)
- end
-
- def classified
- "#{self.name.classify}App"
- end
-
- def call
- path = File.expand_path(File.join(@app_dir, "apps", "#{self.underscored}.rb"))
- begin
- rm path, verbose: true
- rescue Errno::ENOENT => e
- end
- path = File.expand_path(File.join(@app_dir, "apps", "views", self.underscored))
- begin
- rm_r path, verbose: true
- rescue Errno::ENOENT => e
- end
- path = File.expand_path(File.join(@app_dir, "spec", "apps", "#{self.underscored}_spec.rb"))
- begin
- rm path, verbose: true
- rescue Errno::ENOENT => e
- end
-
- path = File.expand_path(File.join(@app_dir, "config.ru"))
- old = File.read(path)
- File.open(path, "w") do |file|
- map = <<-EOF
-map "/#{self.underscored}" do
- run #{self.classified}
-end
- EOF
- file.puts old.gsub(map, "")
- end
- end
-
-end
-
-class ModelGenerator < NameCommand
-
- def self.command
- "generate:model"
- end
-
- def self.help
- "model_name"
- end
-
- def initialize(*args)
- super
- @app_dir = File.expand_path(pwd)
- end
-
- def call
- path = File.expand_path(File.join(@app_dir, "models", "#{self.underscored}.rb"))
- mkdir_p File.dirname(path), verbose: true
- File.open(path, 'w') do |file|
- file.puts <<-EOF
-class #{self.classified}
- include Mongoid::Document
- include Mongoid::Timestamps
-
-end
- EOF
- end
-
- path = File.expand_path(File.join(@app_dir, "spec", "models", "#{self.underscored}_spec.rb"))
- mkdir_p File.dirname(path), verbose: true
- File.open(path, 'w') do |file|
- file.puts <<-EOF
-require 'spec_helper'
-
-describe #{self.classified} do
-
- it "does something"
-
-end
- EOF
- end
- end
-
-end
-
-class ModelDestroyer < NameCommand
-
- def self.command
- "destroy:model"
- end
-
- def self.help
- "model_name"
- end
-
- def initialize(*args)
- super
- @app_dir = File.expand_path(pwd)
- end
-
- def call
- path = File.expand_path(File.join(@app_dir, "models", "#{self.underscored}.rb"))
- begin
- rm path, verbose: true
- rescue Errno::ENOENT => e
- end
- path = File.expand_path(File.join(@app_dir, "spec", "models", "#{self.underscored}_spec.rb"))
- begin
- rm path, verbose: true
- rescue Errno::ENOENT => e
- end
- end
-
-end
-
-class EnvCommand < Command
- include FileUtils
-
- attr_accessor :args, :env
-
- def self.inherited(klass)
- Command.inherited(klass)
- end
-
- def initialize(args)
- self.args = args
- @app_dir = File.expand_path(pwd)
- self.env = args[1] || "development"
- ENV["RACK_ENV"] = self.env
- end
-
-end
-
-class ConsoleCommand < EnvCommand
-
- def self.command
- "console"
- end
-
- def self.help
- "[environment]\t\t# default: development"
- end
-
- def call
- path = File.expand_path(File.join(@app_dir, "setup.rb"))
- cmd "pry -r #{path}"
- end
-
-end
-
-class StartCommand < EnvCommand
-
- def self.command
- "start"
- end
-
- def self.help
- "[environment]\t\t# default: development"
- end
-
- def call
- path = File.expand_path(File.join(@app_dir, "Procfile.#{self.env}"))
- if File.exists?(path)
- cmd "bundle exec foreman start -f #{path}"
- else
- path = File.expand_path(File.join(@app_dir, "Procfile"))
- cmd "bundle exec foreman start -f #{path}"
- end
- end
-
-end
-
-Command.commands.each do |klass|
+Sinatra::Command.commands.each do |klass|
if klass.command == command
klass.new(ARGV).call
exit(0)
end
end
-Command.commands.each do |klass|
+Sinatra::Command.commands.each do |klass|
if klass.respond_to?(:help)
puts "sinatra #{klass.command} #{klass.help}"
end
-end
-
-# case command
-# when 'help'
-# Command.commands.each do |klass|
-# if klass.respond_to?(:help)
-# puts "sinatra #{klass.command} #{klass.help}"
-# end
-# end
-# when 'new'
-# NewProjectGenerator.new(ARGV).call
-# when 'generate:app'
-# AppGenerator.new(ARGV).call
-# when 'destroy:app'
-# AppDestroyer.new(ARGV).call
-# when 'generate:model'
-# ModelGenerator.new(ARGV).call
-# when 'destroy:model'
-# ModelDestroyer.new(ARGV).call
-# when 'console'
-# ConsoleCommand.new(ARGV).call
-# when 'start'
-# StartCommand.new(ARGV).call
-# end
+end
\ No newline at end of file