Sha256: a5fb996f8bf4e8b49b4156f4344df4924a41d91d2847fd3605f3cd04f804197c

Contents?: true

Size: 1011 Bytes

Versions: 2

Compression:

Stored size: 1011 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-#{rand(10000) + 1}"
        @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

2 entries across 2 versions & 1 rubygems

Version Path
teamocil-0.4.4 lib/teamocil/layout/session.rb
teamocil-0.4.3 lib/teamocil/layout/session.rb