tmuxinator 0.9.0 → 0.10.0

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/bin/tmuxinator +1 -1
  3. data/lib/tmuxinator.rb +6 -7
  4. data/lib/tmuxinator/assets/sample.yml +13 -1
  5. data/lib/tmuxinator/assets/template-stop.erb +11 -0
  6. data/lib/tmuxinator/assets/template.erb +15 -1
  7. data/lib/tmuxinator/cli.rb +85 -15
  8. data/lib/tmuxinator/config.rb +74 -30
  9. data/lib/tmuxinator/deprecations.rb +8 -0
  10. data/lib/tmuxinator/doctor.rb +17 -0
  11. data/lib/tmuxinator/hooks.rb +14 -0
  12. data/lib/tmuxinator/hooks/project.rb +42 -0
  13. data/lib/tmuxinator/pane.rb +26 -18
  14. data/lib/tmuxinator/project.rb +113 -48
  15. data/lib/tmuxinator/version.rb +1 -1
  16. data/lib/tmuxinator/wemux_support.rb +18 -9
  17. data/lib/tmuxinator/window.rb +42 -26
  18. data/spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml +0 -0
  19. data/spec/fixtures/dot-tmuxinator/both.yml +0 -0
  20. data/spec/fixtures/dot-tmuxinator/dup/local-dup.yml +0 -0
  21. data/spec/fixtures/dot-tmuxinator/home.yml +0 -0
  22. data/spec/fixtures/dot-tmuxinator/local-dup.yml +0 -0
  23. data/spec/fixtures/sample.yml +0 -1
  24. data/spec/fixtures/xdg-tmuxinator/both.yml +0 -0
  25. data/spec/fixtures/xdg-tmuxinator/xdg.yml +0 -0
  26. data/spec/lib/tmuxinator/cli_spec.rb +87 -13
  27. data/spec/lib/tmuxinator/config_spec.rb +163 -91
  28. data/spec/lib/tmuxinator/doctor_spec.rb +69 -0
  29. data/spec/lib/tmuxinator/hooks/project_spec.rb +63 -0
  30. data/spec/lib/tmuxinator/hooks_spec.rb +31 -0
  31. data/spec/lib/tmuxinator/pane_spec.rb +24 -1
  32. data/spec/lib/tmuxinator/project_spec.rb +58 -23
  33. data/spec/lib/tmuxinator/window_spec.rb +8 -6
  34. data/spec/spec_helper.rb +2 -1
  35. metadata +177 -7
