Sha256: b96f9037fcacf798223295e7a136323e850b8c4f2fe395f4a03c5f251c0d6c6c

Contents?: true

Size: 1.69 KB

Versions: 23

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

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 do
        run
      end
    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

    def self.find_site_dir
      start_here = Dir.pwd

      here = start_here
      until Nanoc::Int::SiteLoader.cwd_is_nanoc_site?
        Dir.chdir('..')
        return nil if Dir.pwd == here

        here = Dir.pwd
      end
      here
    ensure
      Dir.chdir(start_here)
    end

    def self.enter_site_dir
      dir = find_site_dir
      if dir.nil?
        raise ::Nanoc::Int::Errors::GenericTrivial, 'The current working directory, nor any of its parents, seems to be a Nanoc site.'
      end

      return if Dir.getwd == dir

      $stderr.puts "Using Nanoc site in #{dir}"
      Dir.chdir(dir)
    end

    # Asserts that the current working directory contains a site and loads the site into memory.
    #
    # @return [void]
    def load_site
      self.class.enter_site_dir

      $stderr.print 'Loading siteā€¦ '
      $stderr.flush
      site = Nanoc::Int::SiteLoader.new.new_from_cwd

      $stderr.puts 'done'
      site
    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

23 entries across 23 versions & 1 rubygems

Version Path
nanoc-4.11.12 lib/nanoc/cli/command_runner.rb
nanoc-4.11.11 lib/nanoc/cli/command_runner.rb
nanoc-4.11.10 lib/nanoc/cli/command_runner.rb
nanoc-4.11.9 lib/nanoc/cli/command_runner.rb
nanoc-4.11.8 lib/nanoc/cli/command_runner.rb
nanoc-4.11.7 lib/nanoc/cli/command_runner.rb
nanoc-4.11.6 lib/nanoc/cli/command_runner.rb
nanoc-4.11.5 lib/nanoc/cli/command_runner.rb
nanoc-4.11.4 lib/nanoc/cli/command_runner.rb
nanoc-4.11.3 lib/nanoc/cli/command_runner.rb
nanoc-4.11.2 lib/nanoc/cli/command_runner.rb
nanoc-4.11.1 lib/nanoc/cli/command_runner.rb
nanoc-4.11.0 lib/nanoc/cli/command_runner.rb
nanoc-4.10.4 lib/nanoc/cli/command_runner.rb
nanoc-4.10.3 lib/nanoc/cli/command_runner.rb
nanoc-4.10.2 lib/nanoc/cli/command_runner.rb
nanoc-4.10.1 lib/nanoc/cli/command_runner.rb
nanoc-4.10.0 lib/nanoc/cli/command_runner.rb
nanoc-4.9.9 lib/nanoc/cli/command_runner.rb
nanoc-4.9.8 lib/nanoc/cli/command_runner.rb