Methods

Class/Module Index [+]

Quicksearch

Nanoc::CLI::Commands::Deploy

Public Instance Methods

run() click to toggle source
# File lib/nanoc/cli/commands/deploy.rb, line 18
def run
  self.load_site

  # List deployers
  if options[:'list-deployers']
    deployers      = Nanoc::PluginRegistry.instance.find_all(Nanoc::Extra::Deployer)
    deployer_names = deployers.keys.sort_by { |k| k.to_s }
    puts "Available deployers:"
    deployer_names.each do |name|
      puts "  #{name}"
    end
    return
  end

  # Get & list configs
  deploy_configs = site.config.fetch(:deploy, {})

  if options[:list]
    if deploy_configs.empty?
      puts  "No deployment configurations."
    else
      puts "Available deployment configurations:"
      deploy_configs.keys.each do |name|
        puts "  #{name}"
      end
    end
    return
  end

  # Can't proceed further without a deploy config
  if deploy_configs.empty?
    raise Nanoc::Errors::GenericTrivial, "The site has no deployment configurations."
  end

  # Get target
  target = options.fetch(:target, :default).to_sym
  config = deploy_configs.fetch(target) do
    raise Nanoc::Errors::GenericTrivial, "The site has no deployment configuration for #{target}."
  end

  # Get deployer
  names = Nanoc::Extra::Deployer.all.keys
  name = config.fetch(:kind) do
    $stderr.puts "Warning: The specified deploy target does not have a kind attribute. Assuming rsync."
    'rsync'
  end
  deployer_class = Nanoc::Extra::Deployer.named(name)
  if deployer_class.nil?
    raise Nanoc::Errors::GenericTrivial, "The specified deploy target has an unrecognised kind “#{name}” (expected one of #{names.join(', ')})."
  end

  # Check
  unless options[:'no-check']
    runner = Nanoc::Extra::Checking::Runner.new(site)
    if runner.has_dsl?
      puts "Running issue checks…"
      ok = runner.run_for_deploy
      if !ok
        puts "Issues found, deploy aborted."
        return
      end
      puts "No issues found. Deploying!"
    end
  end

  # Run
  deployer = deployer_class.new(
    site.config[:output_dir],
    config,
    :dry_run => options[:'dry-run'])
  deployer.run
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.