scide 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +8 -2
- data/README.rdoc +2 -0
- data/VERSION +1 -1
- data/bin/scide +4 -0
- data/lib/scide/command.rb +69 -0
- data/lib/scide/commands/dblog.rb +14 -0
- data/lib/scide/commands/edit.rb +13 -0
- data/lib/scide/commands/run.rb +12 -0
- data/lib/scide/commands/show.rb +12 -0
- data/lib/scide/commands/tail.rb +13 -0
- data/lib/scide/config.rb +59 -0
- data/lib/scide/global.rb +14 -0
- data/lib/scide/opts.rb +23 -0
- data/lib/scide/overmind.rb +39 -0
- data/lib/scide/project.rb +31 -0
- data/lib/scide/screen.rb +55 -0
- data/lib/scide/window.rb +36 -0
- data/lib/scide.rb +27 -0
- data/scide.gemspec +22 -6
- data/spec/helper.rb +18 -0
- metadata +36 -20
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
active_support (3.0.0)
|
5
|
+
activesupport (= 3.0.0)
|
6
|
+
activesupport (3.0.0)
|
4
7
|
diff-lcs (1.1.3)
|
5
8
|
git (1.2.5)
|
6
9
|
jeweler (1.6.4)
|
7
10
|
bundler (~> 1.0)
|
8
11
|
git (>= 1.2.5)
|
9
12
|
rake
|
13
|
+
paint (0.8.3)
|
10
14
|
rake (0.9.2)
|
11
15
|
rcov (0.9.10)
|
12
16
|
rdoc (3.9.4)
|
@@ -19,7 +23,9 @@ GEM
|
|
19
23
|
diff-lcs (~> 1.1.2)
|
20
24
|
rspec-mocks (2.6.0)
|
21
25
|
shoulda (2.11.3)
|
22
|
-
upoj-rb (0.0.
|
26
|
+
upoj-rb (0.0.4)
|
27
|
+
active_support (>= 2)
|
28
|
+
paint
|
23
29
|
|
24
30
|
PLATFORMS
|
25
31
|
ruby
|
@@ -31,4 +37,4 @@ DEPENDENCIES
|
|
31
37
|
rdoc
|
32
38
|
rspec
|
33
39
|
shoulda
|
34
|
-
upoj-rb
|
40
|
+
upoj-rb (~> 0.0.4)
|
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/bin/scide
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
class Command
|
4
|
+
|
5
|
+
def self.resolve contents, properties = {}, options = {}
|
6
|
+
|
7
|
+
if contents.kind_of? Hash
|
8
|
+
options = options.merge contents[:options] if options.key? :options
|
9
|
+
properties = properties.merge contents[:properties] if options.key? :properties
|
10
|
+
end
|
11
|
+
|
12
|
+
klass, contents = if contents.kind_of? Hash
|
13
|
+
resolve_from_hash contents, properties, options
|
14
|
+
elsif contents.kind_of? String
|
15
|
+
resolve_from_string contents, properties, options
|
16
|
+
end
|
17
|
+
|
18
|
+
klass.new contents, properties, build_options(options, klass)
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize contents, properties = {}, options = nil
|
22
|
+
@text ||= contents
|
23
|
+
@properties, @options = properties, options
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_screen
|
27
|
+
raise 'Use a subclass'
|
28
|
+
end
|
29
|
+
|
30
|
+
def invalid_config err
|
31
|
+
Scide.fail :invalid_config, "ERROR: #{self.class.name} configuration is invalid.\n #{err}"
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def self.resolve_from_hash contents, properties = {}, options = {}
|
37
|
+
klass = Scide::Commands.const_get contents[:command].downcase.capitalize
|
38
|
+
[ klass, contents[:contents] ]
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.resolve_from_string contents, properties = {}, options = {}
|
42
|
+
klass_name, text = contents.split /\s+/, 2
|
43
|
+
klass = Scide::Commands.const_get klass_name.downcase.capitalize
|
44
|
+
[ klass, text ]
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.build_options options, klass
|
48
|
+
klass_name = klass.name.demodulize.downcase
|
49
|
+
current_options = options.try(:[], klass_name)
|
50
|
+
current_klass = klass
|
51
|
+
while current_klass != Scide::Command and current_options.blank?
|
52
|
+
current_klass = current_klass.superclass
|
53
|
+
current_options = options.try(:[], current_klass.name.demodulize.downcase)
|
54
|
+
end
|
55
|
+
current_options
|
56
|
+
end
|
57
|
+
|
58
|
+
def text_with_properties
|
59
|
+
@text.dup.tap do |s|
|
60
|
+
@properties.each_pair do |key, value|
|
61
|
+
s.gsub! /\%\{#{key}\}/, value
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
deps_dir = File.join File.dirname(__FILE__), 'commands'
|
69
|
+
%w( run tail dblog show edit ).each{ |dep| require File.join(deps_dir, dep) }
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
module Commands
|
4
|
+
|
5
|
+
class Dblog < Scide::Commands::Tail
|
6
|
+
|
7
|
+
def initialize contents, properties = {}, options = nil
|
8
|
+
@text = properties[:db_log]
|
9
|
+
invalid_config('DBLOG requires property db_log') unless @text.present?
|
10
|
+
super contents, properties, options
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
module Commands
|
4
|
+
|
5
|
+
class Edit < Scide::Commands::Run
|
6
|
+
|
7
|
+
def initialize contents, properties = {}, options = nil
|
8
|
+
super contents, properties, options
|
9
|
+
@text = [ '$EDITOR', options.to_s, @text.to_s ].select(&:present?).join(' ')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
module Commands
|
4
|
+
|
5
|
+
class Tail < Scide::Commands::Run
|
6
|
+
|
7
|
+
def initialize contents, properties = {}, options = nil
|
8
|
+
super contents, properties, options
|
9
|
+
@text = [ 'tail', options.to_s, '-f', @text.to_s ].select(&:present?).join(' ')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/scide/config.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
CONFIG_FILE = File.join File.expand_path('~'), '.scide', 'config.yml'
|
4
|
+
|
5
|
+
module Scide
|
6
|
+
|
7
|
+
class Config
|
8
|
+
attr_accessor :file
|
9
|
+
attr_reader :global, :projects, :screen
|
10
|
+
|
11
|
+
def initialize file = nil
|
12
|
+
@file = file.try(:to_s) || CONFIG_FILE
|
13
|
+
end
|
14
|
+
|
15
|
+
def load
|
16
|
+
|
17
|
+
Scide.fail :config_not_found, "ERROR: expected to find configuration at #{@file}" unless File.exists? @file
|
18
|
+
Scide.fail :config_not_readable, "ERROR: configuration #{@file} is not readable" unless File.readable? @file
|
19
|
+
|
20
|
+
begin
|
21
|
+
raw_config = File.open(@file, 'r').read
|
22
|
+
rescue StandardError => err
|
23
|
+
Scide.fail :unexpected, "ERROR: could not read configuration #{@file}"
|
24
|
+
end
|
25
|
+
|
26
|
+
begin
|
27
|
+
@config = YAML::load raw_config
|
28
|
+
rescue StandardError => err
|
29
|
+
Scide.fail :malformed_config, "ERROR: could not parse configuration #{@file}\n #{err}"
|
30
|
+
end
|
31
|
+
|
32
|
+
invalid_config 'configuration must be a hash' unless @config.kind_of? Hash
|
33
|
+
|
34
|
+
# laziness
|
35
|
+
@config = HashWithIndifferentAccess.new @config
|
36
|
+
|
37
|
+
begin
|
38
|
+
validate
|
39
|
+
rescue StandardError => err
|
40
|
+
invalid_config err
|
41
|
+
end
|
42
|
+
|
43
|
+
@global = Scide::Global.new @config[:global]
|
44
|
+
@screen = @config[:screen]
|
45
|
+
@projects = @config[:projects].inject(HashWithIndifferentAccess.new) do |memo,obj|
|
46
|
+
memo[obj[0].to_sym] = Scide::Project.new obj[1], obj[0], @global; memo
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def validate
|
51
|
+
raise 'global configuration must be a hash' if @config[:global] and !@config[:global].kind_of?(Hash)
|
52
|
+
raise 'configuration must contain a hash of projects' unless @config[:projects].kind_of? Hash
|
53
|
+
end
|
54
|
+
|
55
|
+
def invalid_config err
|
56
|
+
Scide.fail :invalid_config, "ERROR: configuration #{@file} is invalid.\n #{err}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/lib/scide/global.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
class Global
|
4
|
+
attr_accessor :path, :properties, :options
|
5
|
+
|
6
|
+
def initialize contents
|
7
|
+
@properties = contents[:properties]
|
8
|
+
@options = contents[:options]
|
9
|
+
|
10
|
+
@path = contents[:path].try(:to_s) || File.expand_path('~')
|
11
|
+
@path = File.join File.expand_path('~'), @path unless @path.match /^\//
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/scide/opts.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
class Opts < Upoj::Opts
|
4
|
+
|
5
|
+
def initialize *args
|
6
|
+
super *args
|
7
|
+
|
8
|
+
on '-c', '--config FILE'
|
9
|
+
on '--dry-run'
|
10
|
+
|
11
|
+
help!
|
12
|
+
usage!
|
13
|
+
end
|
14
|
+
|
15
|
+
def parse! args
|
16
|
+
begin
|
17
|
+
super args
|
18
|
+
rescue StandardError => err
|
19
|
+
Scide.fail :invalid_argument, err
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
class Overmind
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@cli = Scide::Opts.new
|
7
|
+
@config = Scide::Config.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def brood
|
11
|
+
@cli.parse! ARGV
|
12
|
+
@config.file = @cli.funnel[:config] if @cli.funnel.key? :config
|
13
|
+
@config.load
|
14
|
+
@initialized = true
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
def dominate
|
19
|
+
|
20
|
+
Scide.fail :not_initialized, 'ERROR: call #brood to initialize' unless @initialized
|
21
|
+
|
22
|
+
project_key = ARGV.shift
|
23
|
+
screen = Scide::Screen.new @config, @cli, project_key
|
24
|
+
screen.validate
|
25
|
+
|
26
|
+
if @cli.funnel[:'dry-run']
|
27
|
+
puts
|
28
|
+
puts Paint['COMMAND', :bold]
|
29
|
+
puts " #{screen.to_command}"
|
30
|
+
puts
|
31
|
+
puts Paint['SCREEN CONFIGURATION', :bold]
|
32
|
+
puts screen.to_s.gsub(/^/, ' ')
|
33
|
+
puts
|
34
|
+
else
|
35
|
+
screen.run
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
class Project
|
4
|
+
attr_accessor :properties, :options, :path
|
5
|
+
|
6
|
+
def initialize contents, key, global
|
7
|
+
@global = global
|
8
|
+
|
9
|
+
@path = contents[:path].try(:to_s) || key.to_s
|
10
|
+
@path = File.join global.path, @path unless @path.match /^\//
|
11
|
+
|
12
|
+
@properties = global.properties.merge(contents[:properties] || {})
|
13
|
+
@properties['name'] ||= key
|
14
|
+
|
15
|
+
@options = global.options.merge(contents[:options] || {})
|
16
|
+
|
17
|
+
@windows = []
|
18
|
+
contents[:windows].each do |w|
|
19
|
+
@windows << Scide::Window.new(w, self)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_screen
|
24
|
+
String.new.tap do |s|
|
25
|
+
@windows.each_with_index do |w,i|
|
26
|
+
s << w.to_screen(i)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/scide/screen.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
DEFAULT_HARDSTATUS = '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
|
2
|
+
|
3
|
+
module Scide
|
4
|
+
|
5
|
+
class Screen
|
6
|
+
|
7
|
+
def initialize config, cli, project_key
|
8
|
+
@config, @cli = config, cli
|
9
|
+
|
10
|
+
unless @config.projects.key? project_key
|
11
|
+
Scide.fail :unknown_project, "ERROR: there is no project '#{project_key}' in configuration #{@config.file}."
|
12
|
+
end
|
13
|
+
@project = config.projects[project_key]
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
file = Tempfile.new 'scide'
|
18
|
+
save file
|
19
|
+
system to_command(file.path)
|
20
|
+
file.unlink
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_command tmp_file = 'TEMPORARY_FILE'
|
24
|
+
"cd #{@project.path} && #{binary} #{options} -c #{tmp_file}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def validate
|
28
|
+
Scide.fail :screen_not_found, "ERROR: #{binary} not found" unless system("which #{binary}", { [ :out, :err ] => :close })
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
String.new.tap do |s|
|
33
|
+
s << "startup_message off\n"
|
34
|
+
s << "hardstatus on\n"
|
35
|
+
s << "hardstatus alwayslastline\n"
|
36
|
+
s << "hardstatus string '#{DEFAULT_HARDSTATUS}'\n\n"
|
37
|
+
s << @project.to_screen
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def binary
|
44
|
+
@config.screen.try(:[], :binary) || 'screen'
|
45
|
+
end
|
46
|
+
|
47
|
+
def options
|
48
|
+
@config.screen.try(:[], :options)
|
49
|
+
end
|
50
|
+
|
51
|
+
def save file
|
52
|
+
File.open(file.path, 'w'){ |f| f.write to_s }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/scide/window.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Scide
|
2
|
+
|
3
|
+
class Window
|
4
|
+
|
5
|
+
def initialize contents, project
|
6
|
+
@project = project
|
7
|
+
if contents.kind_of? Hash
|
8
|
+
init_from_hash contents
|
9
|
+
elsif contents.kind_of? String
|
10
|
+
init_from_string contents
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_screen index
|
15
|
+
String.new.tap do |s|
|
16
|
+
s << "screen -t #{@name} #{index}\n"
|
17
|
+
s << @command.to_screen if @command
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def init_from_hash contents
|
24
|
+
@name = contents.delete :name
|
25
|
+
@command = Command.resolve contents, @project.properties, @project.options if contents.key? :command
|
26
|
+
end
|
27
|
+
|
28
|
+
def init_from_string contents
|
29
|
+
content_parts = contents.split /\s+/, 2
|
30
|
+
@name = content_parts[0]
|
31
|
+
if content_parts.length == 2
|
32
|
+
@command = Command.resolve content_parts[1], @project.properties, @project.options
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/scide.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
require 'paint'
|
2
|
+
require 'upoj-rb'
|
3
|
+
|
4
|
+
dirname = File.dirname __FILE__
|
5
|
+
deps_dir = File.join dirname, 'scide'
|
6
|
+
VERSION_FILE = File.join dirname, '..', 'VERSION'
|
7
|
+
|
1
8
|
module Scide
|
9
|
+
VERSION = File.open(VERSION_FILE, 'r').read
|
10
|
+
EXIT = {
|
11
|
+
:unexpected => 1,
|
12
|
+
:invalid_argument => 2,
|
13
|
+
:not_initialized => 3,
|
14
|
+
:screen_not_found => 4,
|
15
|
+
:config_not_found => 13,
|
16
|
+
:config_not_readable => 14,
|
17
|
+
:malformed_config => 15,
|
18
|
+
:invalid_config => 16,
|
19
|
+
:unknown_project => 17
|
20
|
+
}
|
2
21
|
|
22
|
+
def self.fail condition, msg
|
23
|
+
puts
|
24
|
+
warn Paint[msg, :yellow]
|
25
|
+
puts
|
26
|
+
EXIT.key?(condition) ? exit(EXIT[condition]) : exit(1)
|
27
|
+
end
|
3
28
|
end
|
29
|
+
|
30
|
+
%w( command config global opts overmind project screen window ).each{ |dep| require File.join(deps_dir, dep) }
|
data/scide.gemspec
CHANGED
@@ -5,13 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "scide"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["AlphaHydrae"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-10-01"
|
13
13
|
s.description = "Utility to generate GNU screen configuration files."
|
14
14
|
s.email = "hydrae.alpha@gmail.com"
|
15
|
+
s.executables = ["scide"]
|
15
16
|
s.extra_rdoc_files = [
|
16
17
|
"LICENSE.txt",
|
17
18
|
"README.rdoc"
|
@@ -26,8 +27,23 @@ Gem::Specification.new do |s|
|
|
26
27
|
"README.rdoc",
|
27
28
|
"Rakefile",
|
28
29
|
"VERSION",
|
30
|
+
"bin/scide",
|
29
31
|
"lib/scide.rb",
|
30
|
-
"scide.
|
32
|
+
"lib/scide/command.rb",
|
33
|
+
"lib/scide/commands/dblog.rb",
|
34
|
+
"lib/scide/commands/edit.rb",
|
35
|
+
"lib/scide/commands/run.rb",
|
36
|
+
"lib/scide/commands/show.rb",
|
37
|
+
"lib/scide/commands/tail.rb",
|
38
|
+
"lib/scide/config.rb",
|
39
|
+
"lib/scide/global.rb",
|
40
|
+
"lib/scide/opts.rb",
|
41
|
+
"lib/scide/overmind.rb",
|
42
|
+
"lib/scide/project.rb",
|
43
|
+
"lib/scide/screen.rb",
|
44
|
+
"lib/scide/window.rb",
|
45
|
+
"scide.gemspec",
|
46
|
+
"spec/helper.rb"
|
31
47
|
]
|
32
48
|
s.homepage = "http://github.com/AlphaHydrae/scide"
|
33
49
|
s.licenses = ["MIT"]
|
@@ -39,7 +55,7 @@ Gem::Specification.new do |s|
|
|
39
55
|
s.specification_version = 3
|
40
56
|
|
41
57
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
|
-
s.add_runtime_dependency(%q<upoj-rb>, ["
|
58
|
+
s.add_runtime_dependency(%q<upoj-rb>, ["~> 0.0.4"])
|
43
59
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
44
60
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
45
61
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -47,7 +63,7 @@ Gem::Specification.new do |s|
|
|
47
63
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
48
64
|
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
49
65
|
else
|
50
|
-
s.add_dependency(%q<upoj-rb>, ["
|
66
|
+
s.add_dependency(%q<upoj-rb>, ["~> 0.0.4"])
|
51
67
|
s.add_dependency(%q<rspec>, [">= 0"])
|
52
68
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
53
69
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -56,7 +72,7 @@ Gem::Specification.new do |s|
|
|
56
72
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
57
73
|
end
|
58
74
|
else
|
59
|
-
s.add_dependency(%q<upoj-rb>, ["
|
75
|
+
s.add_dependency(%q<upoj-rb>, ["~> 0.0.4"])
|
60
76
|
s.add_dependency(%q<rspec>, [">= 0"])
|
61
77
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
62
78
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
|
4
|
+
begin
|
5
|
+
Bundler.setup(:default, :development)
|
6
|
+
rescue Bundler::BundlerError => e
|
7
|
+
$stderr.puts e.message
|
8
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
9
|
+
exit e.status_code
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'rspec'
|
13
|
+
require 'shoulda'
|
14
|
+
|
15
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
16
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
17
|
+
require 'scide'
|
18
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-10-01 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: upoj-rb
|
16
|
-
requirement: &
|
16
|
+
requirement: &2161468540 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 0.0.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2161468540
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2161467960 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2161467960
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: shoulda
|
38
|
-
requirement: &
|
38
|
+
requirement: &2161467360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2161467360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2161466720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2161466720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &2161466240 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.6.4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2161466240
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &2161464700 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2161464700
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rdoc
|
82
|
-
requirement: &
|
82
|
+
requirement: &2161464100 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,11 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2161464100
|
91
91
|
description: Utility to generate GNU screen configuration files.
|
92
92
|
email: hydrae.alpha@gmail.com
|
93
|
-
executables:
|
93
|
+
executables:
|
94
|
+
- scide
|
94
95
|
extensions: []
|
95
96
|
extra_rdoc_files:
|
96
97
|
- LICENSE.txt
|
@@ -105,8 +106,23 @@ files:
|
|
105
106
|
- README.rdoc
|
106
107
|
- Rakefile
|
107
108
|
- VERSION
|
109
|
+
- bin/scide
|
108
110
|
- lib/scide.rb
|
111
|
+
- lib/scide/command.rb
|
112
|
+
- lib/scide/commands/dblog.rb
|
113
|
+
- lib/scide/commands/edit.rb
|
114
|
+
- lib/scide/commands/run.rb
|
115
|
+
- lib/scide/commands/show.rb
|
116
|
+
- lib/scide/commands/tail.rb
|
117
|
+
- lib/scide/config.rb
|
118
|
+
- lib/scide/global.rb
|
119
|
+
- lib/scide/opts.rb
|
120
|
+
- lib/scide/overmind.rb
|
121
|
+
- lib/scide/project.rb
|
122
|
+
- lib/scide/screen.rb
|
123
|
+
- lib/scide/window.rb
|
109
124
|
- scide.gemspec
|
125
|
+
- spec/helper.rb
|
110
126
|
homepage: http://github.com/AlphaHydrae/scide
|
111
127
|
licenses:
|
112
128
|
- MIT
|
@@ -122,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
138
|
version: '0'
|
123
139
|
segments:
|
124
140
|
- 0
|
125
|
-
hash:
|
141
|
+
hash: -3848666212041060467
|
126
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
143
|
none: false
|
128
144
|
requirements:
|