tabby2 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 21319252f40ee8728aa3e3ea385703992193383939f2140f54375fbeaa1c36f7
4
+ data.tar.gz: 1ac6dc464e39229135a630dc41f443a01a67e6892d3b1ed3b186a5775097658a
5
+ SHA512:
6
+ metadata.gz: 5534eefdb0ebe76878015626b594d7c61ee2c9d5bea5f9d6138be17a997ae741f9bc038bf9df3253ea2982fb5ea05090092bdc44bcd38c41b22b40c1bf916ea0
7
+ data.tar.gz: 2fbde15314b26b0048dab5cc7a8479665f5d7ef7b67c430820a325f7fa28e93f7ecc6cd2fb433e99e53d5599d52d778ab5a9a38b06d84bd6181ec30636b7857b
File without changes
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ tabby (0.0.2)
5
+ thor (~> 0.14.6)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.1.2)
11
+ fakeout (0.0.1)
12
+ mnoble-fakefs (0.3.2)
13
+ rspec (2.1.0)
14
+ rspec-core (~> 2.1.0)
15
+ rspec-expectations (~> 2.1.0)
16
+ rspec-mocks (~> 2.1.0)
17
+ rspec-core (2.1.0)
18
+ rspec-expectations (2.1.0)
19
+ diff-lcs (~> 1.1.2)
20
+ rspec-mocks (2.1.0)
21
+ thor (0.14.6)
22
+
23
+ PLATFORMS
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ fakeout (>= 0.0.1)
28
+ mnoble-fakefs (>= 0.3.1)
29
+ rspec (~> 2.1.0)
30
+ tabby!
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (C) 2011 by Matte Noble
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE
@@ -0,0 +1,42 @@
1
+ # Tabby
2
+ Tabby is a simple iTerm2 environment configuration tool. It allows you to create different environments for different projects, each with their own set of tabs and command sets.
3
+
4
+ ## Usage
5
+
6
+ ### Defining Environments
7
+ Environments should be stored in `~/.tabby/`, using a simple and short name. We'll walk through building my `~/.tabby/blog.rb` environment.
8
+
9
+ Tabby environments are just regular Ruby classes. The filename and classname should match, with the classname following regular Ruby standards:
10
+
11
+ class Blog < Tabby::Base
12
+ end
13
+
14
+ Define your project's root directory with `basedir`:
15
+
16
+ class Blog < Tabby::Base
17
+ basedir "~/Dev/Blog"
18
+ end
19
+
20
+ Creating tabs is just a matter of creating methods. There should be one method per tab. The method name becomes the tab's title; replacing underscores with spaces.
21
+
22
+ class Blog < Tabby::Base
23
+ basedir "~/Dev/Blog"
24
+
25
+ def jekyll
26
+ exec "jekyll --auto --server"
27
+ end
28
+
29
+ def sass
30
+ exec "sass --watch public/css/main.sass:public/css/main.css"
31
+ end
32
+ end
33
+
34
+ Each tab will start off by `cd`'ing into the environment's `basedir`. Then it will execute it's list of commands in order.
35
+
36
+ ### Starting An Environment
37
+ tabby blog
38
+
39
+ ![tabby](https://github.com/mnoble/tabby/raw/master/screenshot.png)
40
+
41
+ ## License
42
+ See LICENSE
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ RSpec::Core::RakeTask.new do |spec|
6
+ spec.rspec_opts = ["--format=doc", "--fail-fast", "--color"]
7
+ end
8
+
9
+ task :test => :spec
10
+ task :default => :spec
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require "tabby"
3
+ require "tabby/cli"
4
+ Tabby::CLI.start(ARGV.dup)
@@ -0,0 +1,14 @@
1
+ require "erb"
2
+ require "tempfile"
3
+ require "pathname"
4
+ require "thor"
5
+
6
+ module Tabby
7
+ ROOT = Pathname.new(File.dirname(__FILE__) + "/../").expand_path
8
+ TABBYDIR = Pathname.new("~/.tabby").expand_path
9
+ end
10
+
11
+ require "tabby/base"
12
+ require "tabby/runner"
13
+ require "tabby/creator"
14
+ require "tabby/editor"
@@ -0,0 +1,72 @@
1
+ module Tabby
2
+ class Base
3
+ class << self; attr_reader :_basedir; end
4
+
5
+ # Sets the project root directory.
6
+ #
7
+ # Parameters:
8
+ # dir Project's root directory path
9
+ #
10
+ def self.basedir(dir)
11
+ @_basedir = dir
12
+ end
13
+
14
+ # List of commands for the current tab to execute.
15
+ attr_accessor :commands
16
+
17
+ # Title of the current tab being created.
18
+ attr_accessor :title
19
+
20
+ # Rendered AppleScript source to be saved to a tempfile.
21
+ attr_accessor :template
22
+
23
+ def initialize
24
+ @commands = []
25
+ end
26
+
27
+ # Queue a command to be executed when the tab gets created.
28
+ #
29
+ # Parameters:
30
+ # command bash/zsh/etc command to be executed
31
+ #
32
+ def exec(command)
33
+ @commands << %{write text "#{command}"}
34
+ end
35
+
36
+ # Call each instance method and create a tab for each one.
37
+ # Method names become tab titles, with underscores replaced
38
+ # with spaces.
39
+ #
40
+ def call
41
+ self.class.instance_methods(false).each do |method|
42
+ @commands = []
43
+ @title = method
44
+ send(method)
45
+ create_tab
46
+ end
47
+ end
48
+
49
+ # Project's base directory. Each tab +cd+'s into this
50
+ # directory before executing commands.
51
+ #
52
+ def basedir
53
+ self.class._basedir
54
+ end
55
+
56
+ private
57
+
58
+ def create_tab
59
+ tempfile = Tempfile.new("tabby-#{@title}")
60
+ tempfile.write(render_script)
61
+ tempfile.close
62
+ system("osascript #{tempfile.path}")
63
+ end
64
+
65
+ def render_script
66
+ osapath = ROOT.join("script/tabby.osa.erb")
67
+ template = ERB.new(File.read(osapath))
68
+ commands = @commands.join("\n")
69
+ @template = template.result(binding)
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,26 @@
1
+ module Tabby
2
+ class CLI < Thor
3
+ desc "open [project]", "Starts up the environment for a project."
4
+ def open(project=nil)
5
+ Tabby::Runner.new(project).run!
6
+ end
7
+
8
+ desc "create [project]", "Creates an empty project config."
9
+ def create(project=nil)
10
+ Tabby::Creator.new(project).run!
11
+ end
12
+
13
+ desc "edit [project]", "Opens the project config with $EDITOR."
14
+ def edit(project=nil)
15
+ Tabby::Editor.new(project).run!
16
+ end
17
+
18
+ desc "list", "List all projects."
19
+ def list
20
+ puts "Tabby Projects"
21
+ Pathname.glob("#{TABBYDIR}/*.rb").each do |project|
22
+ puts " - #{project.basename(".rb")}"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,44 @@
1
+ module Tabby
2
+ class Creator
3
+ TEMPLATE = ROOT.join("templates/project.rb.erb")
4
+
5
+ attr_reader :project, :template
6
+
7
+ def initialize(name)
8
+ @project = name
9
+ @template = ERB.new(TEMPLATE.expand_path.read)
10
+ end
11
+
12
+ def run!
13
+ if exists?
14
+ puts ">> Project already exists."
15
+ else
16
+ create_project_directory
17
+ create_project_file
18
+ puts ">> Successfully created #{@project}."
19
+ Tabby::Editor.new(@project).run!
20
+ end
21
+ end
22
+
23
+ def exist?
24
+ project_path.exist?
25
+ end
26
+ alias :exists? :exist?
27
+
28
+ def create_project_directory
29
+ FileUtils.mkdir_p(TABBYDIR) unless File.directory?(TABBYDIR)
30
+ end
31
+
32
+ def create_project_file
33
+ project_path.open("w") { |f| f << template.result(binding) }
34
+ end
35
+
36
+ def project_path
37
+ TABBYDIR.join("#{project}.rb").expand_path
38
+ end
39
+
40
+ def klass
41
+ project.gsub(/_|-/, " ").split.map { |w| w.capitalize }.join
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ module Tabby
2
+ class Editor
3
+ def initialize(project=nil)
4
+ @project = project
5
+ end
6
+
7
+ def run!
8
+ if path.exist?
9
+ system("$EDITOR #{TABBYDIR.join("#{@project}.rb")}")
10
+ else
11
+ Tabby::Creator.new(@project).run!
12
+ end
13
+ end
14
+
15
+ def path
16
+ TABBYDIR.join("#{@project}.rb")
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module Tabby
2
+ class Runner
3
+ attr_reader :project
4
+
5
+ def initialize(project)
6
+ @project = project
7
+ @path = TABBYDIR.join("#{@project}.rb")
8
+ end
9
+
10
+ def dasherize
11
+ @project.gsub("_", "-")
12
+ end
13
+
14
+ def klass
15
+ @project.split(/_|-/).map { |p| p.capitalize }.join.to_sym
16
+ end
17
+
18
+ def run!
19
+ if @path.expand_path.exist?
20
+ require TABBYDIR.join("#{@project}.rb")
21
+ ObjectSpace.class.const_get(klass).new.call
22
+ else
23
+ puts ">> Project '#{@project}' does not exist."
24
+ end
25
+ end
26
+ end
27
+ end
Binary file
@@ -0,0 +1,10 @@
1
+ tell application "iTerm2"
2
+ tell current window
3
+ create tab with default profile
4
+ tell the current session
5
+ set name to "<%= title %>"
6
+ write text "cd \"<%= basedir %>\" && clear"
7
+ <%= commands %>
8
+ end tell
9
+ end tell
10
+ end tell
@@ -0,0 +1,3 @@
1
+ class Helicopter < Tabby::Base
2
+ basedir "~/Dev/helicopter"
3
+ end
@@ -0,0 +1,11 @@
1
+ class SpecBlog < Tabby::Base
2
+ basedir "~/Dev/Blog"
3
+
4
+ def jekyll
5
+ exec "jekyll --auto --server"
6
+ end
7
+
8
+ def sass
9
+ exec "sass --watch public/css/main.sass:public/css/main.css"
10
+ end
11
+ end
@@ -0,0 +1,31 @@
1
+ require "rspec"
2
+ require "fakefs/spec_helpers"
3
+ require "fakeout/spec_helpers"
4
+ require "stringio"
5
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
6
+ $LOAD_PATH.unshift(File.expand_path('..', __FILE__))
7
+ require "tabby"
8
+ require "tabby/runner"
9
+ require "tabby/creator"
10
+ require "tabby/cli"
11
+
12
+ require "support/stub_constant"
13
+
14
+ class FakeFile < StringIO
15
+ def path; "/tmp/#{object_id}"; end
16
+ end
17
+
18
+ # Disable Kernel#system
19
+ module Kernel
20
+ def system(*args); end
21
+ end
22
+
23
+ RSpec.configure do |config|
24
+ config.include(Fakeout::SpecHelpers)
25
+ config.include(FakeFS::SpecHelpers)
26
+
27
+ config.before do
28
+ tabbydir = File.dirname(__FILE__) + "/.tabby/"
29
+ Tabby.stub_constant(:TABBYDIR => Pathname.new(tabbydir).expand_path)
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ class Object
2
+ def expand(*args)
3
+ File.expand_path(*args)
4
+ end
5
+ end
@@ -0,0 +1,25 @@
1
+ module Kernel
2
+ def stub_constant(constants)
3
+ silence!
4
+ constants.each do |name, value|
5
+ instance_variable_set("@unstubbed_#{name}", const_get(name))
6
+ const_set(name, value)
7
+ end
8
+ noise!
9
+ end
10
+
11
+ def silence!
12
+ @__verbose = $VERBOSE
13
+ $VERBOSE = nil
14
+ end
15
+
16
+ def noise!
17
+ $VERBOSE = @__verbose
18
+ end
19
+
20
+ def unstub_constant(name)
21
+ silence!
22
+ const_set(name, instance_variable_get("@unstubbed_#{name}"))
23
+ noise!
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ require "stringio"
2
+
3
+ class Object
4
+ def self.with_constants(constants, &block)
5
+ old_constants = {}
6
+ stderr = $stderr
7
+ $stderr = StringIO.new
8
+
9
+ constants.each do |constant, val|
10
+ old_constants[constant] = const_get(constant)
11
+ const_set(constant, val)
12
+ end
13
+
14
+ block.call
15
+
16
+ old_constants.each do |constant, val|
17
+ const_set(constant, val)
18
+ end
19
+
20
+ $stderr = stderr
21
+ end
22
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ class TabbySpecBlog < Tabby::Base
4
+ basedir "~/Dev/Blog"
5
+ def foo
6
+ exec "whoami"
7
+ exec "pwd"
8
+ end
9
+ end
10
+
11
+ describe Tabby::Base do
12
+ before do
13
+ Tempfile.stub(:new).and_return(FakeFile.new)
14
+ FakeFS.deactivate!
15
+ end
16
+
17
+ subject { TabbySpecBlog.new }
18
+
19
+ it "should set a base directory" do
20
+ subject.basedir.should == "~/Dev/Blog"
21
+ end
22
+
23
+ it "should queue commands to be executed" do
24
+ subject.exec("ls")
25
+ subject.commands.should include("write text \"ls\"")
26
+ end
27
+
28
+ it "should call all tab methods" do
29
+ subject.should_receive(:foo)
30
+ subject.call
31
+ end
32
+
33
+ it "should create actual iTerm2 tab before each method call" do
34
+ subject.call
35
+ subject.template.should match /launch session "Default"/
36
+ end
37
+
38
+ it "should set the title" do
39
+ subject.call
40
+ subject.template.should match /set name to "foo"/
41
+ end
42
+
43
+ it "should change directory into the base directory" do
44
+ subject.call
45
+ subject.template.should match %r{write text "cd ~/Dev/Blog"}
46
+ end
47
+
48
+ it "should execute all commands" do
49
+ subject.call
50
+ subject.template.should match /write text "whoami"/
51
+ end
52
+ end
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Tabby::CLI do
4
+ let(:path) { Tabby::TABBYDIR.join("battle.rb") }
5
+ let(:runner) { mock('Tabby::Runner').as_null_object }
6
+
7
+ before do
8
+ Fakeout.activate!
9
+ Tempfile.stub(:new).and_return { FakeFile.new }
10
+ end
11
+
12
+ it "should open an existing project" do
13
+ Tabby::Runner.should_receive(:new).with("battle").and_return(runner)
14
+ Tabby::CLI.start(["open", "battle"])
15
+ end
16
+
17
+ it "should create an empty project config" do
18
+ Tabby::CLI.start(["create", "battle"])
19
+ path.should exist
20
+ end
21
+
22
+ it "should list available projects" do
23
+ FileUtils.mkdir_p(Tabby::TABBYDIR)
24
+ FileUtils.touch(path.expand_path.to_s)
25
+
26
+ Tabby::CLI.start(["list"])
27
+ stdout.should include "- battle"
28
+ end
29
+ end
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Tabby::Creator do
4
+ let(:basedir) { Tabby::TABBYDIR }
5
+ let(:path) { basedir.join("helicopter.rb") }
6
+ let(:creator) { Tabby::Creator.new("helicopter") }
7
+
8
+ before do
9
+ FakeFS.activate!
10
+ creator.run!
11
+ end
12
+
13
+ it "should create the tabby directory if it is missing" do
14
+ File.directory?(path.dirname).should be_true
15
+ end
16
+
17
+ it "should create a tabby file" do
18
+ File.exists?(path).should be_true
19
+ end
20
+
21
+ it "should have a project path" do
22
+ creator.project_path.to_s.should =~ /helicopter\.rb/
23
+ end
24
+
25
+ it "should determine the class name for single word projects" do
26
+ creator.klass.should == "Helicopter"
27
+ end
28
+
29
+ it "should determine the class name for multi word projects with underscores" do
30
+ creator = Tabby::Creator.new("long_name_project")
31
+ creator.klass.should == "LongNameProject"
32
+ end
33
+
34
+ it "should determine the class name for multi word projects with hyphens" do
35
+ creator = Tabby::Creator.new("long-name-project")
36
+ creator.klass.should == "LongNameProject"
37
+ end
38
+
39
+ it "should create a templated project file" do
40
+ File.read(path).should == <<-PROJECT
41
+ class Helicopter < Tabby::Base
42
+ basedir "~/Dev/helicopter"
43
+
44
+ def server
45
+ exec "rails s"
46
+ end
47
+ end
48
+ PROJECT
49
+ end
50
+
51
+ it "should know if it already exists or not" do
52
+ creator.should exist
53
+ end
54
+
55
+ it "should not create projects that already exist" do
56
+ creator.run!
57
+ stdout.should include "Project already exists."
58
+ end
59
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Tabby::Editor do
4
+ let(:basedir) { Tabby::TABBYDIR }
5
+ let(:path) { basedir.join("helicopter.rb") }
6
+ let(:editor) { Tabby::Editor.new("helicopter") }
7
+
8
+ before do
9
+ Fakeout.deactivate!
10
+ editor.stub(:path) { path }
11
+ end
12
+
13
+ it "should open a project file with $EDITOR" do
14
+ path.stub(:exist?) { true }
15
+ editor.should_receive(:system).with("$EDITOR #{path.expand_path}")
16
+ editor.run!
17
+ end
18
+
19
+ it "should create a new project if it doesn't exist" do
20
+ path.stub(:exist?) { false }
21
+ creator = mock("Tabby::Creator").as_null_object
22
+ Tabby::Creator.should_receive(:new).with("helicopter").and_return(creator)
23
+ editor.run!
24
+ end
25
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+ require File.dirname(__FILE__) + "/../.tabby/spec_blog"
3
+
4
+ describe Tabby::Runner do
5
+ let(:tabbydir) { Pathname.new(File.dirname(__FILE__) + "/../.tabby").expand_path }
6
+ let(:runner) { Tabby::Runner.new("spec_blog") }
7
+
8
+ before do
9
+ Tabby::Base.stub(:new).and_return(mock.as_null_object)
10
+ end
11
+
12
+ it "should convert an underscored project to hyphenated" do
13
+ Tabby::Runner.new("time_cop").dasherize.should == "time-cop"
14
+ end
15
+
16
+ it "should determine the class of a project with underscores" do
17
+ Tabby::Runner.new("time_cop").klass.should == :TimeCop
18
+ end
19
+
20
+ it "should determine the class of a project with hyphens" do
21
+ Tabby::Runner.new("time-cop").klass.should == :TimeCop
22
+ end
23
+
24
+ it "should determine the class of a project with underscores and hyphens" do
25
+ Tabby::Runner.new("jean-claude_van_damme").klass.should == :JeanClaudeVanDamme
26
+ end
27
+
28
+ it "should find the project file" do
29
+ runner.should_receive(:require).with(tabbydir.join("spec_blog.rb"))
30
+ runner.run!
31
+ end
32
+
33
+ it "should call the project class" do
34
+ SpecBlog.should_receive(:new).and_return(mock.as_null_object)
35
+ runner.run!
36
+ end
37
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "tabby2"
6
+ s.version = "0.2.1"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Jacques Crocker", "Matte Noble"]
9
+ s.email = ["jacques@nodeknockout.com", "me@mattenoble.com"]
10
+ s.homepage = "http://github.com/jacquescrocker/tabby2"
11
+ s.summary = %q{Simple iTerm2 project environment setup.}
12
+ s.description = %q{Simple iTerm2 project environment setup.}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.extra_rdoc_files = ["README.markdown", "screenshot.png"]
18
+ s.require_paths = ["lib"]
19
+
20
+ # Runtime
21
+ s.add_dependency "thor", "~> 0.14.6"
22
+
23
+ # Development
24
+ s.add_development_dependency "rspec", "~> 2.1.0"
25
+ s.add_development_dependency "fakeout", ">= 0.0.1"
26
+ s.add_development_dependency "mnoble-fakefs", ">= 0.3.1"
27
+ end
@@ -0,0 +1,7 @@
1
+ class <%= klass %> < Tabby::Base
2
+ basedir "~/Dev/<%= project %>"
3
+
4
+ def server
5
+ exec "rails s"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tabby2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Jacques Crocker
8
+ - Matte Noble
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2019-06-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.14.6
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.14.6
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 2.1.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 2.1.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: fakeout
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 0.0.1
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.0.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: mnoble-fakefs
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.3.1
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.3.1
70
+ description: Simple iTerm2 project environment setup.
71
+ email:
72
+ - jacques@nodeknockout.com
73
+ - me@mattenoble.com
74
+ executables:
75
+ - tabby
76
+ extensions: []
77
+ extra_rdoc_files:
78
+ - README.markdown
79
+ - screenshot.png
80
+ files:
81
+ - ".gemtest"
82
+ - ".gitignore"
83
+ - Gemfile
84
+ - Gemfile.lock
85
+ - LICENSE
86
+ - README.markdown
87
+ - Rakefile
88
+ - bin/tabby
89
+ - lib/tabby.rb
90
+ - lib/tabby/base.rb
91
+ - lib/tabby/cli.rb
92
+ - lib/tabby/creator.rb
93
+ - lib/tabby/editor.rb
94
+ - lib/tabby/runner.rb
95
+ - screenshot.png
96
+ - script/tabby.osa.erb
97
+ - spec/.tabby/mismatch.rb
98
+ - spec/.tabby/spec_blog.rb
99
+ - spec/spec_helper.rb
100
+ - spec/support/expand.rb
101
+ - spec/support/stub_constant.rb
102
+ - spec/support/with_constants.rb
103
+ - spec/tabby/base_spec.rb
104
+ - spec/tabby/cli_spec.rb
105
+ - spec/tabby/creator_spec.rb
106
+ - spec/tabby/editor_spec.rb
107
+ - spec/tabby/runner_spec.rb
108
+ - tabby2.gemspec
109
+ - templates/project.rb.erb
110
+ homepage: http://github.com/jacquescrocker/tabby2
111
+ licenses: []
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.7.5
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Simple iTerm2 project environment setup.
133
+ test_files:
134
+ - spec/spec_helper.rb
135
+ - spec/support/expand.rb
136
+ - spec/support/stub_constant.rb
137
+ - spec/support/with_constants.rb
138
+ - spec/tabby/base_spec.rb
139
+ - spec/tabby/cli_spec.rb
140
+ - spec/tabby/creator_spec.rb
141
+ - spec/tabby/editor_spec.rb
142
+ - spec/tabby/runner_spec.rb