work-on 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +28 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +54 -0
- data/VERSION +1 -0
- data/bin/work-on +4 -0
- data/lib/work-on.rb +9 -0
- data/lib/work_on/cli.rb +16 -0
- data/lib/work_on/config.rb +30 -0
- data/lib/work_on/project.rb +61 -0
- data/lib/work_on/terminal.rb +106 -0
- data/lib/work_on/terminals/mac_terminal.rb +91 -0
- data/test/core/config_test.rb +17 -0
- data/test/core/project_test.rb +20 -0
- data/test/core/terminal_test.rb +43 -0
- data/test/teststrap.rb +4 -0
- data/work-on.gemspec +77 -0
- metadata +148 -0
data/.document
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
gem 'abstract'
|
7
|
+
gem 'rb-appscript'
|
8
|
+
|
9
|
+
# Add dependencies to develop your gem here.
|
10
|
+
# Include everything needed to run rake, tests, features, etc.
|
11
|
+
group :development do
|
12
|
+
gem "riot", ">= 0"
|
13
|
+
gem "bundler", "~> 1.0.0"
|
14
|
+
gem "jeweler", "~> 1.6.4"
|
15
|
+
gem "rcov"
|
16
|
+
gem "rdoc"
|
17
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
abstract (1.0.0)
|
5
|
+
git (1.2.5)
|
6
|
+
jeweler (1.6.4)
|
7
|
+
bundler (~> 1.0)
|
8
|
+
git (>= 1.2.5)
|
9
|
+
rake
|
10
|
+
rake (0.9.2)
|
11
|
+
rb-appscript (0.6.1)
|
12
|
+
rcov (0.9.10)
|
13
|
+
rdoc (3.9.4)
|
14
|
+
riot (0.12.5)
|
15
|
+
rr
|
16
|
+
rr (1.0.4)
|
17
|
+
|
18
|
+
PLATFORMS
|
19
|
+
ruby
|
20
|
+
|
21
|
+
DEPENDENCIES
|
22
|
+
abstract
|
23
|
+
bundler (~> 1.0.0)
|
24
|
+
jeweler (~> 1.6.4)
|
25
|
+
rb-appscript
|
26
|
+
rcov
|
27
|
+
rdoc
|
28
|
+
riot
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Toon Willems
|
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.
|
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= work-on
|
2
|
+
|
3
|
+
Description goes here.
|
4
|
+
|
5
|
+
== Contributing to work-on
|
6
|
+
|
7
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
9
|
+
* Fork the project
|
10
|
+
* Start a feature/bugfix branch
|
11
|
+
* Commit and push until you are happy with your contribution
|
12
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
+
* 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.
|
14
|
+
|
15
|
+
== Copyright
|
16
|
+
|
17
|
+
Copyright (c) 2011 Toon Willems. See LICENSE.txt for
|
18
|
+
further details.
|
19
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "work-on"
|
18
|
+
gem.homepage = "http://github.com/nudded/work-on"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{Commandline Terminal Automation}
|
21
|
+
gem.description = %Q{utility to manage projects and the terminal windows you open when you work on them.}
|
22
|
+
gem.email = "willemstoon@gmail.com"
|
23
|
+
gem.authors = ["Toon Willems"]
|
24
|
+
gem.executables = ['work-on']
|
25
|
+
# dependencies defined in Gemfile
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rake/testtask'
|
30
|
+
Rake::TestTask.new(:test) do |test|
|
31
|
+
test.libs << 'lib' << 'test'
|
32
|
+
test.pattern = 'test/**/*_test.rb'
|
33
|
+
test.verbose = true
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
Rcov::RcovTask.new do |test|
|
38
|
+
test.libs << 'test' << 'lib'
|
39
|
+
test.pattern = 'test/**/*_test.rb'
|
40
|
+
test.verbose = true
|
41
|
+
test.rcov_opts << '--exclude "gems/*"'
|
42
|
+
end
|
43
|
+
|
44
|
+
task :default => :test
|
45
|
+
|
46
|
+
require 'rdoc/task'
|
47
|
+
RDoc::Task.new do |rdoc|
|
48
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
|
+
|
50
|
+
rdoc.rdoc_dir = 'rdoc'
|
51
|
+
rdoc.title = "work-on #{version}"
|
52
|
+
rdoc.rdoc_files.include('README*')
|
53
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
data/bin/work-on
ADDED
data/lib/work-on.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
module WorkOn
|
2
|
+
autoload :Terminal , 'work_on/terminal.rb'
|
3
|
+
autoload :AbstractTerminal , 'work_on/terminal.rb'
|
4
|
+
autoload :MacTerminal , 'work_on/terminals/mac_terminal.rb'
|
5
|
+
autoload :Config , 'work_on/config.rb'
|
6
|
+
autoload :Project , 'work_on/project.rb'
|
7
|
+
autoload :Cli , 'work_on/cli.rb'
|
8
|
+
|
9
|
+
end
|
data/lib/work_on/cli.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module WorkOn
|
4
|
+
class Cli < Thor
|
5
|
+
|
6
|
+
desc "start PROJECT", "start working on the given project"
|
7
|
+
def start(project_name)
|
8
|
+
Config.default[project_name].work!
|
9
|
+
end
|
10
|
+
|
11
|
+
# use method_missing to start the project
|
12
|
+
def method_missing(name, *args)
|
13
|
+
start(name.to_s)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module WorkOn
|
4
|
+
|
5
|
+
class Config
|
6
|
+
|
7
|
+
def self.default
|
8
|
+
@default ||= Config.new(File.expand_path '~/.config/work_on')
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :file_name
|
12
|
+
|
13
|
+
def initialize(file_name)
|
14
|
+
self.file_name = file_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def file_name=(file_name)
|
18
|
+
@file_name = file_name
|
19
|
+
@hash = YAML.load_file file_name
|
20
|
+
end
|
21
|
+
|
22
|
+
def [](project)
|
23
|
+
config = @hash[project]
|
24
|
+
raise ArgumentError, "No config found for that project" unless config
|
25
|
+
Project.new project, config
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module WorkOn
|
2
|
+
|
3
|
+
class Project
|
4
|
+
|
5
|
+
def initialize(name, config)
|
6
|
+
@name = name
|
7
|
+
@config = config
|
8
|
+
@project_dir = @config['project-dir']
|
9
|
+
@terminal = Terminal.instance
|
10
|
+
end
|
11
|
+
|
12
|
+
# Start working on this project
|
13
|
+
def work!
|
14
|
+
initialize_windows
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Sets up the terminal according the config file
|
20
|
+
def initialize_windows
|
21
|
+
windows = @config.select {|k,v| /window/ === k }
|
22
|
+
# if there is no window specified, i will assume the users wants to open the tabs in the current
|
23
|
+
# terminal window
|
24
|
+
if windows.empty?
|
25
|
+
tabs = @config.select {|k,v| /tab/ === k }
|
26
|
+
create_tabs(@terminal.selected_window, tabs, false)
|
27
|
+
else
|
28
|
+
windows.each do |window, tabs_hash|
|
29
|
+
create_window(tabs_hash)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Create a new window with the commands defined in tabs
|
35
|
+
def create_window(tabs)
|
36
|
+
window = @terminal.new_window
|
37
|
+
create_tabs(window, tabs)
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_tabs(window, hash, use_current = true)
|
41
|
+
# create as many tabs as needed
|
42
|
+
# if use_current is true, create one less and use the current one
|
43
|
+
count = hash.keys.size
|
44
|
+
if use_current
|
45
|
+
count -= 1
|
46
|
+
first_tab = window.selected_tab
|
47
|
+
end
|
48
|
+
tabs = count.times.map { window.new_tab }
|
49
|
+
tabs.unshift first_tab if use_current
|
50
|
+
|
51
|
+
hash.values.each.with_index do |commands, i|
|
52
|
+
tabs[i].execute "cd #{@project_dir}"
|
53
|
+
commands.each do |command|
|
54
|
+
tabs[i].execute(command)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'abstract'
|
2
|
+
require 'singleton'
|
3
|
+
|
4
|
+
module WorkOn
|
5
|
+
|
6
|
+
# Base class for Terminals
|
7
|
+
# only tabs allow for command execution
|
8
|
+
# So the idea is that you only call execute on a tab
|
9
|
+
#
|
10
|
+
# This means that every window should have at least 1 tab (even though it will not be visible gui-wise)
|
11
|
+
class AbstractTerminal
|
12
|
+
|
13
|
+
include Singleton
|
14
|
+
|
15
|
+
# Base class for windows of a terminal
|
16
|
+
class Window
|
17
|
+
|
18
|
+
# should return an Array of Tab objects
|
19
|
+
def tabs
|
20
|
+
not_implemented
|
21
|
+
end
|
22
|
+
|
23
|
+
# Create a new Tab and return the reference to it
|
24
|
+
def new_tab
|
25
|
+
not_implemented
|
26
|
+
end
|
27
|
+
|
28
|
+
# is this window currently selected?
|
29
|
+
def selected?
|
30
|
+
not_implemented
|
31
|
+
end
|
32
|
+
|
33
|
+
# returns the selected tab in this window
|
34
|
+
# NOTE: it is better to overwrite Terminal#selected_tab if you need the speed boost
|
35
|
+
def selected_tab
|
36
|
+
tabs.find {|tab| tab.selected? }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
# Base class for tabs, this is the class that should implement an #execute method
|
42
|
+
class Tab
|
43
|
+
|
44
|
+
def selected?
|
45
|
+
not_implemented
|
46
|
+
end
|
47
|
+
|
48
|
+
def execute(cmd)
|
49
|
+
not_implemented
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
def new_window
|
55
|
+
not_implemented
|
56
|
+
end
|
57
|
+
|
58
|
+
def windows
|
59
|
+
not_implemented
|
60
|
+
end
|
61
|
+
|
62
|
+
# it is possible to overwrite this method if you feel the speed boost is necessary
|
63
|
+
def selected_window
|
64
|
+
windows.find {|w| w.selected?}
|
65
|
+
end
|
66
|
+
|
67
|
+
# it is possible to overwrite this method if you feel the speed boost is necessary
|
68
|
+
def selected_tab
|
69
|
+
selected_window.selected_tab
|
70
|
+
end
|
71
|
+
|
72
|
+
########################################
|
73
|
+
# Below here, no more abstract methods #
|
74
|
+
########################################
|
75
|
+
|
76
|
+
class Window
|
77
|
+
|
78
|
+
# executes @cmd in the selected tab
|
79
|
+
def execute(cmd)
|
80
|
+
selected_tab.execute(cmd)
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
def execute(cmd)
|
86
|
+
selected_tab.execute(cmd)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
# Interface to the outside world
|
92
|
+
# Terminal.new will check the current platform and return a AbstractTerminal subclass based on it
|
93
|
+
class Terminal
|
94
|
+
|
95
|
+
def self.instance
|
96
|
+
case RUBY_PLATFORM
|
97
|
+
when /darwin/
|
98
|
+
MacTerminal.instance
|
99
|
+
else
|
100
|
+
raise "no implementation found for your platform"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'appscript'
|
2
|
+
module WorkOn
|
3
|
+
|
4
|
+
# Native Mac OS X implementation
|
5
|
+
# uses rb-appscript
|
6
|
+
class MacTerminal < AbstractTerminal
|
7
|
+
|
8
|
+
include Appscript
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@appscript = app("Terminal.app")
|
12
|
+
@process = app("System Events").application_processes['Terminal']
|
13
|
+
end
|
14
|
+
|
15
|
+
def windows
|
16
|
+
@appscript.windows.get.map! do |window|
|
17
|
+
# it seems this returns far too many windows (some of them don't even exist)
|
18
|
+
# so we check a property which will error when something is wrong
|
19
|
+
begin
|
20
|
+
window.selected.get
|
21
|
+
MacWindow.new self, @process, window
|
22
|
+
rescue
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end.compact! # don't forget to remove the nil values
|
26
|
+
end
|
27
|
+
|
28
|
+
def new_window
|
29
|
+
prev = selected_window
|
30
|
+
@process.keystroke('n', :using => :command_down)
|
31
|
+
window = selected_window
|
32
|
+
prev.select!
|
33
|
+
window
|
34
|
+
end
|
35
|
+
|
36
|
+
class MacTab < Tab
|
37
|
+
def initialize(terminal, appscript)
|
38
|
+
@terminal = terminal
|
39
|
+
@appscript = appscript
|
40
|
+
end
|
41
|
+
|
42
|
+
def selected?
|
43
|
+
@appscript.selected.get
|
44
|
+
end
|
45
|
+
|
46
|
+
def execute(cmd)
|
47
|
+
Appscript.app("Terminal.app").do_script(cmd, :in => @appscript)
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
class MacWindow < Window
|
52
|
+
def initialize(terminal, process, appscript)
|
53
|
+
@terminal = terminal
|
54
|
+
@process = process
|
55
|
+
@appscript = appscript
|
56
|
+
end
|
57
|
+
|
58
|
+
def selected?
|
59
|
+
@appscript.frontmost.get
|
60
|
+
end
|
61
|
+
|
62
|
+
# Selects this window
|
63
|
+
#
|
64
|
+
# NOTE:
|
65
|
+
# This is not publicly exported since it is only used on the mac Where i
|
66
|
+
# need to send keystrokes to the process, so i need to be able to control
|
67
|
+
# the currently selected window
|
68
|
+
def select!
|
69
|
+
@appscript.frontmost.set(true)
|
70
|
+
end
|
71
|
+
|
72
|
+
def tabs
|
73
|
+
@appscript.tabs.get.map {|tab| MacTab.new @terminal, tab }
|
74
|
+
end
|
75
|
+
|
76
|
+
def new_tab
|
77
|
+
prev = @terminal.selected_window
|
78
|
+
self.select!
|
79
|
+
@process.keystroke('t', :using => :command_down)
|
80
|
+
prev.select!
|
81
|
+
self.tabs.last
|
82
|
+
end
|
83
|
+
|
84
|
+
def to_s
|
85
|
+
@appscript.id_.get
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'teststrap'
|
2
|
+
require 'yaml' # otherwise mock fails
|
3
|
+
|
4
|
+
context "Config" do
|
5
|
+
setup do
|
6
|
+
mock(YAML).load_file("test_name") do
|
7
|
+
{'test' => {'project-dir' => 'test-dir'}}
|
8
|
+
end
|
9
|
+
WorkOn::Config.new("test_name")
|
10
|
+
end
|
11
|
+
|
12
|
+
denies(:[], 'test').nil
|
13
|
+
asserts_topic.assigns(:file_name)
|
14
|
+
|
15
|
+
asserts(:[], 'blah').raises(ArgumentError)
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
context "Project" do
|
2
|
+
helper(:config_hash) do
|
3
|
+
{'project-dir' => '~/test',
|
4
|
+
'tab1' => [],
|
5
|
+
'tab2' => []
|
6
|
+
}
|
7
|
+
end
|
8
|
+
|
9
|
+
setup { WorkOn::Project.new 'test', config_hash }
|
10
|
+
|
11
|
+
hookup do
|
12
|
+
terminal = stub(WorkOn::Terminal.instance)
|
13
|
+
# new_tab should be called twice
|
14
|
+
terminal.selected_window.mock!.new_tab.twice.stub!.execute
|
15
|
+
topic.work!
|
16
|
+
end
|
17
|
+
|
18
|
+
asserts_topic.assigns(:project_dir, '~/test')
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'teststrap'
|
2
|
+
|
3
|
+
context "Terminal" do
|
4
|
+
setup { WorkOn::Terminal.instance }
|
5
|
+
|
6
|
+
asserts_topic.responds_to(:windows)
|
7
|
+
asserts_topic.responds_to(:new_window)
|
8
|
+
asserts_topic.responds_to(:execute)
|
9
|
+
asserts_topic.responds_to(:selected_window)
|
10
|
+
asserts_topic.responds_to(:selected_tab)
|
11
|
+
|
12
|
+
asserts("window count increases") do
|
13
|
+
topic.windows.size == topic.tap(&:new_window).windows.size - 1
|
14
|
+
end
|
15
|
+
|
16
|
+
context "Window" do
|
17
|
+
setup { topic.selected_window }
|
18
|
+
asserts_topic.responds_to(:new_tab)
|
19
|
+
asserts_topic.responds_to(:execute)
|
20
|
+
end
|
21
|
+
|
22
|
+
context "Tab" do
|
23
|
+
setup { topic.selected_tab }
|
24
|
+
asserts_topic.responds_to(:execute)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
context "Window" do
|
30
|
+
setup { WorkOn::Terminal.instance }
|
31
|
+
|
32
|
+
setup do
|
33
|
+
window1 = topic.new_window
|
34
|
+
window1.new_tab
|
35
|
+
window2 = topic.new_window
|
36
|
+
window2.new_tab
|
37
|
+
[window1, window2]
|
38
|
+
end
|
39
|
+
|
40
|
+
asserts("tabs of first window") { topic.first.tabs }.size(2)
|
41
|
+
asserts("tabs of second window") { topic.last.tabs }.size(2)
|
42
|
+
|
43
|
+
end
|
data/test/teststrap.rb
ADDED
data/work-on.gemspec
ADDED
@@ -0,0 +1,77 @@
|
|
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{work-on}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = [%q{Toon Willems}]
|
12
|
+
s.date = %q{2011-09-19}
|
13
|
+
s.description = %q{utility to manage projects and the terminal windows you open when you work on them.}
|
14
|
+
s.email = %q{willemstoon@gmail.com}
|
15
|
+
s.executables = [%q{work-on}]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".document",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"bin/work-on",
|
29
|
+
"lib/work-on.rb",
|
30
|
+
"lib/work_on/cli.rb",
|
31
|
+
"lib/work_on/config.rb",
|
32
|
+
"lib/work_on/project.rb",
|
33
|
+
"lib/work_on/terminal.rb",
|
34
|
+
"lib/work_on/terminals/mac_terminal.rb",
|
35
|
+
"test/core/config_test.rb",
|
36
|
+
"test/core/project_test.rb",
|
37
|
+
"test/core/terminal_test.rb",
|
38
|
+
"test/teststrap.rb",
|
39
|
+
"work-on.gemspec"
|
40
|
+
]
|
41
|
+
s.homepage = %q{http://github.com/nudded/work-on}
|
42
|
+
s.licenses = [%q{MIT}]
|
43
|
+
s.require_paths = [%q{lib}]
|
44
|
+
s.rubygems_version = %q{1.8.8}
|
45
|
+
s.summary = %q{Commandline Terminal Automation}
|
46
|
+
|
47
|
+
if s.respond_to? :specification_version then
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_runtime_dependency(%q<abstract>, [">= 0"])
|
52
|
+
s.add_runtime_dependency(%q<rb-appscript>, [">= 0"])
|
53
|
+
s.add_development_dependency(%q<riot>, [">= 0"])
|
54
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
55
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
56
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<abstract>, [">= 0"])
|
60
|
+
s.add_dependency(%q<rb-appscript>, [">= 0"])
|
61
|
+
s.add_dependency(%q<riot>, [">= 0"])
|
62
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
63
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
64
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
65
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
66
|
+
end
|
67
|
+
else
|
68
|
+
s.add_dependency(%q<abstract>, [">= 0"])
|
69
|
+
s.add_dependency(%q<rb-appscript>, [">= 0"])
|
70
|
+
s.add_dependency(%q<riot>, [">= 0"])
|
71
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
72
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
73
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
74
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
metadata
ADDED
@@ -0,0 +1,148 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: work-on
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Toon Willems
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-19 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: abstract
|
16
|
+
requirement: &70347223925260 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70347223925260
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rb-appscript
|
27
|
+
requirement: &70347223924600 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70347223924600
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: riot
|
38
|
+
requirement: &70347223923840 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70347223923840
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
49
|
+
requirement: &70347223923140 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70347223923140
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: jeweler
|
60
|
+
requirement: &70347223920540 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.6.4
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70347223920540
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rcov
|
71
|
+
requirement: &70347223919520 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70347223919520
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rdoc
|
82
|
+
requirement: &70347223918720 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70347223918720
|
91
|
+
description: utility to manage projects and the terminal windows you open when you
|
92
|
+
work on them.
|
93
|
+
email: willemstoon@gmail.com
|
94
|
+
executables:
|
95
|
+
- work-on
|
96
|
+
extensions: []
|
97
|
+
extra_rdoc_files:
|
98
|
+
- LICENSE.txt
|
99
|
+
- README.rdoc
|
100
|
+
files:
|
101
|
+
- .document
|
102
|
+
- Gemfile
|
103
|
+
- Gemfile.lock
|
104
|
+
- LICENSE.txt
|
105
|
+
- README.rdoc
|
106
|
+
- Rakefile
|
107
|
+
- VERSION
|
108
|
+
- bin/work-on
|
109
|
+
- lib/work-on.rb
|
110
|
+
- lib/work_on/cli.rb
|
111
|
+
- lib/work_on/config.rb
|
112
|
+
- lib/work_on/project.rb
|
113
|
+
- lib/work_on/terminal.rb
|
114
|
+
- lib/work_on/terminals/mac_terminal.rb
|
115
|
+
- test/core/config_test.rb
|
116
|
+
- test/core/project_test.rb
|
117
|
+
- test/core/terminal_test.rb
|
118
|
+
- test/teststrap.rb
|
119
|
+
- work-on.gemspec
|
120
|
+
homepage: http://github.com/nudded/work-on
|
121
|
+
licenses:
|
122
|
+
- MIT
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
hash: -1460491460751648421
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
requirements: []
|
143
|
+
rubyforge_project:
|
144
|
+
rubygems_version: 1.8.8
|
145
|
+
signing_key:
|
146
|
+
specification_version: 3
|
147
|
+
summary: Commandline Terminal Automation
|
148
|
+
test_files: []
|