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