@@ -0,0 +1,69 @@
1
+ require "spec_helper"
2
+
3
+ describe Tmuxinator::Doctor do
4
+ describe ".installed?" do
5
+ context "tmux is installed" do
6
+ before do
7
+ allow(Kernel).to receive(:system) { true }
8
+ end
9
+
10
+ it "returns true" do
11
+ expect(Tmuxinator::Doctor.installed?).to be_truthy
12
+ end
13
+ end
14
+
15
+ context "tmux is not installed" do
16
+ before do
17
+ allow(Kernel).to receive(:system) { false }
18
+ end
19
+
20
+ it "returns false" do
21
+ expect(Tmuxinator::Doctor.installed?).to be_falsey
22
+ end
23
+ end
24
+ end
25
+
26
+ describe ".editor?" do
27
+ context "$EDITOR is set" do
28
+ before do
29
+ allow(ENV).to receive(:[]).with("EDITOR") { "vim" }
30
+ end
31
+
32
+ it "returns true" do
33
+ expect(Tmuxinator::Doctor.editor?).to be_truthy
34
+ end
35
+ end
36
+
37
+ context "$EDITOR is not set" do
38
+ before do
39
+ allow(ENV).to receive(:[]).with("EDITOR") { nil }
40
+ end
41
+
42
+ it "returns false" do
43
+ expect(Tmuxinator::Doctor.editor?).to be_falsey
44
+ end
45
+ end
46
+ end
47
+
48
+ describe ".shell?" do
49
+ context "$SHELL is set" do
50
+ before do
51
+ allow(ENV).to receive(:[]).with("SHELL") { "vim" }
52
+ end
53
+
54
+ it "returns true" do
55
+ expect(Tmuxinator::Doctor.shell?).to be_truthy
56
+ end
57
+ end
58
+
59
+ context "$SHELL is not set" do
60
+ before do
61
+ allow(ENV).to receive(:[]).with("SHELL") { nil }
62
+ end
63
+
64
+ it "returns false" do
65
+ expect(Tmuxinator::Doctor.shell?).to be_falsey
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,63 @@
1
+ require "spec_helper"
2
+
3
+ shared_examples_for "a project hook" do
4
+ let(:project) { FactoryGirl.build(:project) }
5
+
6
+ it "calls Hooks.commands_from" do
7
+ expect(Tmuxinator::Hooks).to receive(:commands_from).
8
+ with(kind_of(Tmuxinator::Project), hook_name).once
9
+ project.send("hook_#{hook_name}")
10
+ end
11
+
12
+ context "hook value is string" do
13
+ before { project.yaml[hook_name] = "echo 'on hook'" }
14
+
15
+ it "returns the string" do
16
+ expect(project.send("hook_#{hook_name}")).to eq("echo 'on hook'")
17
+ end
18
+ end
19
+
20
+ context "hook value is Array" do
21
+ before do
22
+ project.yaml[hook_name] = [
23
+ "echo 'on hook'",
24
+ "echo 'another command here'"
25
+ ]
26
+ end
27
+
28
+ it "joins array using ;" do
29
+ expect(project.send("hook_#{hook_name}")).
30
+ to eq("echo 'on hook'; echo 'another command here'")
31
+ end
32
+ end
33
+ end
34
+
35
+ describe Tmuxinator::Hooks::Project do
36
+ let(:project) { FactoryGirl.build(:project) }
37
+
38
+ describe "#hook_on_project_start" do
39
+ it_should_behave_like "a project hook" do
40
+ let(:hook_name) { "on_project_start" }
41
+ end
42
+ end
43
+ describe "#hook_on_project_first_start" do
44
+ it_should_behave_like "a project hook" do
45
+ let(:hook_name) { "on_project_first_start" }
46
+ end
47
+ end
48
+ describe "#hook_on_project_restart" do
49
+ it_should_behave_like "a project hook" do
50
+ let(:hook_name) { "on_project_restart" }
51
+ end
52
+ end
53
+ describe "#hook_on_project_exit" do
54
+ it_should_behave_like "a project hook" do
55
+ let(:hook_name) { "on_project_exit" }
56
+ end
57
+ end
58
+ describe "#hook_on_project_stop" do
59
+ it_should_behave_like "a project hook" do
60
+ let(:hook_name) { "on_project_stop" }
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe Tmuxinator::Hooks do
4
+ describe "#commands_from" do
5
+ let(:project) { FactoryGirl.build(:project) }
6
+ let(:hook_name) { "generic_hook" }
7
+
8
+ context "config value is string" do
9
+ before { project.yaml[hook_name] = "echo 'on hook'" }
10
+
11
+ it "returns the string" do
12
+ expect(subject.commands_from(project, hook_name)).
13
+ to eq("echo 'on hook'")
14
+ end
15
+ end
16
+
17
+ context "config value is Array" do
18
+ before do
19
+ project.yaml[hook_name] = [
20
+ "echo 'on hook'",
21
+ "echo 'another command here'"
22
+ ]
23
+ end
24
+
25
+ it "joins array using ;" do
26
+ expect(subject.commands_from(project, hook_name)).
27
+ to eq("echo 'on hook'; echo 'another command here'")
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,7 +1,30 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Tmuxinator::Pane do
4
+ let(:klass) { described_class }
5
+ let(:instance) { klass.new(index, project, window, *commands) }
6
+ # let(:index) { "vim" }
7
+ # let(:project) { 0 }
8
+ # let(:tab) { nil }
9
+ # let(:commands) { nil }
10
+ let(:index) { 0 }
11
+ let(:project) { double }
12
+ let(:window) { double }
13
+ let(:commands) { ["vim", "bash"] }
14
+
15
+ before do
16
+ allow(project).to receive(:name).and_return "foo"
17
+ allow(project).to receive(:base_index).and_return 0
18
+
19
+ allow(window).to receive(:project).and_return project
20
+ allow(window).to receive(:index).and_return 0
21
+ end
22
+
23
+ subject { instance }
24
+
4
25
  it "creates an instance" do
