tmuxinator 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ group :development do
4
+ gem "rspec", "~> 2.1.0"
5
+ gem "bundler", "~> 1.0.0"
6
+ gem "jeweler", "~> 1.5.1"
7
+ gem "rcov", ">= 0"
8
+ end
@@ -0,0 +1,28 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ git (1.2.5)
6
+ jeweler (1.5.1)
7
+ bundler (~> 1.0.0)
8
+ git (>= 1.2.5)
9
+ rake
10
+ rake (0.8.7)
11
+ rcov (0.9.9)
12
+ rspec (2.1.0)
13
+ rspec-core (~> 2.1.0)
14
+ rspec-expectations (~> 2.1.0)
15
+ rspec-mocks (~> 2.1.0)
16
+ rspec-core (2.1.0)
17
+ rspec-expectations (2.1.0)
18
+ diff-lcs (~> 1.1.2)
19
+ rspec-mocks (2.1.0)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ bundler (~> 1.0.0)
26
+ jeweler (~> 1.5.1)
27
+ rcov
28
+ rspec (~> 2.1.0)
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Allen Bargi
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,117 @@
1
+ # Tmuxinator
2
+
3
+ Create and manage tmux sessions easily. Inspired by Jon Druse's ([Screeninator](https://github.com/jondruse/screeninator)) and Arthur Chiu's ([Terminitor](http://github.com/achiu/terminitor))
4
+
5
+ ## Installation
6
+
7
+
8
+ $ gem install tmuxinator
9
+
10
+ Then follow the instructions. You just have to drop a line in your ~/.bashrc file, similar to RVM if you've used that before:
11
+
12
+ if [[ -s $HOME/.tmuxinator/scripts/tmuxinator ]] ; then source $HOME/.tmuxinator/scripts/tmuxinator ; fi
13
+
14
+ ## Editor
15
+
16
+ tmuxinator uses your shell's default editor for opening files. If you're not sure what that is type:
17
+
18
+ $ echo $EDITOR
19
+
20
+ For me that produces "mate -w"
21
+ If you want to change your default editor simple put a line in ~/.bashrc that changes it. Mine looks like this:
22
+
23
+ export EDITOR='mate -w'
24
+
25
+ ## Usage
26
+
27
+
28
+ ### Create a project ###
29
+
30
+ $ tmuxinator open project_name
31
+
32
+ Create or edit your projects with this command. Your default editor ($EDITOR) is used to open the file. If this is a new project you will see this default config:
33
+
34
+ # ~/.tmuxinator/project_name.yml
35
+ # you can make as many tabs as you wish...
36
+
37
+ escape: ``
38
+ project_name: tmuxinator
39
+ project_root: ~/code/rails_project
40
+ tabs:
41
+ - shell: git pull
42
+ - database: rails db
43
+ - console: rails c
44
+ - logs:
45
+ - cd logs
46
+ - tail -f development.log
47
+ - ssh: ssh me@myhost
48
+
49
+
50
+ If a tab contains multiple commands, they will be 'joined' together with '&&'.
51
+
52
+ If you want to have your own default config, place it into $HOME/.tmuxinator/default.yml
53
+
54
+
55
+ Starting a project
56
+ ------------------
57
+
58
+ $ start_project_name
59
+
60
+ This will fire up tmux with all the tabs you configured.
61
+
62
+ ### Limitations ###
63
+
64
+ After you create a project, you will have to open a new shell window. This is because tmuxinator adds an alias to bash to open tmux with the project config.
65
+
66
+
67
+ Example
68
+ -------
69
+
70
+ ![Sample](http://f.cl.ly/items/3e3I1l1t3D2U472n1h0h/Screen%20shot%202010-12-10%20at%2010.59.17%20PM.png)
71
+
72
+
73
+ Other Commands
74
+ --------------
75
+
76
+ $ tmuxinator copy existing_project new_project
77
+
78
+ Copy an existing project.
79
+
80
+
81
+ $ tmuxinator update_scripts
82
+
83
+ Re-create the tmux scripts and aliases from the configs. Use this only if you edit your project configs outside of tmuxinator, i.e. not using "tmuxinator open xxx".
84
+
85
+
86
+ $ tmuxinator list
87
+
88
+ List all the projects you have configured
89
+
90
+ $ tmuxinator delete project_name
91
+
92
+ Remove a project
93
+
94
+ $ tmuxinator implode
95
+
96
+ Remove all tmuxinator configs, aliases and scripts.
97
+
98
+
99
+ Questions? Comments? Feature Request?
100
+ -------------------------------------
101
+
102
+ I would love to hear your feedback on this project! Send me a message!
103
+
104
+ ## Contributing to tmuxinator
105
+
106
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
107
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
108
+ * Fork the project
109
+ * Start a feature/bugfix branch
110
+ * Commit and push until you are happy with your contribution
111
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
112
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
113
+
114
+ ## Copyright
115
+
116
+ Copyright (c) 2010 Allen Bargi. See LICENSE.txt for
117
+ further details.
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "tmuxinator"
16
+ gem.homepage = "http://github.com/aziz/tmuxinator"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{Create and manage complex tmux sessions easily.}
19
+ gem.description = %Q{Create and manage complex tmux sessions easily.}
20
+ gem.email = "allen.bargi@gmail.com"
21
+ gem.authors = ["Allen Bargi"]
22
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
23
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
+ # gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
+ # gem.add_development_dependency 'rspec', '> 1.2.3'
26
+ end
27
+ Jeweler::RubygemsDotOrgTasks.new
28
+
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb']
33
+ end
34
+
35
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
36
+ spec.pattern = 'spec/**/*_spec.rb'
37
+ spec.rcov = true
38
+ end
39
+
40
+ task :default => :spec
41
+
42
+ require 'rake/rdoctask'
43
+ Rake::RDocTask.new do |rdoc|
44
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
+
46
+ rdoc.rdoc_dir = 'rdoc'
47
+ rdoc.title = "tmuxinator #{version}"
48
+ rdoc.rdoc_files.include('README*')
49
+ rdoc.rdoc_files.include('lib/**/*.rb')
50
+ end
data/TODO ADDED
@@ -0,0 +1,23 @@
1
+ 9. cli respond to -v -h
2
+ 10. add method missing for cli
3
+ 6. be sure to set the $SHELL and $EDITOR and path to aliases
4
+ 7. have a doctor like home brew to test $SHELL and $EDITOR and path to aliases and tmux installation
5
+ 8. push it to rubygems
6
+ 11. improve readme file
7
+
8
+ 4. support panes
9
+ 5. install theme
10
+
11
+ Later:
12
+ x. add documentation
13
+ x. add tests
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ DONE
22
+ 1. write a better sample
23
+ 2. test reattaching already attached
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
3
+
4
+ require 'tmuxinator'
5
+
6
+ Tmuxinator::Cli.start(*ARGV)
@@ -0,0 +1,9 @@
1
+ require 'yaml'
2
+ require 'ostruct'
3
+ require 'erb'
4
+ require 'tmuxinator/helper'
5
+ require 'tmuxinator/cli'
6
+ require 'tmuxinator/config_writer'
7
+
8
+ module Tmuxinator
9
+ end
@@ -0,0 +1,13 @@
1
+ # ~/.tmuxinator/<%= @name %>.yml
2
+ # you can make as many tabs as you wish...
3
+
4
+ project_name: Tmuxinator
5
+ project_root: ~/code/rails_project
6
+ tabs:
7
+ - shell: git pull
8
+ - database: rails db
9
+ - server: rails s
10
+ - logs: tail -f logs/development.log
11
+ - console: rails c
12
+ - capistrano:
13
+ - server: ssh me@myhost
@@ -0,0 +1,23 @@
1
+ cd <%= @project_root %>
2
+ tmux start-server
3
+
4
+ if ! $(tmux has-session -t <%= @project_name %>); then
5
+
6
+ tmux new-session -d -s <%= @project_name %> -n <%= @tabs[0].name %>
7
+ tmux set-option -t <%= @project_name %> base-index 1
8
+
9
+ <% @tabs.each do |tab| %>
10
+ <% unless @tabs.index(tab) == 0 %>
11
+ tmux new-window -t <%= @project_name %>:<%= @tabs.index(tab) + 1 %> -n <%= tab.name %>
12
+ <% end %>
13
+ <% end %>
14
+
15
+ <% @tabs.each do |tab| %>
16
+ tmux send-keys -t <%= @project_name %>:<%= @tabs.index(tab) + 1 %> '<%= tab.stuff %>' C-m
17
+ <% end %>
18
+
19
+ tmux select-window -t <%= @project_name %>:1
20
+
21
+ fi
22
+
23
+ tmux -u attach-session -t <%= @project_name %>
@@ -0,0 +1,138 @@
1
+ require 'fileutils'
2
+
3
+ module Tmuxinator
4
+ class Cli
5
+
6
+ class << self
7
+ include Tmuxinator::Helper
8
+
9
+ def start(*args)
10
+ if args.empty?
11
+ self.usage
12
+ else
13
+ self.send(args.shift, *args)
14
+ end
15
+ end
16
+
17
+ # print the usage string, this is a fall through method.
18
+ def usage
19
+ puts <<"DOC"
20
+ Usage: tmuxinator ACTION [Arg]
21
+
22
+ ACTOINS:
23
+ open [project_name]
24
+ create a new project file and open it in your editor
25
+ copy [source_project] [new_project]
26
+ copy source_project project file to a new project called new_project
27
+ delete [project_name]
28
+ deletes the project called project_name
29
+ implode
30
+ deletes all existing projects!
31
+ list [-v]
32
+ list all existing projects
33
+ DOC
34
+
35
+ end
36
+
37
+ # Open a config file, it's created if it doesn't exist already.
38
+ def open(*args)
39
+ puts "warning: passing multiple arguments to open will be ignored" if args.size > 1
40
+ @name = args.shift
41
+ FileUtils.mkdir_p(root_dir+"scripts")
42
+ config_path = "#{root_dir}#{@name}.yml"
43
+ unless File.exists?(config_path)
44
+ template = File.exists?(user_config) ? user_config : "#{File.dirname(__FILE__)}/assets/sample.yml"
45
+ erb = ERB.new(File.read(template)).result(binding)
46
+ tmp = File.open(config_path, 'w') {|f| f.write(erb) }
47
+ end
48
+ system("$EDITOR #{config_path}")
49
+ update_scripts
50
+ end
51
+
52
+ def copy(*args)
53
+ @copy = args.shift
54
+ @name = args.shift
55
+ @config_to_copy = "#{root_dir}#{@copy}.yml"
56
+
57
+ exit!("Project #{@copy} doesn't exist!") unless File.exists?(@config_to_copy)
58
+ exit!("You must specify a name for the new project") unless @name
59
+
60
+ file_path = "#{root_dir}#{@name}.yml"
61
+
62
+ if File.exists?(file_path)
63
+ confirm!("#{@name} already exists, would you like to overwrite it? (type yes or no):") do
64
+ FileUtils.rm(file_path)
65
+ puts "Overwriting #{@name}"
66
+ end
67
+ end
68
+ open(@name)
69
+ end
70
+
71
+ def delete(*args)
72
+ puts "warning: passing multiple arguments to delete will be ignored" if args.size > 1
73
+ filename = args.shift
74
+ file_path = "#{root_dir}#{filename}.yml"
75
+
76
+ if File.exists?(file_path)
77
+ confirm!("Are you sure you want to delete #{filename}? (type yes or no):") do
78
+ FileUtils.rm(file_path)
79
+ puts "Deleted #{filename}"
80
+ end
81
+ else
82
+ exit! "That file doesn't exist."
83
+ end
84
+
85
+ end
86
+
87
+ def implode(*args)
88
+ exit!("delete_all doesn't accapt any arguments!") unless args.empty?
89
+ confirm!("Are you sure you want to delete all tmuxinator configs? (type yes or no):") do
90
+ FileUtils.remove_dir(root_dir)
91
+ puts "Deleted #{root_dir}"
92
+ end
93
+ end
94
+
95
+ def list(*args)
96
+ verbose = args.include?("-v")
97
+ puts "tmuxinator configs:"
98
+ Dir["#{root_dir}**"].each do |path|
99
+ next unless verbose || File.extname(path) == ".yml"
100
+ path = path.gsub(root_dir, '').gsub('.yml','') unless verbose
101
+ puts " #{path}"
102
+ end
103
+ end
104
+
105
+ def update_scripts
106
+ Dir["#{root_dir}*.tmux"].each {|p| FileUtils.rm(p) }
107
+ aliases = []
108
+ Dir["#{root_dir}*.yml"].each do |path|
109
+ path = File.basename(path, '.yml')
110
+ aliases << Tmuxinator::ConfigWriter.new(path).write!
111
+ end
112
+ Tmuxinator::ConfigWriter.write_aliases(aliases)
113
+ end
114
+
115
+ def method_missing(method, *args, &block)
116
+ puts "There's no command called #{method} in tmuxinator"
117
+ usage
118
+ end
119
+
120
+ private #==============================
121
+
122
+ def root_dir
123
+ "#{ENV["HOME"]}/.tmuxinator/"
124
+ end
125
+
126
+ def sample_config
127
+ "#{File.dirname(__FILE__)}/assets/sample.yml"
128
+ end
129
+
130
+ def user_config
131
+ @config_to_copy || "#{ENV["HOME"]}/.tmuxinator/default.yml"
132
+ end
133
+
134
+ end
135
+
136
+ end
137
+ end
138
+
@@ -0,0 +1,58 @@
1
+ module Tmuxinator
2
+
3
+ class ConfigWriter
4
+
5
+ include Tmuxinator::Helper
6
+
7
+ def self.write_aliases(aliases)
8
+ File.open("#{ENV["HOME"]}/.tmuxinator/scripts/tmuxinator", 'w') {|f| f.write(aliases.join("\n")) }
9
+ end
10
+
11
+ def initialize(filename)
12
+ @filename = filename
13
+ @file_path = "#{root_dir}#{@filename}.yml"
14
+ process_config!
15
+ end
16
+
17
+ def write!
18
+ template = "#{File.dirname(__FILE__)}/assets/tmux_config.tmux"
19
+ erb = ERB.new(IO.read(template)).result(binding)
20
+ config_path = "#{root_dir}#{@filename}.tmux"
21
+ tmp = File.open(config_path, 'w') {|f| f.write(erb) }
22
+
23
+ "alias start_#{@filename}='$SHELL #{config_path}'"
24
+ end
25
+
26
+ private
27
+
28
+ def root_dir
29
+ "#{ENV["HOME"]}/.tmuxinator/"
30
+ end
31
+
32
+ def process_config!
33
+ yaml = YAML.load(File.read(@file_path))
34
+
35
+ exit!("Your configuration file should include some tabs.") if yaml["tabs"].nil?
36
+ exit!("Your configuration file didn't specify a 'project_root'") if yaml["project_root"].nil?
37
+ exit!("Your configuration file didn't specify a 'project_name'") if yaml["project_name"].nil?
38
+
39
+ @project_name = yaml["project_name"]
40
+ @project_root = yaml["project_root"]
41
+ @tabs = []
42
+
43
+ yaml["tabs"].each do |tab|
44
+ t = OpenStruct.new
45
+ t.name = tab.keys.first
46
+ value = tab.values.first
47
+ t.stuff = value.is_a?(Array) ? value.join(" && ") : value
48
+ @tabs << t
49
+ end
50
+
51
+ end
52
+
53
+ def write_alias(stuff)
54
+ File.open("#{root_dir}scripts/#{@filename}", 'w') {|f| f.write(stuff) }
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,19 @@
1
+ module Tmuxinator
2
+ module Helper
3
+
4
+ def exit!(msg)
5
+ puts msg
6
+ Kernel.exit(1)
7
+ end
8
+
9
+ def confirm!(msg)
10
+ puts msg
11
+ if %w(yes Yes YES y).include?(STDIN.gets.chop)
12
+ yield
13
+ else
14
+ exit! "Aborting."
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'tmuxinator'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Tmuxinator" do
4
+ it "fails" do
5
+ fail "hey buddy, you should probably rename this file and start specing for real"
6
+ end
7
+ end
@@ -0,0 +1,72 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{tmuxinator}
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Allen Bargi"]
12
+ s.date = %q{2010-12-10}
13
+ s.default_executable = %q{tmuxinator}
14
+ s.description = %q{Create and manage complex tmux sessions easily.}
15
+ s.email = %q{allen.bargi@gmail.com}
16
+ s.executables = ["tmuxinator"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.md"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".rspec",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE.txt",
27
+ "README.md",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "bin/tmuxinator",
31
+ "lib/tmuxinator.rb",
32
+ "lib/tmuxinator/assets/sample.yml",
33
+ "lib/tmuxinator/assets/tmux_config.tmux",
34
+ "lib/tmuxinator/cli.rb",
35
+ "lib/tmuxinator/config_writer.rb",
36
+ "lib/tmuxinator/helper.rb",
37
+ "spec/spec_helper.rb",
38
+ "spec/tmuxinator_spec.rb"
39
+ ]
40
+ s.homepage = %q{http://github.com/aziz/tmuxinator}
41
+ s.licenses = ["MIT"]
42
+ s.require_paths = ["lib"]
43
+ s.rubygems_version = %q{1.3.7}
44
+ s.summary = %q{Create and manage complex tmux sessions easily.}
45
+ s.test_files = [
46
+ "spec/spec_helper.rb",
47
+ "spec/tmuxinator_spec.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
+ s.add_development_dependency(%q<rspec>, ["~> 2.1.0"])
56
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
57
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
58
+ s.add_development_dependency(%q<rcov>, [">= 0"])
59
+ else
60
+ s.add_dependency(%q<rspec>, ["~> 2.1.0"])
61
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
63
+ s.add_dependency(%q<rcov>, [">= 0"])
64
+ end
65
+ else
66
+ s.add_dependency(%q<rspec>, ["~> 2.1.0"])
67
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
68
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
69
+ s.add_dependency(%q<rcov>, [">= 0"])
70
+ end
71
+ end
72
+
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tmuxinator
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
+ platform: ruby
12
+ authors:
13
+ - Allen Bargi
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-11 00:00:00 +01:00
19
+ default_executable: tmuxinator
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ type: :development
23
+ prerelease: false
24
+ name: rspec
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ hash: 11
31
+ segments:
32
+ - 2
33
+ - 1
34
+ - 0
35
+ version: 2.1.0
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ type: :development
39
+ prerelease: false
40
+ name: bundler
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ hash: 23
47
+ segments:
48
+ - 1
49
+ - 0
50
+ - 0
51
+ version: 1.0.0
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ type: :development
55
+ prerelease: false
56
+ name: jeweler
57
+ version_requirements: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ hash: 1
63
+ segments:
64
+ - 1
65
+ - 5
66
+ - 1
67
+ version: 1.5.1
68
+ requirement: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ type: :development
71
+ prerelease: false
72
+ name: rcov
73
+ version_requirements: &id004 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ requirement: *id004
83
+ description: Create and manage complex tmux sessions easily.
84
+ email: allen.bargi@gmail.com
85
+ executables:
86
+ - tmuxinator
87
+ extensions: []
88
+
89
+ extra_rdoc_files:
90
+ - LICENSE.txt
91
+ - README.md
92
+ - TODO
93
+ files:
94
+ - .document
95
+ - .rspec
96
+ - Gemfile
97
+ - Gemfile.lock
98
+ - LICENSE.txt
99
+ - README.md
100
+ - Rakefile
101
+ - VERSION
102
+ - bin/tmuxinator
103
+ - lib/tmuxinator.rb
104
+ - lib/tmuxinator/assets/sample.yml
105
+ - lib/tmuxinator/assets/tmux_config.tmux
106
+ - lib/tmuxinator/cli.rb
107
+ - lib/tmuxinator/config_writer.rb
108
+ - lib/tmuxinator/helper.rb
109
+ - spec/spec_helper.rb
110
+ - spec/tmuxinator_spec.rb
111
+ - tmuxinator.gemspec
112
+ - TODO
113
+ has_rdoc: true
114
+ homepage: http://github.com/aziz/tmuxinator
115
+ licenses:
116
+ - MIT
117
+ post_install_message:
118
+ rdoc_options: []
119
+
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ hash: 3
137
+ segments:
138
+ - 0
139
+ version: "0"
140
+ requirements: []
141
+
142
+ rubyforge_project:
143
+ rubygems_version: 1.3.7
144
+ signing_key:
145
+ specification_version: 3
146
+ summary: Create and manage complex tmux sessions easily.
147
+ test_files:
148
+ - spec/spec_helper.rb
149
+ - spec/tmuxinator_spec.rb