Sha256: ba2d410e20c4cf59d78469a45734af729a1062e757038ddd79382d08733a3c69

Contents?: true

Size: 1.7 KB

Versions: 92

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true

module Gem::Resolver::Molinillo
  # Conveys information about the resolution process to a user.
  module UI
    # The {IO} object that should be used to print output. `STDOUT`, by default.
    #
    # @return [IO]
    def output
      STDOUT
    end

    # Called roughly every {#progress_rate}, this method should convey progress
    # to the user.
    #
    # @return [void]
    def indicate_progress
      output.print '.' unless debug?
    end

    # How often progress should be conveyed to the user via
    # {#indicate_progress}, in seconds. A third of a second, by default.
    #
    # @return [Float]
    def progress_rate
      0.33
    end

    # Called before resolution begins.
    #
    # @return [void]
    def before_resolution
      output.print 'Resolving dependencies...'
    end

    # Called after resolution ends (either successfully or with an error).
    # By default, prints a newline.
    #
    # @return [void]
    def after_resolution
      output.puts
    end

    # Conveys debug information to the user.
    #
    # @param [Integer] depth the current depth of the resolution process.
    # @return [void]
    def debug(depth = 0)
      if debug?
        debug_info = yield
        debug_info = debug_info.inspect unless debug_info.is_a?(String)
        debug_info = debug_info.split("\n").map { |s| ":#{depth.to_s.rjust 4}: #{s}" }
        output.puts debug_info
      end
    end

    # Whether or not debug messages should be printed.
    # By default, whether or not the `MOLINILLO_DEBUG` environment variable is
    # set.
    #
    # @return [Boolean]
    def debug?
      return @debug_mode if defined?(@debug_mode)
      @debug_mode = ENV['MOLINILLO_DEBUG']
    end
  end
end

Version data entries

92 entries across 92 versions & 1 rubygems

Version Path
rubygems-update-3.2.31 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.30 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.29 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.28 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.27 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.26 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.25 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.24 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.23 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.22 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.21 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.20 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.19 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.18 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.17 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.16 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.15 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.14 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.13 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
rubygems-update-3.2.12 lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb