scide 0.0.0 → 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/Gemfile CHANGED
@@ -3,7 +3,7 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem 'upoj-rb'
6
+ gem 'upoj-rb', '~> 0.0.4'
7
7
 
8
8
  # Add dependencies to develop your gem here.
9
9
  # Include everything needed to run rake, tests, features, etc.
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.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
@@ -2,6 +2,8 @@
2
2
 
3
3
  GNU Screen IDE.
4
4
 
5
+ Documentation will be coming soon.
6
+
5
7
  == Contributing to scide
6
8
 
7
9
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.0.1
data/bin/scide ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'scide')
3
+
4
+ Scide::Overmind.new.brood.dominate
@@ -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,12 @@
1
+ module Scide
2
+
3
+ module Commands
4
+
5
+ class Run < Scide::Command
6
+
7
+ def to_screen
8
+ %|stuff "#{text_with_properties}\\012"\n|
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Scide
2
+
3
+ module Commands
4
+
5
+ class Show < Scide::Command
6
+
7
+ def to_screen
8
+ %|stuff "#{text_with_properties}"\n|
9
+ end
10
+ end
11
+ end
12
+ 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
@@ -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
@@ -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
@@ -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
@@ -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.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-09-30"
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.gemspec"
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>, [">= 0"])
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>, [">= 0"])
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>, [">= 0"])
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.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-09-30 00:00:00.000000000Z
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: &2158663680 !ruby/object:Gem::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: '0'
21
+ version: 0.0.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2158663680
24
+ version_requirements: *2161468540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2158663180 !ruby/object:Gem::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: *2158663180
35
+ version_requirements: *2161467960
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: shoulda
38
- requirement: &2158639240 !ruby/object:Gem::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: *2158639240
46
+ version_requirements: *2161467360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &2158638640 !ruby/object:Gem::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: *2158638640
57
+ version_requirements: *2161466720
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &2158638040 !ruby/object:Gem::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: *2158638040
68
+ version_requirements: *2161466240
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &2158637400 !ruby/object:Gem::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: *2158637400
79
+ version_requirements: *2161464700
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rdoc
82
- requirement: &2158636920 !ruby/object:Gem::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: *2158636920
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: 2979116417569013168
141
+ hash: -3848666212041060467
126
142
  required_rubygems_version: !ruby/object:Gem::Requirement
127
143
  none: false
128
144
  requirements: