class Bridgetown::Commands::Build

Public Class Methods

banner() click to toggle source

Public Instance Methods

build() click to toggle source

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

# File lib/bridgetown-core/commands/build.rb, line 26
def build
  Bridgetown.logger.adjust_verbosity(options)

  Bridgetown.logger.info "Starting:", "Bridgetown v#{Bridgetown::VERSION.magenta}" \
                         " (codename \"#{Bridgetown::CODE_NAME.yellow}\")"

  config_options = Serve.loaded_config || configuration_with_overrides(options)
  config_options["serving"] = false unless config_options["serving"]
  @site = Bridgetown::Site.new(config_options)

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

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

Protected Instance Methods

build_site(config_options) click to toggle source

Build your Bridgetown site.

options - A Hash of options passed to the command or loaded from config

Returns nothing.

# File lib/bridgetown-core/commands/build.rb, line 60
def build_site(config_options)
  t = Time.now
  display_folder_paths(config_options)
  if config_options["unpublished"]
    Bridgetown.logger.info "Unpublished mode:",
                           "enabled. Processing documents marked unpublished"
  end
  incremental = config_options["incremental"]
  Bridgetown.logger.info "Incremental build:",
                         (incremental ? "enabled" : "disabled. Enable with --incremental")
  Bridgetown.logger.info "Generating…"
  @site.process
  Bridgetown.logger.info "Done! 🎉", "#{"Completed".green} in less than" \
                          " #{(Time.now - t).ceil(2)} seconds."
end
display_folder_paths(config_options) click to toggle source

Display the source and destination folder paths

options - A Hash of options passed to the command

Returns nothing.

# File lib/bridgetown-core/commands/build.rb, line 90
def display_folder_paths(config_options)
  source = File.expand_path(config_options["source"])
  destination = File.expand_path(config_options["destination"])
  Bridgetown.logger.info "Environment:", Bridgetown.environment.cyan
  Bridgetown.logger.info "Source:", source
  Bridgetown.logger.info "Destination:", destination
  # TODO: work with arrays
  if config_options["plugins_dir"].is_a?(String)
    plugins_dir = File.expand_path(config_options["plugins_dir"])
    Bridgetown.logger.info "Custom Plugins:", plugins_dir if Dir.exist?(plugins_dir)
  end
end
watch_site(config_options) click to toggle source

Watch for file changes and rebuild the site.

options - A Hash of options passed to the command or loaded from config

Returns nothing.

# File lib/bridgetown-core/commands/build.rb, line 81
def watch_site(config_options)
  Bridgetown::Watcher.watch(@site, config_options)
end