Sha256: e689e955d7a2e13aa6b30a951c0304e2a00ace103246f9c49440b5f83a72afc1

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

# encoding: utf-8

require 'guard/compat/plugin'

require 'nanoc'
require 'nanoc/cli'

module Guard
  class Nanoc < Plugin
    def initialize(options={})
      @dir = options[:dir] || '.'
      super
    end

    def start
      self.setup_listeners
      self.recompile_in_subprocess
    end

    def run_all
      self.recompile_in_subprocess
    end

    def run_on_changes(paths)
      self.recompile_in_subprocess
    end

    def run_on_removals(paths)
      self.recompile_in_subprocess
    end

  protected

    def setup_listeners
      ::Nanoc::CLI.setup

      ::Nanoc::CLI::Commands::CompileListeners::FileActionPrinter
        .new(reps: [])
        .start
    end

    def recompile_in_subprocess
      if Process.respond_to?(:fork)
        pid = Process.fork { self.recompile }
        Process.waitpid(pid)
      else
        self.recompile
      end
    end

    def recompile
      Dir.chdir(@dir) do
        site = ::Nanoc::Int::SiteLoader.new.new_from_cwd
        site.compile
      end
      self.notify_success
    rescue => e
      self.notify_failure
      ::Nanoc::CLI::ErrorHandler.print_error(e)
    end

    def notify_success
      Compat::UI.notify('Compilation succeeded', :title => 'nanoc', :image => :success)
      Compat::UI.info 'Compilation succeeded.'
    end

    def notify_failure
      Compat::UI.notify('Compilation FAILED', :title => 'nanoc', :image => :failed)
      Compat::UI.error 'Compilation failed!'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
guard-nanoc-2.1.2 lib/guard/nanoc.rb