#!/usr/bin/env ruby # -*- encoding: utf-8 -*- #Copyright (c) 2011 Xavier Nayrac # #Permission is hereby granted, free of charge, to any person obtaining #a copy of this software and associated documentation files (the #"Software"), to deal in the Software without restriction, including #without limitation the rights to use, copy, modify, merge, publish, #distribute, sublicense, and/or sell copies of the Software, and to #permit persons to whom the Software is furnished to do so, subject to #the following conditions: # #The above copyright notice and this permission notice shall be included #in all copies or substantial portions of the Software. # #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, #EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF #MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. #IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY #CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, #TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE #SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib' $GENIT_PATH = File.expand_path(File.dirname(__FILE__)) + '/..' require 'genit' require 'clamp' include Genit module Genit class AbstractCommand < Clamp::Command option ['-v', '--version'], :flag, "print version" do puts "genit #{File.read(File.join($GENIT_PATH, 'VERSION')).strip}" exit 0 end end # Command to create a project. class CreateCommand < AbstractCommand parameter "NAME", "the name of the project", :attribute_name => :project_name option ["-e", "--empty"], :flag, "Do not produce smoke test", :default => false def execute project = ProjectCreator.new project_name, empty? project.create end end # Command to compile a project. class CompileCommand < AbstractCommand def execute compiler = Compiler.new Dir.getwd compiler.compile end end # Command to start the web server. class ServerCommand < AbstractCommand def execute Server.new(Dir.getwd).start end end class MainCommand < AbstractCommand subcommand "create", "Create a project.", CreateCommand subcommand "compile", "Compile the web site.", CompileCommand subcommand "cc", "Compile the web site.", CompileCommand subcommand "server", "Run WEBrick.", ServerCommand end end Genit::MainCommand.run