5
- expect(Tmuxinator::Pane.new("vim", 0, nil, nil)).to be_a(Tmuxinator::Pane)
26
+ expect(subject).to be_a(Tmuxinator::Pane)
6
27
  end
28
+
29
+ it { expect(subject.tmux_window_and_pane_target).to eql "foo:0.0" }
7
30
  end
@@ -28,6 +28,10 @@ describe Tmuxinator::Project do
28
28
  FactoryGirl.build(:nameless_window_project)
29
29
  end
30
30
 
31
+ it "should include Hooks" do
32
+ expect(project).to be_kind_of(Tmuxinator::Hooks::Project)
33
+ end
34
+
31
35
  describe "#initialize" do
32
36
  context "valid yaml" do
33
37
  it "creates an instance" do
@@ -166,14 +170,34 @@ describe Tmuxinator::Project do
166
170
  rendered = project_with_literals_as_window_name
167
171
  expect(rendered.windows.map(&:name)).to match_array(
168
172
  %w(222 222333 111222333444555666777 222.3 4e5 4E5
169
- true false nil // /sample/))
173
+ true false nil // /sample/)
174
+ )
170
175
  end
171
176
  end
172
177
  end
173
178
 
174
179
  describe "#pre_window" do
175
- it "gets the pre_window command" do
176
- expect(project.pre_window).to eq "rbenv shell 2.0.0-p247"
180
+ subject(:pre_window) { project.pre_window }
181
+
182
+ context "pre_window in yaml is string" do
183
+ before { project.yaml["pre_window"] = "mysql.server start" }
184
+
185
+ it "returns the string" do
186
+ expect(pre_window).to eq("mysql.server start")
187
+ end
188
+ end
189
+
190
+ context "pre_window in yaml is Array" do
191
+ before do
192
+ project.yaml["pre_window"] = [
193
+ "mysql.server start",
194
+ "memcached -d"
195
+ ]
196
+ end
197
+
198
+ it "joins array using ;" do
199
+ expect(pre_window).to eq("mysql.server start; memcached -d")
200
+ end
177
201
  end
178
202
 
179
203
  context "with deprecations" do
@@ -268,42 +292,53 @@ describe Tmuxinator::Project do
268
292
  end
269
293
 
270
294
  describe "#get_pane_base_index" do
271
- it "extracts the pane_base_index from tmux_options" do
272
- allow(project).to \
273
- receive_messages(show_tmux_options: tmux_config(pane_base_index: 3))
295
+ it "extracts pane-base-index from the global tmux window options" do
296
+ allow_any_instance_of(Kernel).to receive(:`).
297
+ with(Regexp.new("tmux.+ show-window-option -g pane-base-index")).
298
+ and_return("pane-base-index 3\n")
274
299
 
275
300
  expect(project.get_pane_base_index).to eq("3")
276
301
  end
277
302
  end
278
303
 
279
304
  describe "#get_base_index" do
280
- it "extracts the base index from options" do
281
- allow(project).to \
282
- receive_messages(show_tmux_options: tmux_config(base_index: 1))
305
+ it "extracts base-index from the global tmux options" do
306
+ allow_any_instance_of(Kernel).to receive(:`).
307
+ with(Regexp.new("tmux.+ show-option -g base-index")).
308
+ and_return("base-index 1\n")
283
309
 
284
310
  expect(project.get_base_index).to eq("1")
285
311
  end
286
312
  end
287
313
 
288
314
  describe "#base_index" do
289
- context "pane base index present" do
315
+ context "when pane_base_index is 1 and base_index is unset" do
290
316
  before do
291
317
  allow(project).to receive_messages(get_pane_base_index: "1")
318
+ allow(project).to receive_messages(get_base_index: nil)
319
+ end
320
+
321
+ it "gets the tmux default of 0" do
322
+ expect(project.base_index).to eq(0)
323
+ end
324
+ end
325
+
326
+ context "base index present" do
327
+ before do
292
328
  allow(project).to receive_messages(get_base_index: "1")
293
329
  end
294
330
 
295
- it "gets the pane base index" do
331
+ it "gets the base index" do
296
332
  expect(project.base_index).to eq 1
297
333
  end
298
334
  end
299
335
 
300
- context "pane base index no present" do
336
+ context "base index not present" do
301
337
  before do
302
- allow(project).to receive_messages(get_pane_base_index: nil)
303
- allow(project).to receive_messages(get_base_index: "0")
338
+ allow(project).to receive_messages(get_base_index: nil)
304
339
  end
305
340
 
306
- it "gets the base index" do
341
+ it "defaults to 0" do
307
342
  expect(project.base_index).to eq 0
308
343
  end
309
344
  end
@@ -314,7 +349,7 @@ describe Tmuxinator::Project do
314
349
  it "gets the startup window from project config" do
315
350
  project.yaml["startup_window"] = "logs"
316
351
 
317
- expect(project.startup_window).to eq("logs")
352
+ expect(project.startup_window).to eq("sample:logs")
318
353
  end
319
354
  end
320
355
 
@@ -322,7 +357,7 @@ describe Tmuxinator::Project do
322
357
  it "returns base index instead" do
323
358
  allow(project).to receive_messages(base_index: 8)
324
359
 
325
- expect(project.startup_window).to eq 8
360
+ expect(project.startup_window).to eq("sample:8")
326
361
  end
327
362
  end
328
363
  end
@@ -332,7 +367,7 @@ describe Tmuxinator::Project do
332
367
  it "get the startup pane index from project config" do
333
368
  project.yaml["startup_pane"] = 1
334
369
 
335
- expect(project.startup_pane).to eq(1)
370
+ expect(project.startup_pane).to eq("sample:0.1")
336
371
  end
337
372
  end
338
373
 
@@ -340,7 +375,7 @@ describe Tmuxinator::Project do
340
375
  it "returns the base pane instead" do
341
376
  allow(project).to receive_messages(pane_base_index: 4)
342
377
 
343
- expect(project.startup_pane).to eq(4)
378
+ expect(project.startup_pane).to eq("sample:0.4")
344
379
  end
345
380
  end
346
381
  end
@@ -502,7 +537,7 @@ describe Tmuxinator::Project do
502
537
  let(:window) { project.windows.first.name }
503
538
 
504
539
  context "when first window has a name" do
505
- it "returns command to start a new detatched session" do
540
+ it "returns command to start a new detached session" do
506
541
  expect(project.tmux_new_session_command).to eq command
507
542
  end
508
543
  end
@@ -511,7 +546,7 @@ describe Tmuxinator::Project do
511
546
  let(:project) { nameless_window_project }
512
547
  let(:command) { "#{project.tmux} new-session -d -s #{project.name} " }
513
548
 
514
- it "returns command to for new detatched session without a window name" do
549
+ it "returns command to for new detached session without a window name" do
515
550
  expect(project.tmux_new_session_command).to eq command
516
551
  end
517
552
  end
@@ -523,7 +558,7 @@ describe Tmuxinator::Project do
523
558
  let(:session) { project.name }
524
559
 
525
560
  context "when first window has a name" do
526
- it "returns command to start a new detatched session" do
561
+ it "returns command to start a new detached session" do
527
562
  expect(project.tmux_kill_session_command).to eq command
528
563
  end
529
564
  end
@@ -541,7 +576,7 @@ describe Tmuxinator::Project do
541
576
  expect(File).to receive(:read).with(path) { bad_yaml }
542
577
  expect do
543
578
  described_class.load(path, options)
544
- end.to raise_error RuntimeError, %r{Failed.to.parse.config.file}
579
+ end.to raise_error RuntimeError, /\AFailed to parse config file: .+\z/
545
580
  end
546
581
 
547
582
  it "should return an instance of the class if the file loads" do
@@ -99,11 +99,13 @@ describe Tmuxinator::Window do
99
99
  project: project, tab: window
100
100
  )
