Class: Bunto::Commands::Build

Inherits:
Bunto::Command show all
Defined in:
lib/bunto/commands/build.rb

Class Method Summary collapse

Methods inherited from Bunto::Command

add_build_options, configuration_from_options, inherited, process_site, subclasses

Class Method Details

.build(site, options) ⇒ Object

Build your Bunto site.

site - the Bunto::Site instance to build options - A Hash of options passed to the command

Returns nothing.



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/bunto/commands/build.rb', line 53

def build(site, options)
  t = Time.now
  source      = options["source"]
  destination = options["destination"]
  incremental = options["incremental"]
  Bunto.logger.info "Source:", source
  Bunto.logger.info "Destination:", destination
  Bunto.logger.info "Incremental build:",
    (incremental ? "enabled" : "disabled. Enable with --incremental")
  Bunto.logger.info "Generating..."
  process_site(site)
  Bunto.logger.info "", "done in #{(Time.now - t).round(3)} seconds."
end

.init_with_program(prog) ⇒ Object

Create the Mercenary command for the Bunto CLI for this Command



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/bunto/commands/build.rb', line 6

def init_with_program(prog)
  prog.command(:build) do |c|
    c.syntax      "build [options]"
    c.description "Build your site"
    c.alias :b

    add_build_options(c)

    c.action do |_, options|
      options["serving"] = false
      Bunto::Commands::Build.process(options)
    end
  end
end

.process(options) ⇒ Object

Build your bunto site Continuously watch if watch is set to true in the config.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/bunto/commands/build.rb', line 23

def process(options)
  # Adjust verbosity quickly

  Bunto.logger.adjust_verbosity(options)

  options = configuration_from_options(options)
  site = Bunto::Site.new(options)

  if options.fetch("skip_initial_build", false)
    Bunto.logger.warn "Build Warning:", "Skipping the initial build." \
                " This may result in an out-of-date site."
  else
    build(site, options)
  end

  if options.fetch("detach", false)
    Bunto.logger.info "Auto-regeneration:",
      "disabled when running server detached."
  elsif options.fetch("watch", false)
    watch(site, options)
  else
    Bunto.logger.info "Auto-regeneration:", "disabled. Use --watch to enable."
  end
end

.watch(site, options) ⇒ Object

Private: Watch for file changes and rebuild the site.

site - A Bunto::Site instance options - A Hash of options passed to the command

Returns nothing.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/bunto/commands/build.rb', line 73

def watch(site, options)
  # Warn Windows users that they might need to upgrade.

  if Utils::Platforms.bash_on_windows?
    Bunto.logger.warn "",
      "Auto-regeneration may not work on some Windows versions."
    Bunto.logger.warn "",
      "Please see: https://github.com/Microsoft/BashOnWindows/issues/216"
    Bunto.logger.warn "",
      "If it does not work, please upgrade Bash on Windows or "\
        "run Bunto with --no-watch."
  end

  External.require_with_graceful_fail "bunto-watch"
  watch_method = Bunto::Watcher.method(:watch)
  if watch_method.parameters.size == 1
    watch_method.call(
      options
    )
  else
    watch_method.call(
      options, site
    )
  end
end