Sha256: 791eb05dba4098666e8131fe00beb7afeee5d32fc41eec73aa5f9efae6d48cc0

Contents?: true

Size: 1.74 KB

Versions: 26

Compression:

Stored size: 1.74 KB

Contents

module Nanoc::CLI
  # A command runner subclass for Nanoc commands that adds Nanoc-specific
  # convenience methods and error handling.
  #
  # @api private
  class CommandRunner < ::Cri::CommandRunner
    # @see http://rubydoc.info/gems/cri/Cri/CommandRunner#call-instance_method
    #
    # @return [void]
    def call
      Nanoc::CLI::ErrorHandler.handle_while(command: self) do
        run
      end
    end

    # Gets the site ({Nanoc::Int::Site} instance) in the current directory and
    # loads its data.
    #
    # @return [Nanoc::Int::Site] The site in the current working directory
    def site
      # Load site if possible
      @site ||= nil
      if is_in_site_dir? && @site.nil?
        @site = Nanoc::Int::SiteLoader.new.new_from_cwd
      end

      @site
    end

    # For debugging purposes.
    #
    # @api private
    def site=(new_site)
      @site = new_site
    end

    # @return [Boolean] true if the current working directory is a Nanoc site
    #   directory, false otherwise
    def in_site_dir?
      Nanoc::Int::SiteLoader.cwd_is_nanoc_site?
    end
    alias is_in_site_dir? in_site_dir?

    # Asserts that the current working directory contains a site and loads the site into memory.
    #
    # @return [void]
    def load_site(preprocess: false)
      $stderr.print 'Loading siteā€¦ '
      $stderr.flush

      if site.nil?
        raise ::Nanoc::Int::Errors::GenericTrivial, 'The current working directory does not seem to be a Nanoc site.'
      end

      if preprocess
        site.compiler.action_provider.preprocess(site)
      end

      $stderr.puts 'done'
    end

    # @return [Boolean] true if debug output is enabled, false if not
    #
    # @see Nanoc::CLI.debug?
    def debug?
      Nanoc::CLI.debug?
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
nanoc-4.7.9 lib/nanoc/cli/command_runner.rb
nanoc-4.7.8 lib/nanoc/cli/command_runner.rb
nanoc-4.7.7 lib/nanoc/cli/command_runner.rb
nanoc-4.7.6 lib/nanoc/cli/command_runner.rb
nanoc-4.7.5 lib/nanoc/cli/command_runner.rb
nanoc-4.7.4 lib/nanoc/cli/command_runner.rb
nanoc-4.7.3 lib/nanoc/cli/command_runner.rb
nanoc-4.7.2 lib/nanoc/cli/command_runner.rb
nanoc-4.7.1 lib/nanoc/cli/command_runner.rb
nanoc-4.7.0 lib/nanoc/cli/command_runner.rb
nanoc-4.6.4 lib/nanoc/cli/command_runner.rb
nanoc-4.6.3 lib/nanoc/cli/command_runner.rb
nanoc-4.6.2 lib/nanoc/cli/command_runner.rb
nanoc-4.6.1 lib/nanoc/cli/command_runner.rb
nanoc-4.6.0 lib/nanoc/cli/command_runner.rb
nanoc-4.5.4 lib/nanoc/cli/command_runner.rb
nanoc-4.5.3 lib/nanoc/cli/command_runner.rb
nanoc-4.5.2 lib/nanoc/cli/command_runner.rb
nanoc-4.5.1 lib/nanoc/cli/command_runner.rb
nanoc-4.5.0 lib/nanoc/cli/command_runner.rb