101
101
 
102
- expect(window.panes).to match([
103
- a_pane.with(index: 0).and_commands("vim"),
104
- a_pane.with(index: 1).and_commands("ls"),
105
- a_pane.with(index: 2).and_commands("top")
106
- ])
102
+ expect(window.panes).to match(
103
+ [
104
+ a_pane.with(index: 0).and_commands("vim"),
105
+ a_pane.with(index: 1).and_commands("ls"),
106
+ a_pane.with(index: 2).and_commands("top")
107
+ ]
108
+ )
107
109
  end
108
110
  end
109
111
 
@@ -341,7 +343,7 @@ describe Tmuxinator::Window do
341
343
  allow(Tmuxinator::Config).to receive(:default_path_option) { path_option }
342
344
  end
343
345
 
344
- it "contstructs window command with path, target, and name options" do
346
+ it "constructs window command with path, target, and name options" do
345
347
  expect(window.tmux_new_window_command).to eq full_command
346
348
  end
347
349
 
@@ -1,6 +1,7 @@
1
1
  require "coveralls"
2
- require "simplecov"
3
2
  require "pry"
3
+ require "simplecov"
4
+ require "xdg"
4
5
 
5
6
  formatters = [
6
7
  SimpleCov::Formatter::HTMLFormatter,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tmuxinator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Bargi
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-08 00:00:00.000000000 Z
12
+ date: 2017-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: erubis
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.6'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '2.6'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: thor
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -32,19 +46,53 @@ dependencies:
32
46
  - !ruby/object:Gem::Version
33
47
  version: 0.15.0
34
48
  - !ruby/object:Gem::Dependency
35
- name: erubis
49
+ name: xdg
36
50
  requirement: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '2.6'
54
+ version: '2.2'
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 2.2.3
41
58
  type: :runtime
42
59
  prerelease: false
43
60
  version_requirements: !ruby/object:Gem::Requirement
44
61
  requirements:
45
62
  - - "~>"
46
63
  - !ruby/object:Gem::Version
47
- version: '2.6'
64
+ version: '2.2'
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.2.3
68
+ - !ruby/object:Gem::Dependency
69
+ name: activesupport
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: 5.0.0
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: 5.0.0
82
+ - !ruby/object:Gem::Dependency
83
+ name: awesome_print
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.2'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.2'
48
96
  - !ruby/object:Gem::Dependency
49
97
  name: bundler
50
98
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +107,104 @@ dependencies:
59
107
  - - "~>"
60
108
  - !ruby/object:Gem::Version
61
109
  version: '1.3'
110
+ - !ruby/object:Gem::Dependency
111
+ name: coveralls
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.7'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.7'
124
+ - !ruby/object:Gem::Dependency
125
+ name: factory_girl
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '4.5'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '4.5'
138
+ - !ruby/object:Gem::Dependency
139
+ name: pry
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.10'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.10'
152
+ - !ruby/object:Gem::Dependency
153
+ name: rake
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '10.4'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '10.4'
166
+ - !ruby/object:Gem::Dependency
167
+ name: rspec
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.3'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '3.3'
180
+ - !ruby/object:Gem::Dependency
181
+ name: rubocop
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.46.0
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: 0.46.0
194
+ - !ruby/object:Gem::Dependency
195
+ name: simplecov
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: 0.11.0
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: 0.11.0
62
208
  description: Create and manage complex tmux sessions easily.
63
209
  email:
64
210
  - allen.bargi@gmail.com
@@ -75,11 +221,15 @@ files:
75
221
  - completion/tmuxinator.zsh
76
222
  - lib/tmuxinator.rb
77
223
  - lib/tmuxinator/assets/sample.yml
224
+ - lib/tmuxinator/assets/template-stop.erb
78
225
  - lib/tmuxinator/assets/template.erb
79
226
  - lib/tmuxinator/assets/wemux_template.erb
80
227
  - lib/tmuxinator/cli.rb
81
228
  - lib/tmuxinator/config.rb
82
229
  - lib/tmuxinator/deprecations.rb
230
+ - lib/tmuxinator/doctor.rb
231
+ - lib/tmuxinator/hooks.rb
232
+ - lib/tmuxinator/hooks/project.rb
83
233
  - lib/tmuxinator/pane.rb
84
234
  - lib/tmuxinator/project.rb
85
235
  - lib/tmuxinator/util.rb
@@ -87,7 +237,12 @@ files:
87
237
  - lib/tmuxinator/wemux_support.rb
88
238
  - lib/tmuxinator/window.rb
89
239
  - spec/factories/projects.rb
240
+ - spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml
90
241
  - spec/fixtures/detach.yml
242
+ - spec/fixtures/dot-tmuxinator/both.yml
243
+ - spec/fixtures/dot-tmuxinator/dup/local-dup.yml
244
+ - spec/fixtures/dot-tmuxinator/home.yml
245
+ - spec/fixtures/dot-tmuxinator/local-dup.yml
91
246
  - spec/fixtures/nameless_window.yml
92
247
  - spec/fixtures/noname.yml
93
248
  - spec/fixtures/noroot.yml
@@ -97,8 +252,13 @@ files:
97
252
  - spec/fixtures/sample_literals_as_window_name.yml
98
253
  - spec/fixtures/sample_number_as_name.yml
99
254
  - spec/fixtures/sample_wemux.yml
255
+ - spec/fixtures/xdg-tmuxinator/both.yml
256
+ - spec/fixtures/xdg-tmuxinator/xdg.yml
100
257
  - spec/lib/tmuxinator/cli_spec.rb
101
258
  - spec/lib/tmuxinator/config_spec.rb
259
+ - spec/lib/tmuxinator/doctor_spec.rb
260
+ - spec/lib/tmuxinator/hooks/project_spec.rb
261
+ - spec/lib/tmuxinator/hooks_spec.rb
102
262
  - spec/lib/tmuxinator/pane_spec.rb
103
263
  - spec/lib/tmuxinator/project_spec.rb
104
264
  - spec/lib/tmuxinator/util_spec.rb
@@ -123,7 +283,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
283
  requirements:
124
284
  - - ">="
125
285
  - !ruby/object:Gem::Version
126
- version: 1.9.3
286
+ version: 2.2.7
127
287
  required_rubygems_version: !ruby/object:Gem::Requirement
128
288
  requirements:
129
289
  - - ">="
@@ -131,13 +291,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
291
  version: 1.8.23
132
292
  requirements: []
133
293
  rubyforge_project:
134
- rubygems_version: 2.6.6
294
+ rubygems_version: 2.6.13
135
295
  signing_key:
136
296
  specification_version: 4
137
297
  summary: Create and manage complex tmux sessions easily.
138
298
  test_files:
139
299
  - spec/factories/projects.rb
300
+ - spec/fixtures/TMUXINATOR_CONFIG/TMUXINATOR_CONFIG.yml
140
301
  - spec/fixtures/detach.yml
302
+ - spec/fixtures/dot-tmuxinator/both.yml
303
+ - spec/fixtures/dot-tmuxinator/dup/local-dup.yml
304
+ - spec/fixtures/dot-tmuxinator/home.yml
305
+ - spec/fixtures/dot-tmuxinator/local-dup.yml
141
306
  - spec/fixtures/nameless_window.yml
142
307
  - spec/fixtures/noname.yml
143
308
  - spec/fixtures/noroot.yml
@@ -147,8 +312,13 @@ test_files:
147
312
  - spec/fixtures/sample_literals_as_window_name.yml
148
313
  - spec/fixtures/sample_number_as_name.yml
149
314
  - spec/fixtures/sample_wemux.yml
315
+ - spec/fixtures/xdg-tmuxinator/both.yml
316
+ - spec/fixtures/xdg-tmuxinator/xdg.yml
150
317
  - spec/lib/tmuxinator/cli_spec.rb
151
318
  - spec/lib/tmuxinator/config_spec.rb
319
+ - spec/lib/tmuxinator/doctor_spec.rb
320
+ - spec/lib/tmuxinator/hooks/project_spec.rb
321
+ - spec/lib/tmuxinator/hooks_spec.rb
152
322
  - spec/lib/tmuxinator/pane_spec.rb
153
323
  - spec/lib/tmuxinator/project_spec.rb
154
324
  - spec/lib/tmuxinator/util_spec.rb