Cri::Command
# File lib/nanoc3/cli/commands/create_site.rb, line 243 def aliases [ 'cs' ] end
# 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
# File lib/nanoc3/cli/commands/create_site.rb, line 239 def name 'create_site' end
# 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
# 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
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
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
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
Generated with the Darkfish Rdoc Generator 2.