Sha256: 96feee91bd17c486dc47b12479b0ee1412db7c6aa0d037325bada9299791100a

Contents?: true

Size: 1.45 KB

Versions: 41

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

require_relative "includes"

module AwsAssumeRole::Ui
    include AwsAssumeRole

    ::I18n.load_path += Dir.glob(File.join(File.realpath(__dir__), "..", "..", "i18n", "*.{rb,yml,yaml}"))
    ::I18n.locale = ENV.fetch("LANG", nil).split(".").first.split("_").first || I18n.default_locale

    module_function

    def out(text)
        puts text
    end

    def pastel
        @pastel ||= Pastel.new
    end

    def input
        @input ||= HighLine.new($stdin, $stderr)
    end

    def validation_errors_to_s(result)
        text = result.errors.keys.map do |k|
            result.errors[k].join(";")
        end.join(" ")
        text
    end

    def error(text)
        puts pastel.red(text)
    end

    def show_validation_errors(result)
        error validation_errors_to_s(result)
    end

    def ask_with_validation(variable_name, question, type: Dry::Types["coercible.string"], &block)
        STDOUT.puts pastel.yellow question
        validator = Dry::Validation.Schema do
            configure do
                config.messages = :i18n
            end
            required(variable_name) { instance_eval(&block) }
        end
        result = validator.call(variable_name => type[(STDIN.gets || "").chomp])
        return result.to_h[variable_name] if result.success?
        show_validation_errors result
        ask_with_validation variable_name, question, &block
    end

    def t(*options)
        ::I18n.t(options).first
    end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
aws_assume_role-1.2.3-universal-freebsd lib/aws_assume_role/ui.rb
aws_assume_role-1.2.3-universal-darwin lib/aws_assume_role/ui.rb
aws_assume_role-1.2.3-universal-linux lib/aws_assume_role/ui.rb
aws_assume_role-1.2.3-universal-openbsd lib/aws_assume_role/ui.rb
aws_assume_role-1.2.3 lib/aws_assume_role/ui.rb
aws_assume_role-1.2.3-linux lib/aws_assume_role/ui.rb
aws_assume_role-1.2.2-universal-darwin lib/aws_assume_role/ui.rb
aws_assume_role-1.2.2-universal-linux lib/aws_assume_role/ui.rb
aws_assume_role-1.2.2-linux lib/aws_assume_role/ui.rb
aws_assume_role-1.2.2-universal-openbsd lib/aws_assume_role/ui.rb
aws_assume_role-1.2.2-universal-freebsd lib/aws_assume_role/ui.rb
aws_assume_role-1.2.2 lib/aws_assume_role/ui.rb
aws_assume_role-1.2.1 lib/aws_assume_role/ui.rb
aws_assume_role-1.2.1-linux lib/aws_assume_role/ui.rb
aws_assume_role-1.2.1-universal-openbsd lib/aws_assume_role/ui.rb
aws_assume_role-1.2.1-universal-darwin lib/aws_assume_role/ui.rb
aws_assume_role-1.2.1-universal-freebsd lib/aws_assume_role/ui.rb
aws_assume_role-1.2.1-universal-linux lib/aws_assume_role/ui.rb
aws_assume_role-1.2.0 lib/aws_assume_role/ui.rb
aws_assume_role-1.2.0-linux lib/aws_assume_role/ui.rb