Sha256: ec30cdbbc07d8ef78cb17fd558148b14bdc519bd78b9e181a4e235148959a86d
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
require 'tty-which' require 'pdk/util' require 'pdk/cli/util/spinner' module PDK module CLI class ExecGroup def initialize(message, opts = {}) @options = opts.merge(PDK::CLI::Util.spinner_opts_for_platform) if PDK::CLI::Util.interactive? @spinner = if parallel? TTY::Spinner::Multi.new("[:spinner] #{message}", @options) else TTY::Spinner.new("[:spinner] #{message}", @options) end @spinner.auto_spin end @threads_or_procs = [] @exit_codes = [] end def parallel? @options[:parallel].nil? ? true : @options[:parallel] end def register(&block) raise PDK::CLI::FatalError, _('No block registered') unless block_given? @threads_or_procs << if parallel? Thread.new do GettextSetup.initialize(File.absolute_path('../../../locales', File.dirname(__FILE__))) GettextSetup.negotiate_locale!(GettextSetup.candidate_locales) @exit_codes << yield end else block end end def add_spinner(message, opts = {}) return unless PDK::CLI::Util.interactive? @spinner.register("[:spinner] #{message}", @options.merge(opts).merge(PDK::CLI::Util.spinner_opts_for_platform)) end def exit_code if parallel? @threads_or_procs.each(&:join) else @exit_codes = @threads_or_procs.map(&:call) end exit_code = @exit_codes.max if exit_code.zero? && @spinner @spinner.success elsif @spinner @spinner.error end exit_code end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pdk-1.13.0 | lib/pdk/cli/exec_group.rb |