screenomat 0.0.1
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/.gitignore +2 -0
- data/.project +12 -0
- data/.screenomat +4 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +33 -0
- data/README.md +85 -0
- data/autotest/discover.rb +1 -0
- data/bin/screenomat +33 -0
- data/lib/screenomat.rb +3 -0
- data/lib/screenomat/dsl/builder.rb +35 -0
- data/lib/screenomat/dsl/screen.rb +47 -0
- data/lib/screenomat/dsl/session.rb +54 -0
- data/lib/screenomat/version.rb +3 -0
- data/screenomat.gemspec +24 -0
- data/spec/lib/screenomat/dsl/builder_spec.rb +24 -0
- data/spec/lib/screenomat/dsl/screen_spec.rb +48 -0
- data/spec/lib/screenomat/dsl/session_spec.rb +66 -0
- data/spec/spec_helper.rb +3 -0
- metadata +144 -0
data/.gitignore
ADDED
data/.project
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<projectDescription>
|
3
|
+
<name>screenie</name>
|
4
|
+
<comment></comment>
|
5
|
+
<projects>
|
6
|
+
</projects>
|
7
|
+
<buildSpec>
|
8
|
+
</buildSpec>
|
9
|
+
<natures>
|
10
|
+
<nature>com.aptana.ruby.core.rubynature</nature>
|
11
|
+
</natures>
|
12
|
+
</projectDescription>
|
data/.screenomat
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
screenomat (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
ZenTest (4.4.1)
|
10
|
+
autotest (4.4.6)
|
11
|
+
ZenTest (>= 4.4.1)
|
12
|
+
diff-lcs (1.1.2)
|
13
|
+
mocha (0.9.10)
|
14
|
+
rake
|
15
|
+
rake (0.8.7)
|
16
|
+
rspec (2.2.0)
|
17
|
+
rspec-core (~> 2.2)
|
18
|
+
rspec-expectations (~> 2.2)
|
19
|
+
rspec-mocks (~> 2.2)
|
20
|
+
rspec-core (2.2.1)
|
21
|
+
rspec-expectations (2.2.0)
|
22
|
+
diff-lcs (~> 1.1.2)
|
23
|
+
rspec-mocks (2.2.0)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
ruby
|
27
|
+
|
28
|
+
DEPENDENCIES
|
29
|
+
autotest
|
30
|
+
bundler (>= 1.0.0)
|
31
|
+
mocha
|
32
|
+
rspec
|
33
|
+
screenomat!
|
data/README.md
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
# screenomat
|
2
|
+
|
3
|
+
You like screen, I like screen. Make getting those big multi-command line-running projects
|
4
|
+
even easier to get started up with `screenomat`.
|
5
|
+
|
6
|
+
## How?
|
7
|
+
|
8
|
+
Make a `.screenomat` file in your app and write:
|
9
|
+
|
10
|
+
<pre>
|
11
|
+
session do
|
12
|
+
screen "bundle exec autotest", :title => "autotest"
|
13
|
+
screen "rails c", :title => "dev console"
|
14
|
+
screen "rails s", :title => "dev server"
|
15
|
+
screen "less +F -fr log/test.log", :title => "test log tail"
|
16
|
+
screen! :title => "bash"
|
17
|
+
end
|
18
|
+
</pre>
|
19
|
+
|
20
|
+
Then run:
|
21
|
+
|
22
|
+
screenomat
|
23
|
+
|
24
|
+
_~~whoa~~_
|
25
|
+
|
26
|
+
### More?
|
27
|
+
|
28
|
+
<pre>
|
29
|
+
session :backend do
|
30
|
+
screen "bundle exec autotest", :title => "autotest"
|
31
|
+
screen "less +F -fr log/test.log", :title => "test log tail"
|
32
|
+
screen! :title => "bash"
|
33
|
+
end
|
34
|
+
|
35
|
+
session :frontend do
|
36
|
+
screen "bundle exec autotest", :title => "autotest"
|
37
|
+
screen "rails c", :title => "console"
|
38
|
+
screen "rails s", :title => "server"
|
39
|
+
screen "rake jasmine", :title => "jasmine"
|
40
|
+
screen! :title => "bash"
|
41
|
+
end
|
42
|
+
</pre>
|
43
|
+
|
44
|
+
Then run:
|
45
|
+
|
46
|
+
screenomat backend
|
47
|
+
|
48
|
+
or even:
|
49
|
+
|
50
|
+
screenomat frontend
|
51
|
+
|
52
|
+
## Defaults?
|
53
|
+
|
54
|
+
Like magic `screenomat` bits anywhere? `~/.screenomat` is what you want! Same syntax!
|
55
|
+
|
56
|
+
## Ruby? DRY?
|
57
|
+
|
58
|
+
Just like `Gemfile`, `*.gemspec`, and other modern Ruby things, `.screenomat` is Ruby code. Like
|
59
|
+
DRYing things? You can do it!
|
60
|
+
|
61
|
+
<pre>
|
62
|
+
class Screenomat::DSL::Session
|
63
|
+
def whoa(&block)
|
64
|
+
screen :title => "first"
|
65
|
+
instance_eval(&block)
|
66
|
+
screen :title => "last"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
session :first do
|
71
|
+
whoa do
|
72
|
+
screen "bundle exec autotest", :title => 'autotest'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
session :second do
|
77
|
+
whoa do
|
78
|
+
screen %{echo "cats"}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
</pre>
|
82
|
+
|
83
|
+
## What's left?
|
84
|
+
|
85
|
+
A _bunch_. I write what I need. Feel like adding fun things and/or tests? Fork, hack, pull request. You know the drill.
|
@@ -0,0 +1 @@
|
|
1
|
+
Autotest.add_discovery { "rspec2" }
|
data/bin/screenomat
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!which ruby
|
2
|
+
|
3
|
+
require 'getoptlong'
|
4
|
+
require 'screenomat/dsl/builder'
|
5
|
+
|
6
|
+
opt = GetoptLong.new(
|
7
|
+
[ '--input', '-i', GetoptLong::REQUIRED_ARGUMENT ]
|
8
|
+
)
|
9
|
+
|
10
|
+
files = %w{.screenomat ~/.screenomat}
|
11
|
+
|
12
|
+
opt.each do |key, value|
|
13
|
+
case key
|
14
|
+
when '--input'
|
15
|
+
files = [ value ]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
session_name = ARGV.shift
|
20
|
+
|
21
|
+
files.each do |path|
|
22
|
+
if File.exist?(target = File.expand_path(path))
|
23
|
+
sessions = Screenomat::DSL::Builder.new(File.read(target))
|
24
|
+
|
25
|
+
if !session_name || session_name.empty?
|
26
|
+
session = sessions.first
|
27
|
+
else
|
28
|
+
session = sessions[session_name.to_sym]
|
29
|
+
end
|
30
|
+
|
31
|
+
session.to_cmd.each { |cmd| system cmd }
|
32
|
+
end
|
33
|
+
end
|
data/lib/screenomat.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'screenomat/dsl/session'
|
2
|
+
|
3
|
+
module Screenomat
|
4
|
+
module DSL
|
5
|
+
class Builder
|
6
|
+
attr_reader :sessions
|
7
|
+
|
8
|
+
def initialize(code = '', &block)
|
9
|
+
@sessions = []
|
10
|
+
|
11
|
+
if !code.empty?
|
12
|
+
instance_eval(code)
|
13
|
+
else
|
14
|
+
instance_eval(&block)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def session(name = nil, &block)
|
19
|
+
name ||= "screenie-#{Time.now.to_i}"
|
20
|
+
|
21
|
+
session = Session.new(name.to_sym, &block)
|
22
|
+
|
23
|
+
@sessions << session
|
24
|
+
end
|
25
|
+
|
26
|
+
def first
|
27
|
+
@sessions.first
|
28
|
+
end
|
29
|
+
|
30
|
+
def [](key)
|
31
|
+
@sessions.find { |session| session.name == key }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Screenomat
|
2
|
+
module DSL
|
3
|
+
class Screen
|
4
|
+
attr_accessor :screen_id
|
5
|
+
|
6
|
+
def initialize(*options)
|
7
|
+
@options = options
|
8
|
+
@screen_id = nil
|
9
|
+
|
10
|
+
if @options.first.kind_of?(::Fixnum)
|
11
|
+
@screen_id = @options.shift
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def stuff
|
16
|
+
output = [ %{-p #{@screen_id || 0} stuff} ]
|
17
|
+
|
18
|
+
if @options.first.kind_of?(::String)
|
19
|
+
output << %{"#{@options.first}\n"}
|
20
|
+
end
|
21
|
+
|
22
|
+
output * ' '
|
23
|
+
end
|
24
|
+
|
25
|
+
def screen
|
26
|
+
title = nil
|
27
|
+
if @options.last.kind_of?(::Hash)
|
28
|
+
opts = @options.last
|
29
|
+
title = opts[:title]
|
30
|
+
end
|
31
|
+
|
32
|
+
if @screen_id == 0
|
33
|
+
output = []
|
34
|
+
output << %{-p 0 title "#{title}"} if title
|
35
|
+
else
|
36
|
+
output = %w{screen}
|
37
|
+
|
38
|
+
output << %{-t "#{title}"} if title
|
39
|
+
|
40
|
+
output << (@screen_id || 0)
|
41
|
+
end
|
42
|
+
|
43
|
+
output * ' '
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'screenomat/dsl/screen'
|
2
|
+
|
3
|
+
module Screenomat
|
4
|
+
module DSL
|
5
|
+
class Session
|
6
|
+
attr_accessor :name
|
7
|
+
|
8
|
+
def initialize(name = '', code = '', &block)
|
9
|
+
@name = name
|
10
|
+
@screens = []
|
11
|
+
@start_screen = 0
|
12
|
+
|
13
|
+
@start_screen_to_use = nil
|
14
|
+
|
15
|
+
if !code.empty?
|
16
|
+
instance_eval(code)
|
17
|
+
else
|
18
|
+
instance_eval(&block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def screen(*opts)
|
23
|
+
@screens << Screen.new(*opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
def screen!(*opts)
|
27
|
+
@start_screen_to_use = Screen.new(*opts)
|
28
|
+
@screens << @start_screen_to_use
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_cmd
|
32
|
+
output = [ %{screen -dmS "#{@name}"} ]
|
33
|
+
|
34
|
+
available_screen_ids = (0..9).to_a
|
35
|
+
|
36
|
+
output += @screens.collect { |screen|
|
37
|
+
if !screen.screen_id
|
38
|
+
screen.screen_id = available_screen_ids.shift
|
39
|
+
end
|
40
|
+
|
41
|
+
commands = []
|
42
|
+
commands << %{screen -X -S "#{@name}" #{screen.screen}} if !screen.screen.empty?
|
43
|
+
commands << %{screen -X -S "#{@name}" #{screen.stuff}}
|
44
|
+
}.flatten
|
45
|
+
|
46
|
+
@start_screen = @start_screen_to_use.screen_id if @start_screen_to_use
|
47
|
+
|
48
|
+
output << %{screen -x "#{@name}" -p #{@start_screen}}
|
49
|
+
|
50
|
+
output
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/screenomat.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/screenomat/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "screenomat"
|
6
|
+
s.version = Screenomat::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = []
|
9
|
+
s.email = []
|
10
|
+
s.homepage = "http://johnbintz.com/"
|
11
|
+
s.summary = "DSL for making GNU screen obey your will"
|
12
|
+
s.description = "DSL for making GNU screen obey your will"
|
13
|
+
|
14
|
+
s.required_rubygems_version = ">= 1.3.6"
|
15
|
+
|
16
|
+
s.add_development_dependency "bundler", ">= 1.0.0"
|
17
|
+
s.add_development_dependency "rspec"
|
18
|
+
s.add_development_dependency "mocha"
|
19
|
+
s.add_development_dependency "autotest"
|
20
|
+
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
23
|
+
s.require_path = 'lib'
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'screenomat/dsl/builder'
|
3
|
+
|
4
|
+
describe Screenomat::DSL::Builder do
|
5
|
+
describe '#sessions' do
|
6
|
+
context 'from block' do
|
7
|
+
subject { Screenomat::DSL::Builder.new { session("cats") { } }}
|
8
|
+
|
9
|
+
specify { subject[:cats].should_not be_nil }
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'from code' do
|
13
|
+
subject { Screenomat::DSL::Builder.new(%{session("cats") { } })}
|
14
|
+
|
15
|
+
specify { subject[:cats].should_not be_nil }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#first' do
|
20
|
+
subject { Screenomat::DSL::Builder.new { session do; end }}
|
21
|
+
|
22
|
+
its(:first) { should be_a_kind_of(Screenomat::DSL::Session) }
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'screenomat/dsl/screen'
|
3
|
+
|
4
|
+
describe Screenomat::DSL::Screen do
|
5
|
+
describe '#to_cmd' do
|
6
|
+
let(:screen) { Screenomat::DSL::Screen.new(*params) }
|
7
|
+
|
8
|
+
subject { screen }
|
9
|
+
|
10
|
+
context 'blank' do
|
11
|
+
let(:params) { [] }
|
12
|
+
|
13
|
+
its(:screen) { should == 'screen 0' }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with command' do
|
17
|
+
let(:params) { ["command"] }
|
18
|
+
|
19
|
+
its(:screen) { should == 'screen 0' }
|
20
|
+
its(:stuff) { should == %{-p 0 stuff "command
|
21
|
+
"} }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with number id' do
|
25
|
+
let(:params) { [ 1 ] }
|
26
|
+
|
27
|
+
its(:screen) { should == "screen 1" }
|
28
|
+
|
29
|
+
specify { screen.screen_id.should == 1 }
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'with number id and command' do
|
33
|
+
let(:params) { [ 1, "command" ] }
|
34
|
+
|
35
|
+
its(:screen) { should == "screen 1" }
|
36
|
+
its(:stuff) { should == %{-p 1 stuff "command
|
37
|
+
"} }
|
38
|
+
specify { screen.screen_id.should == 1 }
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'with title' do
|
42
|
+
let(:params) { [ { :title => 'My title' } ] }
|
43
|
+
|
44
|
+
its(:screen) { should == %{screen -t "My title" 0} }
|
45
|
+
specify { screen.screen_id.should == nil }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'screenomat/dsl/session'
|
3
|
+
|
4
|
+
describe Screenomat::DSL::Session do
|
5
|
+
describe '#to_cmd' do
|
6
|
+
context 'one screen' do
|
7
|
+
subject {
|
8
|
+
Screenomat::DSL::Session.new("my-session") { screen "test" }.to_cmd
|
9
|
+
}
|
10
|
+
|
11
|
+
it { should == [
|
12
|
+
%{screen -dmS "my-session"},
|
13
|
+
%{screen -X -S "my-session" -p 0 stuff "test
|
14
|
+
"},
|
15
|
+
%{screen -x "my-session" -p 0}
|
16
|
+
] }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'two screens' do
|
20
|
+
subject {
|
21
|
+
Screenomat::DSL::Session.new("my-session") { screen "test"; screen "test2" }.to_cmd
|
22
|
+
}
|
23
|
+
|
24
|
+
it { should == [
|
25
|
+
%{screen -dmS "my-session"},
|
26
|
+
%{screen -X -S "my-session" -p 0 stuff "test
|
27
|
+
"},
|
28
|
+
%{screen -X -S "my-session" screen 1},
|
29
|
+
%{screen -X -S "my-session" -p 1 stuff "test2
|
30
|
+
"},
|
31
|
+
%{screen -x "my-session" -p 0}
|
32
|
+
] }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'from string' do
|
37
|
+
subject {
|
38
|
+
Screenomat::DSL::Session.new("my-session", <<-EOR).to_cmd
|
39
|
+
screen "test"
|
40
|
+
EOR
|
41
|
+
}
|
42
|
+
|
43
|
+
it { should == [
|
44
|
+
%{screen -dmS "my-session"},
|
45
|
+
%{screen -X -S "my-session" -p 0 stuff "test
|
46
|
+
"},
|
47
|
+
%{screen -x "my-session" -p 0}
|
48
|
+
] }
|
49
|
+
end
|
50
|
+
|
51
|
+
describe 'screen!' do
|
52
|
+
subject {
|
53
|
+
Screenomat::DSL::Session.new("my-session") { screen "test"; screen! "test2" }.to_cmd
|
54
|
+
}
|
55
|
+
|
56
|
+
it { should == [
|
57
|
+
%{screen -dmS "my-session"},
|
58
|
+
%{screen -X -S "my-session" -p 0 stuff "test
|
59
|
+
"},
|
60
|
+
%{screen -X -S "my-session" screen 1},
|
61
|
+
%{screen -X -S "my-session" -p 1 stuff "test2
|
62
|
+
"},
|
63
|
+
%{screen -x "my-session" -p 1}
|
64
|
+
] }
|
65
|
+
end
|
66
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: screenomat
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors: []
|
13
|
+
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-12-09 00:00:00 -05:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: bundler
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 23
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 0
|
33
|
+
- 0
|
34
|
+
version: 1.0.0
|
35
|
+
type: :development
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: mocha
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: autotest
|
67
|
+
prerelease: false
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
type: :development
|
78
|
+
version_requirements: *id004
|
79
|
+
description: DSL for making GNU screen obey your will
|
80
|
+
email: []
|
81
|
+
|
82
|
+
executables:
|
83
|
+
- screenomat
|
84
|
+
extensions: []
|
85
|
+
|
86
|
+
extra_rdoc_files: []
|
87
|
+
|
88
|
+
files:
|
89
|
+
- .gitignore
|
90
|
+
- .project
|
91
|
+
- .screenomat
|
92
|
+
- Gemfile
|
93
|
+
- Gemfile.lock
|
94
|
+
- README.md
|
95
|
+
- autotest/discover.rb
|
96
|
+
- bin/screenomat
|
97
|
+
- lib/screenomat.rb
|
98
|
+
- lib/screenomat/dsl/builder.rb
|
99
|
+
- lib/screenomat/dsl/screen.rb
|
100
|
+
- lib/screenomat/dsl/session.rb
|
101
|
+
- lib/screenomat/version.rb
|
102
|
+
- screenomat.gemspec
|
103
|
+
- spec/lib/screenomat/dsl/builder_spec.rb
|
104
|
+
- spec/lib/screenomat/dsl/screen_spec.rb
|
105
|
+
- spec/lib/screenomat/dsl/session_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
107
|
+
has_rdoc: true
|
108
|
+
homepage: http://johnbintz.com/
|
109
|
+
licenses: []
|
110
|
+
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
hash: 3
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
version: "0"
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
hash: 23
|
131
|
+
segments:
|
132
|
+
- 1
|
133
|
+
- 3
|
134
|
+
- 6
|
135
|
+
version: 1.3.6
|
136
|
+
requirements: []
|
137
|
+
|
138
|
+
rubyforge_project:
|
139
|
+
rubygems_version: 1.3.7
|
140
|
+
signing_key:
|
141
|
+
specification_version: 3
|
142
|
+
summary: DSL for making GNU screen obey your will
|
143
|
+
test_files: []
|
144
|
+
|