teamocil 0.4 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +28 -28
- data/examples/four-splits.yml +6 -6
- data/examples/one-and-three-splits.yml +6 -6
- data/examples/six-splits.yml +8 -8
- data/examples/two-horizontal-splits.yml +4 -4
- data/examples/two-vertical-splits.yml +4 -4
- data/lib/teamocil.rb +1 -1
- data/lib/teamocil/layout.rb +1 -1
- data/lib/teamocil/layout/{split.rb → pane.rb} +10 -10
- data/lib/teamocil/layout/window.rb +6 -6
- data/spec/cli_spec.rb +3 -0
- data/spec/fixtures/.my-fancy-layouts-directory/sample-3.yml +2 -2
- data/spec/fixtures/.teamocil/sample-2.yml +2 -2
- data/spec/fixtures/.teamocil/sample.yml +2 -2
- data/spec/fixtures/layouts.yml +5 -5
- data/spec/layout_spec.rb +35 -28
- data/teamocil.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDU3ZmI2YzQ4NWYyZThlYzM1NmExNTQ4MjE3YjgxMGU3ZGYzZjg0Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2Q2Y2NkYTMzYzVhNjc5Njk2NGRkMjU0OTQ1NGRhMjlkZjI3M2JiYg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWM1OTVjMWE1YmZjMjViODFhN2RkNDIwMDlmNDc0NzZlZmJhZjhiNDEzN2I0
|
10
|
+
ZWQyMDExNWJlMjUxODZiNjk0Y2JlMGViY2E1MzAyMDYyNDY3OTc1NGU3NmVj
|
11
|
+
YmUyYmQ3YTAwMjFiNGRlNTI3NDI2YWU4Yzk5NzhhYmJlOWJhNWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTA5ODk0OGVlZmFiNzA3MjM1YjhlNjEyYTlmYjBiYzc0OWU3MDViZDUyMTE0
|
14
|
+
MDk4N2E4YmU1ZDMxODQ3ZDRiM2E5ZDk1YThmOTUxNmFjNGE0MTQ1MTlmZWFk
|
15
|
+
OWVhNmI0NzQ3NTMyOWU4MWIwZTRjZDJhZDlkMDY1NzllMmQ2N2M=
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Teamocil [](http://travis-ci.org/remiprev/teamocil)
|
2
2
|
|
3
|
-
Teamocil is a simple tool used to automatically create sessions, windows and
|
3
|
+
Teamocil is a simple tool used to automatically create sessions, windows and panes in [tmux](http://tmux.sourceforge.net/) with YAML files.
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
@@ -48,11 +48,11 @@ If you are not using a top-level `session` key, then the first key of your layou
|
|
48
48
|
#### Item keys
|
49
49
|
|
50
50
|
* `name` (the name that will appear in `tmux` statusbar)
|
51
|
-
* `root` (the directory in which every
|
52
|
-
* `filters` (a hash of `before` and `after` commands to run for each
|
51
|
+
* `root` (the directory in which every pane will be created)
|
52
|
+
* `filters` (a hash of `before` and `after` commands to run for each pane)
|
53
53
|
* `clear` (whether or not to prepend a `clear` command before the `before` filters list)
|
54
54
|
* `layout` (a layout name or serialized string supported by the `tmux select-layout` command)
|
55
|
-
* `
|
55
|
+
* `panes` (an array of pane items)
|
56
56
|
* `options` (a hash of `tmux` options, see `man tmux` for a list)
|
57
57
|
|
58
58
|
#### Notes
|
@@ -68,7 +68,7 @@ You can then use the value as a string, like so:
|
|
68
68
|
```yaml
|
69
69
|
- name: "a-window-with-weird-layout"
|
70
70
|
layout: "4d71,204x51,0,0{101x51,0,0,114,102x51,102,0[102x10,102,0,118,102x40,102,11,115]}"
|
71
|
-
|
71
|
+
panes: …
|
72
72
|
```
|
73
73
|
|
74
74
|
#### Example
|
@@ -82,33 +82,33 @@ windows:
|
|
82
82
|
root: "~/Projects/foo-www"
|
83
83
|
filters:
|
84
84
|
before:
|
85
|
-
- "echo 'Let’s use ruby-1.9.3 for each
|
85
|
+
- "echo 'Let’s use ruby-1.9.3 for each pane in this window.'"
|
86
86
|
- "rbenv local 1.9.3-p374"
|
87
|
-
|
88
|
-
[
|
87
|
+
panes:
|
88
|
+
[panes list]
|
89
89
|
- name: "my-second-window"
|
90
90
|
layout: tiled
|
91
91
|
root: "~/Projects/foo-api"
|
92
|
-
|
93
|
-
[
|
92
|
+
panes:
|
93
|
+
[panes list]
|
94
94
|
- name: "my-third-window"
|
95
95
|
layout: main-vertical
|
96
96
|
root: "~/Projects/foo-daemons"
|
97
|
-
|
98
|
-
[
|
97
|
+
panes:
|
98
|
+
[panes list]
|
99
99
|
```
|
100
100
|
|
101
|
-
###
|
101
|
+
### Panes
|
102
102
|
|
103
|
-
Every window must define an array of
|
103
|
+
Every window must define an array of panes that will be created within it. A vertical or horizontal pane will be created, depending on whether the `width` or `height` parameter is used. If a `layout` option is used for the window, the `width` and `height` attributes won’t have any effect.
|
104
104
|
|
105
105
|
#### Item keys
|
106
106
|
|
107
|
-
* `cmd` (the commands to initially execute in the
|
108
|
-
* `width` (the
|
109
|
-
* `height` (the
|
110
|
-
* `target` (the
|
111
|
-
* `focus` (the
|
107
|
+
* `cmd` (the commands to initially execute in the pane)
|
108
|
+
* `width` (the pane width, in percentage)
|
109
|
+
* `height` (the pane width, in percentage)
|
110
|
+
* `target` (the pane to set focus on before creating the current one)
|
111
|
+
* `focus` (the pane to set focus on after initializing all the panes for a window)
|
112
112
|
|
113
113
|
#### Example
|
114
114
|
|
@@ -119,8 +119,8 @@ windows:
|
|
119
119
|
layout: even-vertical
|
120
120
|
filters:
|
121
121
|
before: "rbenv local 2.0.0-p0"
|
122
|
-
after: "echo 'I am done initializing this
|
123
|
-
|
122
|
+
after: "echo 'I am done initializing this pane.'"
|
123
|
+
panes:
|
124
124
|
- cmd: "git status"
|
125
125
|
- cmd: "bundle exec rails server --port 4000"
|
126
126
|
focus: true
|
@@ -133,16 +133,16 @@ windows:
|
|
133
133
|
|
134
134
|
See more example files in the `examples` directory.
|
135
135
|
|
136
|
-
### Simple two
|
136
|
+
### Simple two panes window
|
137
137
|
|
138
138
|
#### Content of `~/.teamocil/sample-1.yml`
|
139
139
|
|
140
140
|
```yaml
|
141
141
|
windows:
|
142
|
-
- name: "sample-two-
|
142
|
+
- name: "sample-two-panes"
|
143
143
|
root: "~/Code/sample/www"
|
144
144
|
layout: even-horizontal
|
145
|
-
|
145
|
+
panes:
|
146
146
|
- cmd: ["pwd", "ls -la"]
|
147
147
|
- cmd: "rails server --port 3000"
|
148
148
|
```
|
@@ -162,16 +162,16 @@ windows:
|
|
162
162
|
| | |
|
163
163
|
'------------------'------------------'
|
164
164
|
|
165
|
-
### Four tiled
|
165
|
+
### Four tiled panes window
|
166
166
|
|
167
167
|
#### Content of `~/.teamocil/sample-2.yml`
|
168
168
|
|
169
169
|
```yaml
|
170
170
|
windows:
|
171
|
-
- name: "sample-four-
|
171
|
+
- name: "sample-four-panes"
|
172
172
|
root: "~/Code/sample/www"
|
173
173
|
layout: tiled
|
174
|
-
|
174
|
+
panes:
|
175
175
|
- cmd: "pwd"
|
176
176
|
- cmd: "pwd"
|
177
177
|
- cmd: "pwd"
|
@@ -218,7 +218,7 @@ You can use ERB in your layouts. For example, you can use an environment variabl
|
|
218
218
|
windows:
|
219
219
|
- name: "erb-example"
|
220
220
|
root: <%= ENV['MY_PROJECT_ROOT'] %>
|
221
|
-
|
221
|
+
panes:
|
222
222
|
- cmd: "pwd"
|
223
223
|
```
|
224
224
|
|
data/examples/four-splits.yml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
windows:
|
2
|
-
- name: simple-four-
|
2
|
+
- name: simple-four-panes
|
3
3
|
layout: tiled
|
4
|
-
|
5
|
-
- cmd: echo 'first
|
6
|
-
- cmd: echo 'second
|
7
|
-
- cmd: echo 'fourth
|
8
|
-
- cmd: echo 'third
|
4
|
+
panes:
|
5
|
+
- cmd: echo 'first pane'
|
6
|
+
- cmd: echo 'second pane'
|
7
|
+
- cmd: echo 'fourth pane'
|
8
|
+
- cmd: echo 'third pane'
|
@@ -1,8 +1,8 @@
|
|
1
1
|
windows:
|
2
|
-
- name: simple-one-and-three-
|
2
|
+
- name: simple-one-and-three-panes
|
3
3
|
layout: main-vertical
|
4
|
-
|
5
|
-
- cmd: echo 'first
|
6
|
-
- cmd: echo 'second
|
7
|
-
- cmd: echo 'third
|
8
|
-
- cmd: echo 'fourth
|
4
|
+
panes:
|
5
|
+
- cmd: echo 'first pane'
|
6
|
+
- cmd: echo 'second pane'
|
7
|
+
- cmd: echo 'third pane'
|
8
|
+
- cmd: echo 'fourth pane'
|
data/examples/six-splits.yml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
windows:
|
2
|
-
- name: simple-six-
|
2
|
+
- name: simple-six-panes
|
3
3
|
layout: tiled
|
4
|
-
|
5
|
-
- cmd: echo 'first
|
6
|
-
- cmd: echo 'second
|
7
|
-
- cmd: echo 'fourth
|
8
|
-
- cmd: echo 'third
|
9
|
-
- cmd: echo 'sixth
|
10
|
-
- cmd: echo 'fifth
|
4
|
+
panes:
|
5
|
+
- cmd: echo 'first pane'
|
6
|
+
- cmd: echo 'second pane'
|
7
|
+
- cmd: echo 'fourth pane'
|
8
|
+
- cmd: echo 'third pane'
|
9
|
+
- cmd: echo 'sixth pane'
|
10
|
+
- cmd: echo 'fifth pane'
|
data/lib/teamocil.rb
CHANGED
data/lib/teamocil/layout.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
module Teamocil
|
2
2
|
class Layout
|
3
|
-
# This class represents a
|
4
|
-
class
|
3
|
+
# This class represents a pane within a tmux window
|
4
|
+
class Pane
|
5
5
|
attr_reader :width, :height, :cmd, :index, :target, :focus
|
6
6
|
|
7
|
-
# Initialize a new tmux
|
7
|
+
# Initialize a new tmux pane
|
8
8
|
#
|
9
|
-
# @param session [Session] the window where the
|
10
|
-
# @param index [Fixnnum] the
|
11
|
-
# @param attrs [Hash] the
|
9
|
+
# @param session [Session] the window where the pane is initialized
|
10
|
+
# @param index [Fixnnum] the pane index
|
11
|
+
# @param attrs [Hash] the pane data from the layout file
|
12
12
|
def initialize(window, index, attrs={})
|
13
|
-
raise Teamocil::Error::LayoutError.new("You cannot have empty
|
13
|
+
raise Teamocil::Error::LayoutError.new("You cannot have empty panes") if attrs.nil?
|
14
14
|
@height = attrs["height"]
|
15
15
|
@width = attrs["width"]
|
16
16
|
@cmd = attrs["cmd"]
|
@@ -27,7 +27,7 @@ module Teamocil
|
|
27
27
|
def generate_commands
|
28
28
|
commands = []
|
29
29
|
|
30
|
-
# Is it a vertical or horizontal
|
30
|
+
# Is it a vertical or horizontal pane
|
31
31
|
init_command = ""
|
32
32
|
unless @index == @window.pane_base_index
|
33
33
|
if !@width.nil?
|
@@ -44,13 +44,13 @@ module Teamocil
|
|
44
44
|
# Wrap all commands around filters
|
45
45
|
@cmd = [@window.filters["before"]] + [@window.clear] + [@cmd] + [@window.filters["after"]]
|
46
46
|
|
47
|
-
# If a `root` key exist, start each
|
47
|
+
# If a `root` key exist, start each pane in this directory
|
48
48
|
@cmd.unshift "cd \"#{@window.root}\"" unless @window.root.nil?
|
49
49
|
|
50
50
|
# Set the TEAMOCIL environment variable
|
51
51
|
@cmd.unshift "export TEAMOCIL=1"
|
52
52
|
|
53
|
-
# Execute each
|
53
|
+
# Execute each pane command
|
54
54
|
commands << "tmux send-keys -t #{@index} \"#{@cmd.flatten.compact.join(" && ")}\""
|
55
55
|
commands << "tmux send-keys -t #{@index} Enter"
|
56
56
|
|
@@ -2,7 +2,7 @@ module Teamocil
|
|
2
2
|
class Layout
|
3
3
|
# This class represents a window within tmux
|
4
4
|
class Window
|
5
|
-
attr_reader :filters, :root, :
|
5
|
+
attr_reader :filters, :root, :panes, :options, :index, :name, :clear, :layout
|
6
6
|
|
7
7
|
# Initialize a new tmux window
|
8
8
|
#
|
@@ -16,9 +16,9 @@ module Teamocil
|
|
16
16
|
@options = attrs["options"] || {}
|
17
17
|
@layout = attrs["layout"]
|
18
18
|
|
19
|
-
@
|
20
|
-
raise Teamocil::Error::LayoutError.new("You must specify a `splits` key for every window.") if @
|
21
|
-
@
|
19
|
+
@panes = attrs["panes"] || attrs["splits"] || []
|
20
|
+
raise Teamocil::Error::LayoutError.new("You must specify a `panes` (or legacy `splits`) key for every window.") if @panes.empty?
|
21
|
+
@panes = @panes.each_with_index.map { |pane, pane_index| Pane.new(self, pane_index + pane_base_index, pane) }
|
22
22
|
|
23
23
|
@filters = attrs["filters"] || {}
|
24
24
|
@filters["before"] ||= []
|
@@ -40,7 +40,7 @@ module Teamocil
|
|
40
40
|
commands << "tmux new-window -n \"#{@name}\""
|
41
41
|
end
|
42
42
|
|
43
|
-
commands << @
|
43
|
+
commands << @panes.map(&:generate_commands)
|
44
44
|
|
45
45
|
@options.each_pair do |option, value|
|
46
46
|
value = "on" if value === true
|
@@ -49,7 +49,7 @@ module Teamocil
|
|
49
49
|
end
|
50
50
|
|
51
51
|
commands << "tmux select-layout \"#{@layout}\"" if @layout
|
52
|
-
commands << "tmux select-pane -t #{@
|
52
|
+
commands << "tmux select-pane -t #{@panes.map(&:focus).index(true) || 0}"
|
53
53
|
|
54
54
|
commands
|
55
55
|
end
|
data/spec/cli_spec.rb
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
require File.join(File.dirname(__FILE__), "spec_helper.rb")
|
3
3
|
|
4
4
|
describe Teamocil::CLI do
|
5
|
+
let(:window_pane_base_index) { 0 }
|
6
|
+
before { Teamocil::Layout::Window.any_instance.stub(:pane_base_index).and_return(window_pane_base_index) }
|
7
|
+
|
5
8
|
context "executing" do
|
6
9
|
before do
|
7
10
|
@fake_env = { "TMUX" => 1, "HOME" => File.join(File.dirname(__FILE__), "fixtures") }
|
data/spec/fixtures/layouts.yml
CHANGED
@@ -5,7 +5,7 @@ two-windows:
|
|
5
5
|
clear: true
|
6
6
|
root: "/foo"
|
7
7
|
layout: "tiled"
|
8
|
-
|
8
|
+
panes:
|
9
9
|
- cmd: "echo 'foo'"
|
10
10
|
- cmd: "echo 'foo again'"
|
11
11
|
width: 50
|
@@ -32,7 +32,7 @@ two-windows-with-filters:
|
|
32
32
|
after:
|
33
33
|
- "echo first after filter"
|
34
34
|
- "echo second after filter"
|
35
|
-
|
35
|
+
panes:
|
36
36
|
- cmd: "echo 'foo'"
|
37
37
|
- cmd: "echo 'foo again'"
|
38
38
|
width: 50
|
@@ -42,11 +42,11 @@ three-windows-within-a-session:
|
|
42
42
|
name: "my awesome session"
|
43
43
|
windows:
|
44
44
|
- name: "first window"
|
45
|
-
|
45
|
+
panes:
|
46
46
|
- cmd: "echo 'foo'"
|
47
47
|
- name: "second window"
|
48
|
-
|
48
|
+
panes:
|
49
49
|
- cmd: "echo 'foo'"
|
50
50
|
- name: "third window"
|
51
|
-
|
51
|
+
panes:
|
52
52
|
- cmd: "echo 'foo'"
|
data/spec/layout_spec.rb
CHANGED
@@ -16,13 +16,13 @@ describe Teamocil::Layout do
|
|
16
16
|
expect { @layout.compile! }.to raise_error Teamocil::Error::LayoutError
|
17
17
|
end
|
18
18
|
|
19
|
-
it "does not compile without
|
19
|
+
it "does not compile without panes" do
|
20
20
|
@layout = Teamocil::Layout.new({ "windows" => [{ "name" => "foo" }] }, {})
|
21
21
|
expect { @layout.compile! }.to raise_error Teamocil::Error::LayoutError
|
22
22
|
end
|
23
23
|
|
24
|
-
it "does not compile with empty
|
25
|
-
@layout = Teamocil::Layout.new({ "windows" => [{ "name" => "foo", "
|
24
|
+
it "does not compile with empty panes" do
|
25
|
+
@layout = Teamocil::Layout.new({ "windows" => [{ "name" => "foo", "panes" => [nil, nil] }] }, {})
|
26
26
|
expect { @layout.compile! }.to raise_error Teamocil::Error::LayoutError
|
27
27
|
end
|
28
28
|
end
|
@@ -60,36 +60,43 @@ describe Teamocil::Layout do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
describe "
|
64
|
-
it "creates
|
63
|
+
describe "panes" do
|
64
|
+
it "creates panes" do
|
65
65
|
session = @layout.compile!
|
66
|
-
session.windows.first.
|
67
|
-
|
66
|
+
session.windows.first.panes.each do |pane|
|
67
|
+
pane.should be_an_instance_of Teamocil::Layout::Pane
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
it "creates
|
71
|
+
it "creates panes with legacy `splits` key" do
|
72
72
|
session = @layout.compile!
|
73
|
-
session.windows.
|
74
|
-
|
73
|
+
session.windows.last.panes.each do |pane|
|
74
|
+
pane.should be_an_instance_of Teamocil::Layout::Pane
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it "creates panes with dimensions" do
|
79
|
+
session = @layout.compile!
|
80
|
+
session.windows.first.panes[0].width.should == nil
|
81
|
+
session.windows.first.panes[1].width.should == 50
|
75
82
|
end
|
76
83
|
|
77
|
-
it "creates
|
84
|
+
it "creates panes with commands specified in strings" do
|
78
85
|
session = @layout.compile!
|
79
|
-
session.windows.first.
|
86
|
+
session.windows.first.panes[0].cmd.should == "echo 'foo'"
|
80
87
|
end
|
81
88
|
|
82
|
-
it "creates
|
89
|
+
it "creates panes with commands specified in an array" do
|
83
90
|
session = @layout.compile!
|
84
|
-
session.windows.last.
|
85
|
-
session.windows.last.
|
86
|
-
session.windows.last.
|
91
|
+
session.windows.last.panes[0].cmd.length.should == 2
|
92
|
+
session.windows.last.panes[0].cmd.first.should == "echo 'bar'"
|
93
|
+
session.windows.last.panes[0].cmd.last.should == "echo 'bar in an array'"
|
87
94
|
end
|
88
95
|
|
89
|
-
it "handles focused
|
96
|
+
it "handles focused panes" do
|
90
97
|
session = @layout.compile!
|
91
|
-
session.windows.last.
|
92
|
-
session.windows.last.
|
98
|
+
session.windows.last.panes[1].focus.should be_true
|
99
|
+
session.windows.last.panes[0].focus.should be_false
|
93
100
|
end
|
94
101
|
end
|
95
102
|
|
@@ -120,14 +127,14 @@ describe Teamocil::Layout do
|
|
120
127
|
end
|
121
128
|
|
122
129
|
describe "targets" do
|
123
|
-
it "should handle
|
130
|
+
it "should handle panes without a target" do
|
124
131
|
session = @layout.compile!
|
125
|
-
session.windows.last.
|
132
|
+
session.windows.last.panes.last.target.should == nil
|
126
133
|
end
|
127
134
|
|
128
|
-
it "should handle
|
135
|
+
it "should handle panes with a target" do
|
129
136
|
session = @layout.compile!
|
130
|
-
session.windows.last.
|
137
|
+
session.windows.last.panes.first.target.should == "bottom-right"
|
131
138
|
end
|
132
139
|
end
|
133
140
|
|
@@ -144,15 +151,15 @@ describe Teamocil::Layout do
|
|
144
151
|
context "generating commands" do
|
145
152
|
before { @layout = Teamocil::Layout.new(layouts["two-windows"], {}) }
|
146
153
|
|
147
|
-
it "should generate
|
154
|
+
it "should generate pane commands" do
|
148
155
|
session = @layout.compile!
|
149
|
-
commands = session.windows.last.
|
156
|
+
commands = session.windows.last.panes[0].generate_commands
|
150
157
|
commands.length.should == 2
|
151
158
|
commands.first.should == "tmux send-keys -t 0 \"export TEAMOCIL=1 && cd \"/bar\" && echo 'bar' && echo 'bar in an array'\""
|
152
159
|
commands.last.should == "tmux send-keys -t 0 Enter"
|
153
160
|
|
154
161
|
session = @layout.compile!
|
155
|
-
commands = session.windows.first.
|
162
|
+
commands = session.windows.first.panes[0].generate_commands
|
156
163
|
commands.length.should == 2
|
157
164
|
commands.first.should == "tmux send-keys -t 0 \"export TEAMOCIL=1 && cd \"/foo\" && clear && echo 'foo'\""
|
158
165
|
commands.last.should == "tmux send-keys -t 0 Enter"
|
@@ -168,9 +175,9 @@ describe Teamocil::Layout do
|
|
168
175
|
context "with custom pane-base-index option" do
|
169
176
|
let(:window_pane_base_index) { 2 }
|
170
177
|
|
171
|
-
it "should generate
|
178
|
+
it "should generate pane commands" do
|
172
179
|
session = @layout.compile!
|
173
|
-
commands = session.windows.last.
|
180
|
+
commands = session.windows.last.panes[0].generate_commands
|
174
181
|
commands.length.should == 2
|
175
182
|
commands.first.should == "tmux send-keys -t 2 \"export TEAMOCIL=1 && cd \"/bar\" && echo 'bar' && echo 'bar in an array'\""
|
176
183
|
commands.last.should == "tmux send-keys -t 2 Enter"
|
data/teamocil.gemspec
CHANGED
@@ -12,8 +12,8 @@ spec = Gem::Specification.new do |s|
|
|
12
12
|
s.email = "remi@exomel.com"
|
13
13
|
s.homepage = "http://remiprev.github.com/teamocil"
|
14
14
|
s.license = "MIT"
|
15
|
-
s.summary = "Easy window and
|
16
|
-
s.description = "Teamocil helps you set up window and
|
15
|
+
s.summary = "Easy session, window and pane layouts for tmux"
|
16
|
+
s.description = "Teamocil helps you set up window and pane layouts for tmux using YAML configuration files."
|
17
17
|
|
18
18
|
# Manifest
|
19
19
|
s.files = `git ls-files`.split("\n")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teamocil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Prévost
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description: Teamocil helps you set up window and
|
69
|
+
description: Teamocil helps you set up window and pane layouts for tmux using YAML
|
70
70
|
configuration files.
|
71
71
|
email: remi@exomel.com
|
72
72
|
executables:
|
@@ -90,8 +90,8 @@ files:
|
|
90
90
|
- lib/teamocil/cli.rb
|
91
91
|
- lib/teamocil/error.rb
|
92
92
|
- lib/teamocil/layout.rb
|
93
|
+
- lib/teamocil/layout/pane.rb
|
93
94
|
- lib/teamocil/layout/session.rb
|
94
|
-
- lib/teamocil/layout/split.rb
|
95
95
|
- lib/teamocil/layout/window.rb
|
96
96
|
- spec/cli_spec.rb
|
97
97
|
- spec/fixtures/.my-fancy-layouts-directory/sample-3.yml
|
@@ -123,10 +123,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
123
|
version: '0'
|
124
124
|
requirements: []
|
125
125
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.0.
|
126
|
+
rubygems_version: 2.0.2
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
|
-
summary: Easy window and
|
129
|
+
summary: Easy session, window and pane layouts for tmux
|
130
130
|
test_files:
|
131
131
|
- spec/cli_spec.rb
|
132
132
|
- spec/fixtures/.my-fancy-layouts-directory/sample-3.yml
|