Sha256: 6ae05ffb6d120e68eb4a60d6cb9220824da3c2524dcec1ffe49a81d562bfc253

Contents?: true

Size: 1.61 KB

Versions: 5

Compression:

Stored size: 1.61 KB

Contents

require 'sfn'

module Sfn
  class Command
    # List command
    class List < Command

      include Sfn::CommandModule::Base

      # Run the list command
      def execute!
        ui.table(self) do
          table(:border => false) do
            stacks = get_stacks
            row(:header => true) do

              allowed_attributes.each do |attr|
                width_val = stacks.map{|e| e[attr].to_s.length}.push(attr.length).max + 2
                width_val = width_val > 70 ? 70 : width_val < 20 ? 20 : width_val
                column attr.split('_').map(&:capitalize).join(' '), :width => width_val
              end
            end
            get_stacks.each do |stack|
              row do
                allowed_attributes.each do |attr|
                  column stack[attr]
                end
              end
            end
          end
        end.display
      end

      # Get the list of stacks to display
      #
      # @return [Array<Hash>]
      def get_stacks
        provider.stacks.all.map do |stack|
          Smash.new(stack.attributes)
        end.sort do |x, y|
          if(y[:created].to_s.empty?)
            -1
          elsif(x[:created].to_s.empty?)
            1
          else
            Time.parse(x[:created].to_s) <=> Time.parse(y[:created].to_s)
          end
        end
      end

      # @return [Array<String>] default attributes to display
      def default_attributes
        if(provider.connection.provider == :aws)
          %w(name created updated status template_description)
        else
          %w(name created updated status description)
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sfn-2.1.0 lib/sfn/command/list.rb
sfn-2.0.6 lib/sfn/command/list.rb
sfn-2.0.4 lib/sfn/command/list.rb
sfn-2.0.2 lib/sfn/command/list.rb
sfn-2.0.0 lib/sfn/command/list.rb