class Nanoc::CLI::Commands::CreateSite

Constants

DEFAULT_CONFIG
DEFAULT_ITEM
DEFAULT_LAYOUT
DEFAULT_RULES
DEFAULT_STYLESHEET

Protected Class Methods

array_to_yaml(array) click to toggle source

Converts the given array to YAML format

# File lib/nanoc/cli/commands/create-site.rb, line 13
def array_to_yaml(array)
  '[ ' + array.map { |s| "'" + s + "'" }.join(', ') + ' ]'
end

Public Instance Methods

run() click to toggle source
# File lib/nanoc/cli/commands/create-site.rb, line 296
def run
  # Extract arguments
  if arguments.length != 1
    raise Nanoc::Int::Errors::GenericTrivial, "usage: #{command.usage}"
  end
  path = arguments[0]

  # Check whether site exists
  if File.exist?(path) && (!File.directory?(path) || !(Dir.entries(path) - %w(. ..)).empty?) && !options[:force]
    raise(
      Nanoc::Int::Errors::GenericTrivial,
      "The site was not created because '#{path}' already exists. "            'Re-run the command using --force to create the site anyway.',
    )
  end

  # Setup notifications
  Nanoc::Int::NotificationCenter.on(:file_created) do |file_path|
    Nanoc::CLI::Logger.instance.file(:high, :create, file_path)
  end

  # Build entire site
  FileUtils.mkdir_p(path)
  FileUtils.cd(File.join(path)) do
    FileUtils.mkdir_p('content')
    FileUtils.mkdir_p('layouts')
    FileUtils.mkdir_p('lib')
    FileUtils.mkdir_p('output')

    write('nanoc.yaml', DEFAULT_CONFIG)
    write('Rules', DEFAULT_RULES)
    write('content/index.html', DEFAULT_ITEM)
    write('content/stylesheet.css', DEFAULT_STYLESHEET)
    write('layouts/default.html', DEFAULT_LAYOUT)
  end

  puts "Created a blank nanoc site at '#{path}'. Enjoy!"
end

Private Instance Methods

write(filename, content) click to toggle source
# File lib/nanoc/cli/commands/create-site.rb, line 337
def write(filename, content)
  File.write(filename, content)
  Nanoc::Int::NotificationCenter.post(:file_created, filename)
end