Sha256: 474541c745e81014cf1035821ca2203828bdcf52d2f03914382ec74fd23ea826

Contents?: true

Size: 1.74 KB

Versions: 8

Compression:

Stored size: 1.74 KB

Contents

require 'shellwords'

module Aptible
  module CLI
    module Subcommands
      module Config
        # rubocop:disable MethodLength
        # rubocop:disable CyclomaticComplexity
        def self.included(thor)
          thor.class_eval do
            include Helpers::Operation
            include Helpers::App

            desc 'config', "Print an app's current configuration"
            option :app
            def config
              app = ensure_app(options)
              config = app.current_configuration
              env = config ? config.env : nil
              puts formatted_config(env || {})
            end

            desc 'config:add', 'Add an ENV variable to an app'
            option :app
            define_method 'config:add' do |*args|
              # FIXME: define_method - ?! Seriously, WTF Thor.
              app = ensure_app(options)
              env = Hash[args.map { |arg| arg.split('=', 2) }]
              operation = app.create_operation(type: 'configure', env: env)
              poll_for_success(operation)
            end

            desc 'config:rm', 'Remove an ENV variable from an app'
            option :app
            define_method 'config:rm' do |*args|
              # FIXME: define_method - ?! Seriously, WTF Thor.
              app = ensure_app(options)
              env = Hash[args.map { |arg| [arg, ''] }]
              operation = app.create_operation(type: 'configure', env: env)
              poll_for_success(operation)
            end

            private

            def formatted_config(env)
              env.map { |k, v| "#{k}=#{Shellwords.escape(v)}" }.join("\n")
            end
          end
        end
        # rubocop:enable CyclomaticComplexity
        # rubocop:enable MethodLength
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
aptible-cli-0.3.6 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.3.5 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.3.4 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.3.3 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.3.2 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.3.1 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.3.0 lib/aptible/cli/subcommands/config.rb
aptible-cli-0.2.0 lib/aptible/cli/subcommands/config.rb