styoe 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +18 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +44 -0
- data/Rakefile +13 -0
- data/bin/styoe +12 -0
- data/features/applications_closing.feature +19 -0
- data/features/applications_launch.feature +33 -0
- data/features/support/env.rb +1 -0
- data/lib/styoe/configuration_resolver.rb +48 -0
- data/lib/styoe/process_launcher.rb +11 -0
- data/lib/styoe/version.rb +3 -0
- data/lib/styoe.rb +36 -0
- data/script/bootstrap +4 -0
- data/spec/.gitkeep +0 -0
- data/spec/configuration_resolver_spec.rb +84 -0
- data/spec/fire_spec.rb +44 -0
- data/styoe.gemspec +26 -0
- metadata +141 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2MwNWU2NDFiOTg0ZjZiZDQyMmMyZGQ1YjA0MmIyODFmNDc0YmZmNg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NzIwZWY4ZTNhMzMwMWM0ZGQ5OTlhZGVlYWJjZjQ4ZTgwODExODc4ZA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YWY0MDE5OTdjZWYwNGU0OTM5ZWI0NGU1OWFiMThlMjI1YjUzYjMxMDc4NWFi
|
10
|
+
NGUwNzk4YzhkMzExZTQzYzJiODU0ZDdhNmYxODk4YjQ5MGEzMGEyYzc0N2Nj
|
11
|
+
MDIzMWMyZWIxYWIyNzBjOWQzNzY3Yjk1YzhlMWQ4ODVkZmVmMGY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ODdmNDIzNjk5NmFiNTI2OWNhNzZkYTNmYTRhOWI2MGZlYjlhMzRmZGFmYzNj
|
14
|
+
ZDgyZDU0YjRlM2RkYTE0YzQwNmY3ZTgxNTJhMGVhOTk4MTMyYzQyZTIwYzYx
|
15
|
+
Mjk4OTEwOTYwZWYxMDg0N2JmMTE2NmUzODgwYTI1YmIxMTkwYjA=
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1
|
data/.travis.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.1
|
4
|
+
env:
|
5
|
+
- TEST_SUITE=features
|
6
|
+
- TEST_SUITE=spec
|
7
|
+
script: bundle exec rake $TEST_SUITE
|
8
|
+
notifications:
|
9
|
+
email: false
|
10
|
+
deploy:
|
11
|
+
provider: rubygems
|
12
|
+
api_key:
|
13
|
+
secure: U+yl3U672sFSWS8TrF6u3Neewojr1ExV9KXVJSeZrnIyh16Dx0dYrPzxYG5rePKyAuJ5gq61zK2uYFH80Sr9tlj4qRiKDLoRC6mHLvcx+KVnTcknfM476UYMUOgtaUT9sbEoCx1ERKswZA6PsoCJrN8os4Qu8+eTZ7OmYnSS0Ng=
|
14
|
+
gem: styoe
|
15
|
+
on:
|
16
|
+
tags: true
|
17
|
+
repo: as-cii/styoe
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Antonio Scandurra
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# styoe (Start Your Engines!)
|
2
|
+
|
3
|
+
Start Your Engines™.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
```bash
|
8
|
+
$ gem install styoe
|
9
|
+
```
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
Create a `.engines` file on your home directory, and write a yaml-formatted file
|
14
|
+
with the applications you would like to start:
|
15
|
+
|
16
|
+
```yaml
|
17
|
+
skype: "/Applications/Skype.app/Contents/MacOS/Skype"
|
18
|
+
sublime-text: "/Applications/Sublime Text.app/Contents/MacOS/Sublime Text"
|
19
|
+
flint: "/Applications/Flint.app/Contents/MacOS/Flint"
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
```bash
|
25
|
+
styoe
|
26
|
+
```
|
27
|
+
|
28
|
+
Your applications will be up and running in seconds. When you are done with them
|
29
|
+
just execute:
|
30
|
+
|
31
|
+
```bash
|
32
|
+
styoe --stop
|
33
|
+
```
|
34
|
+
|
35
|
+
And they will disappear. For other great functionalities, please check
|
36
|
+
[features](features).
|
37
|
+
|
38
|
+
## Contributing
|
39
|
+
|
40
|
+
1. Fork it
|
41
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
43
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
44
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'cucumber'
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
|
6
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
7
|
+
t.cucumber_opts = "features --format pretty"
|
8
|
+
end
|
9
|
+
|
10
|
+
RSpec::Core::RakeTask.new(:spec)
|
11
|
+
|
12
|
+
desc "Test"
|
13
|
+
task default: :spec
|
data/bin/styoe
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Feature: Applications closing
|
2
|
+
|
3
|
+
Scenario: User closes open applications
|
4
|
+
Given a file named ".engines" with:
|
5
|
+
"""
|
6
|
+
test: 'ruby process.rb'
|
7
|
+
"""
|
8
|
+
And a file named "process.rb" with:
|
9
|
+
"""
|
10
|
+
trap("INT") do
|
11
|
+
File.write("closed", "")
|
12
|
+
exit
|
13
|
+
end
|
14
|
+
|
15
|
+
gets
|
16
|
+
"""
|
17
|
+
When I successfully run `styoe`
|
18
|
+
And I successfully run `styoe --stop`
|
19
|
+
Then a file named "closed" should exist
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: Application launching
|
2
|
+
|
3
|
+
Scenario: User writes configuration on current directory
|
4
|
+
Given a file named ".engines" with:
|
5
|
+
"""
|
6
|
+
app1: 'touch x'
|
7
|
+
app2: 'touch y'
|
8
|
+
"""
|
9
|
+
When I run `styoe`
|
10
|
+
Then the exit status should be 0
|
11
|
+
And a file named "x" should exist
|
12
|
+
And a file named "y" should exist
|
13
|
+
|
14
|
+
Scenario: User writes configuration on parent directory
|
15
|
+
Given a file named ".engines" with:
|
16
|
+
"""
|
17
|
+
app1: 'touch x'
|
18
|
+
app2: 'touch y'
|
19
|
+
"""
|
20
|
+
And a directory named "sub/directory"
|
21
|
+
When I cd to "sub/directory"
|
22
|
+
And I run `styoe`
|
23
|
+
Then the exit status should be 0
|
24
|
+
And a file named "x" should exist
|
25
|
+
And a file named "y" should exist
|
26
|
+
|
27
|
+
Scenario: User has no configuration
|
28
|
+
When I run `styoe`
|
29
|
+
Then the exit status should be 1
|
30
|
+
And the output should contain:
|
31
|
+
"""
|
32
|
+
No configuration found. Are you sure you have created a .engines file?
|
33
|
+
"""
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'aruba/cucumber'
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Styoe
|
4
|
+
DOT_FILE = '.engines'
|
5
|
+
PID_FILE = '.engines.pids'
|
6
|
+
|
7
|
+
class ConfigurationNotFound < StandardError; end
|
8
|
+
|
9
|
+
class ConfigurationResolver
|
10
|
+
def initialize(options = {})
|
11
|
+
@stop_at = options[:stop_at] || '/'
|
12
|
+
end
|
13
|
+
|
14
|
+
def active_processes(path = PID_FILE)
|
15
|
+
raise ConfigurationNotFound if stop?(path)
|
16
|
+
return active_processes("../#{path}") unless File.exist?(path)
|
17
|
+
|
18
|
+
parse_values(path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def processes(path = DOT_FILE)
|
22
|
+
raise ConfigurationNotFound if stop?(path)
|
23
|
+
return processes("../#{path}") unless File.exist?(path)
|
24
|
+
|
25
|
+
parse_values(path)
|
26
|
+
end
|
27
|
+
|
28
|
+
def dump_pids(pids, path = DOT_FILE)
|
29
|
+
raise ConfigurationNotFound if stop?(path)
|
30
|
+
return dump_pids(pids, "../#{path}") unless File.exist?(path)
|
31
|
+
|
32
|
+
file = File.open(path.gsub(DOT_FILE, PID_FILE), "w")
|
33
|
+
file.write(YAML.dump pids)
|
34
|
+
file.close
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def parse_values(path)
|
40
|
+
contents = File.read(path)
|
41
|
+
YAML.load(contents).values
|
42
|
+
end
|
43
|
+
|
44
|
+
def stop?(path)
|
45
|
+
File.dirname(File.absolute_path path) == @stop_at
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/styoe.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'styoe/version'
|
2
|
+
require 'styoe/configuration_resolver'
|
3
|
+
require 'styoe/process_launcher'
|
4
|
+
|
5
|
+
module Styoe
|
6
|
+
class Launcher
|
7
|
+
def initialize(config_resolver = nil, process_launcher = nil)
|
8
|
+
@config_resolver = config_resolver || ConfigurationResolver.new
|
9
|
+
@process_launcher = process_launcher || ProcessLauncher.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def start
|
13
|
+
begin
|
14
|
+
processes = Hash[*run_processes]
|
15
|
+
@config_resolver.dump_pids(processes)
|
16
|
+
rescue ConfigurationNotFound
|
17
|
+
$stderr.puts 'No configuration found. Are you sure you have created a .engines file?'
|
18
|
+
exit(1)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def stop
|
23
|
+
@config_resolver.active_processes.each do |pid|
|
24
|
+
@process_launcher.stop(pid)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def run_processes
|
31
|
+
@config_resolver.processes.map do |process|
|
32
|
+
[process, @process_launcher.launch(process)]
|
33
|
+
end.flatten
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/script/bootstrap
ADDED
data/spec/.gitkeep
ADDED
File without changes
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'styoe/configuration_resolver'
|
2
|
+
|
3
|
+
describe Styoe::ConfigurationResolver do
|
4
|
+
|
5
|
+
let(:pids) { { application1: 1, application2: 2 } }
|
6
|
+
let(:pid_file) { instance_double(File) }
|
7
|
+
|
8
|
+
it 'resolves and parses a configuration file' do
|
9
|
+
allow_file_to_exist_and_return("#{Styoe::DOT_FILE}", sample_configuration)
|
10
|
+
|
11
|
+
expect(subject.processes).to eq(['hello', 'world'])
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'searches configuration recursively in parent directories' do
|
15
|
+
allow_file_to_exist_and_return("../../#{Styoe::DOT_FILE}", sample_configuration)
|
16
|
+
|
17
|
+
expect(subject.processes).to eq(['hello', 'world'])
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'stops searching configuration when root is reached' do
|
21
|
+
subject = described_class.new(stop_at: '/')
|
22
|
+
allow(File).to receive(:dirname).and_return('/')
|
23
|
+
|
24
|
+
expect { subject.processes }.to raise_error(Styoe::ConfigurationNotFound)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'searches active processes' do
|
28
|
+
allow_file_to_exist_and_return("#{Styoe::PID_FILE}", sample_pids)
|
29
|
+
|
30
|
+
expect(subject.active_processes).to eq([ 1, 2 ])
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'searches active processes recursively' do
|
34
|
+
allow_file_to_exist_and_return("../../#{Styoe::PID_FILE}", sample_pids)
|
35
|
+
|
36
|
+
expect(subject.active_processes).to eq([ 1, 2 ])
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'stops searching active processes when root is reached' do
|
40
|
+
subject = described_class.new(stop_at: '/')
|
41
|
+
allow(File).to receive(:dirname).and_return('/')
|
42
|
+
|
43
|
+
expect { subject.active_processes }.to raise_error(Styoe::ConfigurationNotFound)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "dumps active processes on the same path of #{Styoe::DOT_FILE}" do
|
47
|
+
pid_file = double
|
48
|
+
pids = { application1: 1, application2: 2 }
|
49
|
+
allow(File).to receive(:exist?).and_return(false, false, true)
|
50
|
+
allow(File).to receive(:open).with("../../#{Styoe::PID_FILE}", "w").and_return(pid_file)
|
51
|
+
allow(YAML).to receive(:dump).with(pids).and_return(sample_pids)
|
52
|
+
allow(pid_file).to receive(:write)
|
53
|
+
allow(pid_file).to receive(:close)
|
54
|
+
|
55
|
+
subject.dump_pids(pids)
|
56
|
+
|
57
|
+
expect(pid_file).to have_received(:write).with(sample_pids)
|
58
|
+
expect(pid_file).to have_received(:close)
|
59
|
+
end
|
60
|
+
|
61
|
+
def allow_file_to_exist_and_return(path, read_file)
|
62
|
+
allow_file_to_exist(path)
|
63
|
+
allow(File).to receive(:read).with(path).and_return(read_file)
|
64
|
+
end
|
65
|
+
|
66
|
+
def allow_file_to_exist(path)
|
67
|
+
allow(File).to receive(:exist?).and_return(false)
|
68
|
+
allow(File).to receive(:exist?).with(path).and_return(true)
|
69
|
+
end
|
70
|
+
|
71
|
+
def sample_configuration
|
72
|
+
<<-config
|
73
|
+
application1: hello
|
74
|
+
application2: world
|
75
|
+
config
|
76
|
+
end
|
77
|
+
|
78
|
+
def sample_pids
|
79
|
+
<<-pids
|
80
|
+
application1: 1
|
81
|
+
application2: 2
|
82
|
+
pids
|
83
|
+
end
|
84
|
+
end
|
data/spec/fire_spec.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'styoe'
|
2
|
+
|
3
|
+
describe Styoe::Launcher do
|
4
|
+
let(:configuration_resolver) { instance_double(Styoe::ConfigurationResolver) }
|
5
|
+
let(:process_launcher) { instance_double(Styoe::ProcessLauncher) }
|
6
|
+
let(:processes) { [ "app1", "app2", "app3" ] }
|
7
|
+
let(:pids) { [ 1, 2, 3 ] }
|
8
|
+
let(:running_processes) { Hash[*processes.zip(pids).flatten] }
|
9
|
+
|
10
|
+
subject { Styoe::Launcher.new(configuration_resolver, process_launcher) }
|
11
|
+
|
12
|
+
it "launches configuration processes and remembers open pids" do
|
13
|
+
allow(configuration_resolver).to receive(:processes).and_return(processes)
|
14
|
+
allow(configuration_resolver).to receive(:dump_pids)
|
15
|
+
stub_processes_launch
|
16
|
+
|
17
|
+
subject.start
|
18
|
+
|
19
|
+
expect(configuration_resolver).to have_received(:dump_pids).with(running_processes)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'stops active processes' do
|
23
|
+
allow(configuration_resolver).to receive(:active_processes).and_return(pids)
|
24
|
+
allow(process_launcher).to receive(:stop)
|
25
|
+
|
26
|
+
subject.stop
|
27
|
+
|
28
|
+
expect_processes_stopped
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def stub_processes_launch
|
34
|
+
processes.zip(pids).each do |process, pid|
|
35
|
+
allow(process_launcher).to receive(:launch).with(process).and_return(pid)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def expect_processes_stopped
|
40
|
+
pids.each do |pid|
|
41
|
+
expect(process_launcher).to have_received(:stop).with(pid)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/styoe.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'styoe/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "styoe"
|
8
|
+
spec.version = Styoe::VERSION
|
9
|
+
spec.authors = ["Antonio Scandurra"]
|
10
|
+
spec.email = ["as-cii@outlook.com"]
|
11
|
+
spec.description = %q{Start your engines.}
|
12
|
+
spec.summary = spec.description
|
13
|
+
spec.homepage = "https://github.com/as-cii/styoe"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.0.0.beta2"
|
24
|
+
spec.add_development_dependency "cucumber"
|
25
|
+
spec.add_development_dependency "aruba"
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: styoe
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Antonio Scandurra
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.0.0.beta2
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.0.0.beta2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cucumber
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aruba
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Start your engines.
|
84
|
+
email:
|
85
|
+
- as-cii@outlook.com
|
86
|
+
executables:
|
87
|
+
- styoe
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- .gitignore
|
92
|
+
- .ruby-version
|
93
|
+
- .travis.yml
|
94
|
+
- Gemfile
|
95
|
+
- LICENSE.txt
|
96
|
+
- README.md
|
97
|
+
- Rakefile
|
98
|
+
- bin/styoe
|
99
|
+
- features/applications_closing.feature
|
100
|
+
- features/applications_launch.feature
|
101
|
+
- features/support/env.rb
|
102
|
+
- lib/styoe.rb
|
103
|
+
- lib/styoe/configuration_resolver.rb
|
104
|
+
- lib/styoe/process_launcher.rb
|
105
|
+
- lib/styoe/version.rb
|
106
|
+
- script/bootstrap
|
107
|
+
- spec/.gitkeep
|
108
|
+
- spec/configuration_resolver_spec.rb
|
109
|
+
- spec/fire_spec.rb
|
110
|
+
- styoe.gemspec
|
111
|
+
homepage: https://github.com/as-cii/styoe
|
112
|
+
licenses:
|
113
|
+
- MIT
|
114
|
+
metadata: {}
|
115
|
+
post_install_message:
|
116
|
+
rdoc_options: []
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubyforge_project:
|
131
|
+
rubygems_version: 2.2.2
|
132
|
+
signing_key:
|
133
|
+
specification_version: 4
|
134
|
+
summary: Start your engines.
|
135
|
+
test_files:
|
136
|
+
- features/applications_closing.feature
|
137
|
+
- features/applications_launch.feature
|
138
|
+
- features/support/env.rb
|
139
|
+
- spec/.gitkeep
|
140
|
+
- spec/configuration_resolver_spec.rb
|
141
|
+
- spec/fire_spec.rb
|