Module: Bugler::CLI

Defined in:
lib/bugler.rb

Class Method Summary collapse

Class Method Details

.build(working_directory) ⇒ Object



57
58
59
60
61
62
63
64
65
# 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__) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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