Sha256: cc09e8c165d13a12dff9284a036bd7b59c79d6321c8422121b2be7f92d262049
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
# frozen_string_literal: true require 'dry/cli' require 'forwardable' require 'tty/box' module Githuh module CLI class Launcher attr_accessor :argv, :stdin, :stdout, :stderr, :kernel def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = nil) if ::Githuh.launcher raise(ArgumentError, "Another instance of CLI Launcher was detected, aborting.") else Githuh.launcher = self end self.argv = argv self.stdin = stdin self.stdout = stdout self.stderr = stderr self.kernel = kernel end def execute! if argv.empty? || !(%w(--help -h) & argv).empty? stdout.puts <<~BANNER #{'Githuh CLI'.bold.yellow} #{::Githuh::VERSION.bold.green} — API client for Github.com. #{'© 2020 Konstantin Gredeskoul, All rights reserved. MIT License.'.cyan} BANNER Githuh.configure_kernel_behavior! help: true else Githuh.configure_kernel_behavior! end ::Dry::CLI.new(Commands).call(arguments: argv, out: stdout, err: stderr) rescue StandardError => e box = TTY::Box.frame('ERROR:', ' ', e.message, padding: 1, align: :left, title: { top_center: Githuh::BANNER }, width: 80, style: { bg: :red, border: { fg: :bright_yellow, bg: :red } }) stderr.print box ensure Githuh.restore_kernel_behavior! exit(10) unless Githuh.in_test end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
githuh-0.1.2 | lib/githuh/cli/launcher.rb |