tmuxinator 0.2.0 → 0.3.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.
- data/README.md +12 -11
- data/TODO +0 -12
- data/VERSION +1 -1
- data/lib/tmuxinator/cli.rb +6 -4
- data/lib/tmuxinator/config_writer.rb +16 -16
- data/lib/tmuxinator/helper.rb +3 -3
- data/spec/spec_helper.rb +1 -1
- data/spec/tmuxinator_spec.rb +8 -8
- data/tmuxinator.gemspec +2 -2
- metadata +4 -4
data/README.md
CHANGED
@@ -33,30 +33,31 @@ It also uses $SHELL variable. which is always set by your shell.
|
|
33
33
|
|
34
34
|
### Create a project ###
|
35
35
|
|
36
|
-
$ tmuxinator
|
36
|
+
$ tmuxinator new project_name
|
37
37
|
|
38
|
-
Create or edit your projects with this command
|
38
|
+
Create or edit your projects with this command, for editing you can also use `tmuxinator open project_name`. `new` aliased to `o`,`open` and `n`. Your default editor ($EDITOR) is used to open the file. If this is a new project you will see this default config:
|
39
39
|
|
40
40
|
# ~/.tmuxinator/project_name.yml
|
41
41
|
# you can make as many tabs as you wish...
|
42
42
|
|
43
|
-
project_name:
|
43
|
+
project_name: Tmuxinator
|
44
44
|
project_root: ~/code/rails_project
|
45
45
|
rvm: 1.9.2@rails_project
|
46
46
|
tabs:
|
47
|
-
-
|
48
|
-
- database: rails db
|
49
|
-
- console: rails c
|
50
|
-
- logs:
|
51
|
-
- cd logs
|
52
|
-
- tail -f development.log
|
53
|
-
- ssh: ssh me@myhost
|
54
|
-
- window_with_panes
|
47
|
+
- editor:
|
55
48
|
layout: main-vertical
|
56
49
|
panes:
|
57
50
|
- vim
|
58
51
|
- #empty, will just run plain bash
|
59
52
|
- top
|
53
|
+
- shell: git pull
|
54
|
+
- database: rails db
|
55
|
+
- server: rails s
|
56
|
+
- logs: tail -f logs/development.log
|
57
|
+
- console: rails c
|
58
|
+
- capistrano:
|
59
|
+
- server: ssh me@myhost
|
60
|
+
|
60
61
|
|
61
62
|
If a tab contains multiple commands, they will be 'joined' together with '&&'.
|
62
63
|
If you want to have your own default config, place it into $HOME/.tmuxinator/default.yml
|
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/tmuxinator/cli.rb
CHANGED
@@ -55,6 +55,8 @@ module Tmuxinator
|
|
55
55
|
update_scripts
|
56
56
|
end
|
57
57
|
alias :o :open
|
58
|
+
alias :new :open
|
59
|
+
alias :n :open
|
58
60
|
|
59
61
|
def copy *args
|
60
62
|
@copy = args.shift
|
@@ -130,17 +132,17 @@ module Tmuxinator
|
|
130
132
|
|
131
133
|
def doctor
|
132
134
|
print " cheking if tmux is installed ==> "
|
133
|
-
puts system("which tmux > /dev/null") ? "Yes" : "No"
|
135
|
+
puts system("which tmux > /dev/null") ? "Yes" : "No"
|
134
136
|
print " cheking if $EDITOR is set ==> "
|
135
137
|
puts ENV['EDITOR'] ? "Yes" : "No"
|
136
138
|
print " cheking if $SHELL is set ==> "
|
137
139
|
puts ENV['SHELL'] ? "Yes" : "No"
|
138
140
|
puts %{
|
139
141
|
make sure you have this line in your ~/.bashrc file:
|
140
|
-
|
142
|
+
|
141
143
|
[[ -s $HOME/.tmuxinator/scripts/tmuxinator ]] && source $HOME/.tmuxinator/scripts/tmuxinator
|
142
|
-
|
143
|
-
|
144
|
+
|
145
|
+
|
144
146
|
}
|
145
147
|
end
|
146
148
|
|
@@ -1,54 +1,54 @@
|
|
1
1
|
module Tmuxinator
|
2
|
-
|
2
|
+
|
3
3
|
class ConfigWriter
|
4
|
-
|
5
|
-
|
4
|
+
attr_accessor :file_name, :file_path, :project_name, :project_root, :rvm, :tabs
|
5
|
+
|
6
6
|
include Tmuxinator::Helper
|
7
|
-
|
7
|
+
|
8
8
|
def self.write_aliases aliases
|
9
9
|
File.open("#{ENV["HOME"]}/.tmuxinator/scripts/tmuxinator", 'w') {|f| f.write(aliases.join("\n")) }
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def initialize this_full_path=nil
|
13
13
|
self.file_path = this_full_path if this_full_path
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def file_path= full_path
|
17
17
|
@file_path = full_path
|
18
18
|
@file_name = File.basename full_path, '.yml'
|
19
19
|
process_config! if full_path && File.exist?(full_path)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def write!
|
23
23
|
raise "Unable to write with out a file_name defined" unless self.file_name
|
24
24
|
erb = ERB.new(IO.read(TMUX_TEMPLATE)).result(binding)
|
25
25
|
tmp = File.open(config_path, 'w') {|f| f.write(erb) }
|
26
|
-
|
26
|
+
|
27
27
|
"alias start_#{file_name}='$SHELL #{config_path}'"
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def config_path
|
31
31
|
"#{root_dir}#{file_name}.tmux" if file_name
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
private
|
35
|
-
|
35
|
+
|
36
36
|
def root_dir
|
37
37
|
"#{ENV["HOME"]}/.tmuxinator/"
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def process_config!
|
41
41
|
yaml = YAML.load(File.read(file_path))
|
42
42
|
|
43
43
|
exit!("Your configuration file should include some tabs.") if yaml["tabs"].nil?
|
44
44
|
exit!("Your configuration file didn't specify a 'project_root'") if yaml["project_root"].nil?
|
45
45
|
exit!("Your configuration file didn't specify a 'project_name'") if yaml["project_name"].nil?
|
46
|
-
|
46
|
+
|
47
47
|
@project_name = yaml["project_name"]
|
48
48
|
@project_root = yaml["project_root"]
|
49
49
|
@rvm = yaml["rvm"]
|
50
50
|
@tabs = []
|
51
|
-
|
51
|
+
|
52
52
|
yaml["tabs"].each do |tab|
|
53
53
|
t = OpenStruct.new
|
54
54
|
t.name = tab.keys.first
|
@@ -77,7 +77,7 @@ module Tmuxinator
|
|
77
77
|
|
78
78
|
def parse_tabs tab_list
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
def write_alias stuff
|
82
82
|
File.open("#{root_dir}scripts/#{@filename}", 'w') {|f| f.write(stuff) }
|
83
83
|
end
|
@@ -96,5 +96,5 @@ module Tmuxinator
|
|
96
96
|
"tmux send-keys -t #{window(window_number)} #{s cmd} C-m"
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
end
|
data/lib/tmuxinator/helper.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Tmuxinator
|
2
2
|
module Helper
|
3
|
-
|
3
|
+
|
4
4
|
def exit!(msg)
|
5
5
|
puts msg
|
6
6
|
Kernel.exit(1)
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def confirm!(msg)
|
10
10
|
puts msg
|
11
11
|
if %w(yes Yes YES y).include?(STDIN.gets.chop)
|
@@ -14,6 +14,6 @@ module Tmuxinator
|
|
14
14
|
exit! "Aborting."
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
end
|
19
19
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/tmuxinator_spec.rb
CHANGED
@@ -9,40 +9,40 @@ describe Tmuxinator::ConfigWriter do
|
|
9
9
|
its(:tabs){ should be_nil }
|
10
10
|
its(:config_path){ should be_nil }
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
context "While Defining the filename on init" do
|
14
14
|
subject{ Tmuxinator::ConfigWriter.new(SAMPLE_CONFIG) }
|
15
15
|
its(:file_path){ should eql SAMPLE_CONFIG }
|
16
16
|
its(:file_name){ should eql "sample" }
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
context "After filename has been defined" do
|
20
20
|
before do
|
21
21
|
subject.file_path = SAMPLE_CONFIG
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
its(:file_path){ should eql SAMPLE_CONFIG }
|
25
25
|
its(:file_name){ should eql File.basename(SAMPLE_CONFIG, '.yml')}
|
26
26
|
its(:project_name){ should eql 'Tmuxinator' }
|
27
27
|
its(:project_root){ should eql '~/code/rails_project' }
|
28
28
|
its(:rvm){ should eql '1.9.2@rails_project' }
|
29
29
|
its(:tabs){ should be_an Array }
|
30
|
-
|
30
|
+
|
31
31
|
let(:first_tab){ subject.tabs[0] }
|
32
|
-
|
32
|
+
|
33
33
|
specify{ first_tab.should be_an OpenStruct }
|
34
34
|
specify{ first_tab.name.should eql "editor" }
|
35
35
|
specify{ first_tab.layout.should eql "main-vertical" }
|
36
36
|
specify{ first_tab.panes.should be_an Array }
|
37
|
-
|
37
|
+
|
38
38
|
it "should prepend each pane with the rvm string" do
|
39
39
|
first_tab.panes.map{|p| p.split(/ && /)[0] }.should eql ["rvm use 1.9.2@rails_project"] * 3
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
it "should append each pane with the command string" do
|
43
43
|
first_tab.panes.map{|p| p.split(/ && /)[1] }.should eql ["vim", nil, "top"]
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
let(:second_tab){ subject.tabs[1] }
|
47
47
|
specify{ second_tab.name.should eql "shell" }
|
48
48
|
specify{ second_tab.command.should eql "rvm use 1.9.2@rails_project && git pull"}
|
data/tmuxinator.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{tmuxinator}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Allen Bargi"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-10}
|
13
13
|
s.default_executable = %q{tmuxinator}
|
14
14
|
s.description = %q{Create and manage complex tmux sessions easily.}
|
15
15
|
s.email = %q{allen.bargi@gmail.com}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tmuxinator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Allen Bargi
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-10 00:00:00 +01:00
|
19
19
|
default_executable: tmuxinator
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|