Class: BuildMaster::Site

Inherits:
Object
  • Object
show all
Defined in:
lib/buildmaster/site/site.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(spec) ⇒ Site

Returns a new instance of Site.



27
28
29
30
31
# File 'lib/buildmaster/site/site.rb', line 27

def initialize(spec)
  @spec = spec
  @spec.validate_inputs
  @template = @spec.load_template
end

Class Method Details

.collect_candidates(dir) ⇒ Object



21
22
23
24
25
# File 'lib/buildmaster/site/site.rb', line 21

def Site::collect_candidates(dir)
  dir.list.select do |item|
    item.respond_to?(:file) && item.file('template.html').exists?
  end
end

.setup(spec, templates_dir = spec.cotta.dir(__FILE__).parent.dir('templates')) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/buildmaster/site/site.rb', line 11

def Site::setup(spec, templates_dir = spec.cotta.dir(__FILE__).parent.dir('templates'))
  command_line = spec.cotta.command_interface
  command_line.puts 'setting up site'
  candidates = collect_candidates(templates_dir).collect {|item| item.name}
  selection = command_line.prompt_for_choice('Select the template that you want to use', candidates)
  selected_dir = templates_dir.dir(selection)
  selected_dir.file('template.html').copy_to(spec.template_file)
  selected_dir.dir('content').copy_to(spec.content_dir)
end

Instance Method Details

#buildObject



46
47
48
49
50
# File 'lib/buildmaster/site/site.rb', line 46

def build
  @count = 0
  build_directory(@spec.output_dir, @spec.content_dir, @template)
  puts "Generated file count: #{@count}"
end

#execute(arguments) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/buildmaster/site/site.rb', line 38

def execute(arguments)
  action = 'build'
  if arguments.size > 0
    action = arguments[0]
  end
  send action
end

#output_dirObject



34
35
36
# File 'lib/buildmaster/site/site.rb', line 34

def output_dir
  @spec.output_dir
end

#server(*args) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/buildmaster/site/site.rb', line 52

def server(*args)
require 'site_server'
  @server = SiteServer.new(@spec, *args)
  ['INT', 'TERM'].each { |signal|
       trap(signal){ @server.stop} 
  }  
  @server.start
end

#test(port_number = 2000) ⇒ Object



61
62
63
# File 'lib/buildmaster/site/site.rb', line 61

def test(port_number=2000)
  launch_server(port_number) {|port_number| SiteTester.test("http://localhost:#{port_number}/index.html")}
end

#test_offline(port_number = 2000) ⇒ Object



65
66
67
# File 'lib/buildmaster/site/site.rb', line 65

def test_offline(port_number=2000)
  launch_server(port_number) {|port_number| SiteTester.test_offline("http://localhost:#{port_number}/index.html")}
end