Sha256: 78cc08e3c6d7203ef199c0bc98062decdcf3d3a376b814f9b5ed3cea5a49628c

Contents?: true

Size: 992 Bytes

Versions: 3

Compression:

Stored size: 992 Bytes

Contents

module Teamocil
  class Layout
    # This class represents a session within tmux
    class Session
      attr_reader :options, :windows, :name

      # Initialize a new tmux session
      #
      # @param options [Hash] the options, mostly passed by the CLI
      # @param attrs [Hash] the session data from the layout file
      def initialize(options, attrs={})
        raise Teamocil::Error::LayoutError.new("You must specify a `windows` or `session` key for your layout.") unless attrs["windows"]
        @name = attrs["name"] || "teamocil-session"
        @windows = attrs["windows"].each_with_index.map { |window, window_index| Window.new(self, window_index, window) }
        @options = options
      end

      # Generate commands to send to tmux
      #
      # @return [Array]
      def generate_commands
        commands = []
        commands << "tmux rename-session \"#{@name}\"" unless @name.nil?
        commands << @windows.map(&:generate_commands)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
teamocil-0.4.2 lib/teamocil/layout/session.rb
teamocil-0.4.1 lib/teamocil/layout/session.rb
teamocil-0.4 lib/teamocil/layout/session.rb