Sha256: 98326eb65677f76a1e26d29ab784463b3a62f800b45bb540298706b846925e36

Contents?: true

Size: 1.64 KB

Versions: 33

Compression:

Stored size: 1.64 KB

Contents

require "site_hook"
require "site_hook/logger"

module SiteHook
  class Runner
    def initialize(argv = ARGV, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel)
      @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel
    end

    def execute!
      begin
        SiteHook::PreLogger.new($stdin, $stdout, $stderr)
        SiteHook::Config.new
      rescue SiteHook::NoLogsError => e
        FileUtils.mkpath(e.path)
      rescue SiteHook::NoConfigError => e
        TTY::File.create_file(e.path, SiteHook::ConfigSections.all_samples)
      end
      exit_code = begin
                    $stderr = @stderr
                    $stdin = @stdin
                    $stdout = @stdout
                    SiteHook::PreLogger.new($stdin, $stdout, $stderr)
                    SiteHook::Config.new
                    SiteHook::Log.new($stdin, $stdout, $stderr)
                    SiteHook::CLI.start(@argv)
                    0
                  rescue StandardError => e
                    b = e.backtrace
                    unless e.class == SiteHook::NoConfigError
                      STDERR.puts("#{b.shift}: #{e.message} (#{e.class})")
                      STDERR.puts(b.map { |s| "\tfrom #{s}" }.join("\n"))
                      1
                    end
                    0
                  rescue SystemExit => e
                    STDERR.puts e.backtrace
                    STDERR.puts e.status
                    1
                  ensure
                    $stderr = STDERR
                    $stdin = STDIN
                    $stdout = STDOUT
                  end
      @kernel.exit(exit_code)
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
site_hook-1.0.30 lib/site_hook/runner.rb
site_hook-1.0.29 lib/site_hook/runner.rb
site_hook-1.0.28 lib/site_hook/runner.rb
site_hook-1.0.27 lib/site_hook/runner.rb
site_hook-1.0.26 lib/site_hook/runner.rb
site_hook-1.0.25 lib/site_hook/runner.rb
site_hook-1.0.24 lib/site_hook/runner.rb
site_hook-1.0.23 lib/site_hook/runner.rb
site_hook-1.0.22 lib/site_hook/runner.rb
site_hook-1.0.21 lib/site_hook/runner.rb
site_hook-1.0.20 lib/site_hook/runner.rb
site_hook-1.0.19 lib/site_hook/runner.rb
site_hook-1.0.18 lib/site_hook/runner.rb
site_hook-1.0.17 lib/site_hook/runner.rb
site_hook-1.0.16 lib/site_hook/runner.rb
site_hook-1.0.15 lib/site_hook/runner.rb
site_hook-1.0.14 lib/site_hook/runner.rb
site_hook-1.0.13 lib/site_hook/runner.rb
site_hook-1.0.12 lib/site_hook/runner.rb
site_hook-1.0.11 lib/site_hook/runner.rb