module Bugler::CLI

Public Class Methods

build(working_directory) click to toggle source
# File lib/bugler.rb, line 57
def self.build(working_directory)
        raise Bugler::Config::ERROR_SERVER_NOT_A_PROJECT unless File.exists?(".bugler")
        Dir.mkdir 'build' unless File.exists?('build')
        # For now, copy over the erbs to htmls
        Dir.foreach File.join(working_directory,'src') do |f|
                next if f == '.' or f == '..'
                FileUtils.cp File.join('src', f), File.join(working_directory, 'build', f.sub!('erb', 'html'))
        end
end
exec(argv, working_directory=__dir__) click to toggle source
# File lib/bugler.rb, line 11
def self.exec(argv, working_directory=__dir__)
        if argv.empty?
                print Bugler::Config::HELP_TEXT
        elsif argv[0] == 'init'
                argv.shift
                self.init(argv)
        elsif argv[0] == 'server'
                self.server working_directory
        elsif argv[0] == 'build'
                self.build working_directory
        else
                raise Bugler::Config::ERROR_EXEC_UNRECOGNIZED
        end
end
init(argv) click to toggle source
# File lib/bugler.rb, line 25
def self.init(argv)
        raise Bugler::Config::ERROR_INIT_ARGV unless argv.kind_of?(Array)
        raise Bugler::Config::ERROR_INIT_NO_NAME unless argv.any?
        # Create directory structure
        name = argv.shift
        dirs = [name, File.join(name, Bugler::Config::SOURCE_DIRNAME)]
        files = [File.join(name, ".bugler"), File.join(name, Bugler::Config::SOURCE_DIRNAME, "index.erb")]
        dirs.each do |d|
                Dir.mkdir d unless File.exists?(d)
        end
        files.each do |f|
                File.write(f, "") unless File.exists?(f)
        end
end
server(working_directory, port=Bugler::Config::DEFAULT_PORT) click to toggle source
# File lib/bugler.rb, line 39
def self.server(working_directory, port=Bugler::Config::DEFAULT_PORT)
        raise Bugler::Config::ERROR_SERVER_NOT_A_PROJECT unless File.exists?(".bugler")

        # Build if not already built
        if !File.exists?(File.join(working_directory, "build"))
                self.build(working_directory)
        end

        puts "Starting Bugler test server on port %i..." % port

        server = WEBrick::HTTPServer.new :Port => port, :DocumentRoot => File.join(working_directory, 'build')

        trap 'INT' do
                server.shutdown
        end

        server.start
end