Parent

Class/Module Index [+]

Quicksearch

Nanoc3::CLI::Commands::CreateSite

Protected Class Methods

array_to_yaml(array) click to toggle source

Converts the given array to YAML format

# File lib/nanoc3/cli/commands/create_site.rb, line 11
def array_to_yaml(array)
  '[ ' + array.map { |s| "'" + s + "'" }.join(', ') + ' ]'
end

Public Instance Methods

aliases() click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 243
def aliases
  [ 'cs' ]
end
long_desc() click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 251
def long_desc
  'Create a new site at the given path. The site will use the ' +
  'filesystem_unified data source by default, but this can be ' +
  'changed using the --datasource commandline option.'
end
name() click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 239
def name
  'create_site'
end
option_definitions() click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 261
def option_definitions
  [
    # --datasource
    {
      :long => 'datasource', :short => 'd', :argument => :required,
      :desc => 'specify the data source for the new site'
    }
  ]
end
run(options, arguments) click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 271
def run(options, arguments)
  # Check arguments
  if arguments.length != 1
    $stderr.puts "usage: #{usage}"
    exit 1
  end

  # Extract arguments and options
  path        = arguments[0]
  data_source = options[:datasource] || 'filesystem_unified'

  # Check whether site exists
  if File.exist?(path)
    $stderr.puts "A site at '#{path}' already exists."
    exit 1
  end

  # Check whether data source exists
  if Nanoc3::DataSource.named(data_source).nil?
    $stderr.puts "Unrecognised data source: #{data_source}"
    exit 1
  end

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

  # Build entire site
  FileUtils.mkdir_p(path)
  FileUtils.cd(File.join(path)) do
    site_create_minimal(data_source)
    site_setup
    site_populate
  end

  puts "Created a blank nanoc site at '#{path}'. Enjoy!"
end
short_desc() click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 247
def short_desc
  'create a site'
end
usage() click to toggle source
# File lib/nanoc3/cli/commands/create_site.rb, line 257
def usage
  "nanoc3 create_site [options] path"
end

Protected Instance Methods

site_create_minimal(data_source) click to toggle source

Creates a configuration file and a output directory for this site, as well as a rakefile that loads the standard nanoc tasks.

# File lib/nanoc3/cli/commands/create_site.rb, line 314
def site_create_minimal(data_source)
  # Create output
  FileUtils.mkdir_p('output')

  # Create config
  File.open('config.yaml', 'w') { |io| io.write(DEFAULT_CONFIG.make_compatible_with_env) }
  Nanoc3::NotificationCenter.post(:file_created, 'config.yaml')

  # Create rakefile
  File.open('Rakefile', 'w') do |io|
    io.write "require 'nanoc3/tasks'"
  end
  Nanoc3::NotificationCenter.post(:file_created, 'Rakefile')

  # Create rules
  File.open('Rules', 'w') do |io|
    io.write DEFAULT_RULES.make_compatible_with_env
  end
  Nanoc3::NotificationCenter.post(:file_created, 'Rules')
end
site_populate() click to toggle source

Populates the site with some initial data, such as a root item, a default layout, and so on.

# File lib/nanoc3/cli/commands/create_site.rb, line 349
def site_populate
  # Get site
  site = Nanoc3::Site.new('.')
  data_source = site.data_sources[0]

  # Create home page
  data_source.create_item(
    DEFAULT_ITEM.make_compatible_with_env,
    { :title => "Home" },
    '/'
  )

  # Create stylesheet
  data_source.create_item(
    DEFAULT_STYLESHEET.make_compatible_with_env,
    {},
    '/stylesheet/',
    :extension => '.css'
  )

  # Create layout
  data_source.create_layout(
    DEFAULT_LAYOUT.make_compatible_with_env,
    {},
    '/default/'
  )

  # Create code
  FileUtils.mkdir_p('lib')
  File.open('lib/default.rb', 'w') do |io|
    io.write "\# All files in the 'lib' directory will be loaded\n"
    io.write "\# before nanoc starts compiling.\n"
  end
end
site_setup() click to toggle source

Sets up the site’s data source, i.e. creates the bare essentials for this data source to work.

# File lib/nanoc3/cli/commands/create_site.rb, line 337
def site_setup
  # Get site
  site = Nanoc3::Site.new('.')

  # Set up data sources
  site.data_sources.each do |data_source|
    data_source.loading { data_source.setup }
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.