Module: Rakit::Hugo

Defined in:
lib/rakit/hugo.rb

Overview

Build Hugo static sites from source. Used by publish_docs and tests. Contract: specs/008-hugo-docs-site/contracts/ruby-api.md

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.hugo_pathObject

Returns the value of attribute hugo_path.



10
11
12
# File 'lib/rakit/hugo.rb', line 10

def hugo_path
  @hugo_path
end

Class Method Details

.build(site_dir:, out_dir:) ⇒ true, false

Parameters:

  • site_dir (String)

    path to Hugo source (must exist and be a directory)

  • out_dir (String)

    path for build output

Returns:

  • (true)

    on success

  • (false)

    on failure (Hugo not found, build failed, or invalid site_dir)



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rakit/hugo.rb', line 20

def build(site_dir:, out_dir:)
  site_dir = ::File.expand_path(site_dir)
  out_dir = ::File.expand_path(out_dir)
  return false unless ::File.directory?(site_dir)
  return false if ::File.file?(site_dir)

  FileUtils.mkdir_p(out_dir)
  success = system(hugo_path, "-s", site_dir, "-d", out_dir, out: $stdout, err: $stderr)
  return false unless success
  return false unless ::File.directory?(out_dir) && (Dir.entries(out_dir) - %w[. ..]).any?

  true
end

.valid_site?(site_dir) ⇒ Boolean

Returns true if config.toml or config.yaml exists under site_dir.

Parameters:

  • site_dir (String)

    path to check

Returns:

  • (Boolean)

    true if config.toml or config.yaml exists under site_dir



36
37
38
39
40
# File 'lib/rakit/hugo.rb', line 36

def valid_site?(site_dir)
  dir = ::File.expand_path(site_dir)
  return false unless ::File.directory?(dir)
  ::File.file?(::File.join(dir, "config.toml")) || ::File.file?(::File.join(dir, "config.yaml"))
end