apollon 0.0.4 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gemspec +8 -1
- data/.gitignore +5 -0
- data/.rspec +4 -0
- data/.travis.yml +27 -0
- data/README.md +12 -8
- data/Rakefile +51 -7
- data/Vagrantfile +1 -1
- data/bin/apollon +1 -1
- data/data/Example.Apollofile +16 -0
- data/{packs → data/packer}/README.md +0 -0
- data/{packs → data/packer}/core/README.md +0 -0
- data/{packs → data/packer}/core/pack-digitalocean.sh +1 -1
- data/{packs → data/packer}/core/pack-vagrant.sh +0 -0
- data/{packs → data/packer}/core/packer.json +0 -0
- data/{packs → data/packer}/core/provision.sh +1 -1
- data/{packs → data/packer}/core/scripts/provision-digitalocean.sh +0 -0
- data/{packs → data/packer}/examples/aws/pack.sh +0 -0
- data/{packs → data/packer}/examples/aws/packer.json +0 -0
- data/{packs → data/packer}/examples/digitalocean/data/images.json +0 -0
- data/{packs → data/packer}/examples/digitalocean/data/regions.json +0 -0
- data/{packs → data/packer}/examples/digitalocean/data/sizes.json +0 -0
- data/{packs → data/packer}/examples/digitalocean/pack.sh +0 -0
- data/{packs → data/packer}/examples/digitalocean/packer.json +0 -0
- data/{packs → data/packer}/examples/virtualbox-iso/pack.sh +0 -0
- data/{packs → data/packer}/examples/virtualbox-iso/packer.json +0 -0
- data/{packs → data/packer}/examples/virtualbox-iso/provision.sh +0 -0
- data/{puppet → data/puppet}/environment.conf +0 -0
- data/{puppet → data/puppet}/manifests/all.pp +0 -0
- data/{puppet → data/puppet}/manifests/core.pp +0 -0
- data/{puppet → data/puppet}/manifests/db.pp +0 -0
- data/{puppet → data/puppet}/manifests/default.pp +0 -0
- data/{puppet → data/puppet}/manifests/dev.pp +0 -0
- data/{puppet → data/puppet}/manifests/ops.pp +0 -0
- data/{puppet → data/puppet}/manifests/sites/apollocrawler.com.pp +0 -0
- data/data/puppet/manifests/travis.pp +3 -0
- data/{puppet → data/puppet}/manifests/web.pp +0 -0
- data/{puppet → data/puppet}/modules/apache2/files/apache2.conf +0 -0
- data/{puppet → data/puppet}/modules/apache2/files/envvars +0 -0
- data/{puppet → data/puppet}/modules/apache2/files/magic +0 -0
- data/{puppet → data/puppet}/modules/apache2/files/ports.conf +0 -0
- data/{puppet → data/puppet}/modules/apache2/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/clang/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/cmake/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/core/files/sources.list +0 -0
- data/{puppet → data/puppet}/modules/core/manifests/init.pp +5 -4
- data/{puppet → data/puppet}/modules/couchdb/files/local.ini +0 -0
- data/{puppet → data/puppet}/modules/couchdb/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/db/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/dev/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/elasticsearch/files/elasticsearch.yml +0 -0
- data/{puppet → data/puppet}/modules/elasticsearch/files/logging.yml +0 -0
- data/{puppet → data/puppet}/modules/elasticsearch/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/erlang/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/ghc/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/git/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/golang/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/htop/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/java/files/accept-java-license.sh +0 -0
- data/data/puppet/modules/java/files/install-java7.sh +7 -0
- data/data/puppet/modules/java/files/install-java8.sh +7 -0
- data/{puppet → data/puppet}/modules/java/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/links/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/llvm/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/lynx/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/mc/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/memcache/files/memcached.conf +0 -0
- data/{puppet → data/puppet}/modules/memcache/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/mongodb/files/mongodb.conf +0 -0
- data/{puppet → data/puppet}/modules/mongodb/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/mosh/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/mysql/files/conf.d/mysqld_safe_syslog.cnf +0 -0
- data/{puppet → data/puppet}/modules/mysql/files/debian.cnf +0 -0
- data/{puppet → data/puppet}/modules/mysql/files/my.cnf +0 -0
- data/{puppet → data/puppet}/modules/mysql/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/nginx/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/nodejs/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/octave/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/ops/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/php5/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/9.3/main/environment +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/9.3/main/pg_ctl.conf +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/9.3/main/pg_hba.conf +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/9.3/main/pg_ident.conf +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/9.3/main/postgresql.conf +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/9.3/main/start.conf +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/create-postgresql-user.sh +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/sql/bootstrap.sh +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/sql/create-extension-adminpack.sql +0 -0
- data/{puppet → data/puppet}/modules/postgresql/files/sql/create-extension-postgis.sql +0 -0
- data/{puppet → data/puppet}/modules/postgresql/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/python/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/r/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/rabbitmq/files/enable-user-management.sh +0 -0
- data/{puppet → data/puppet}/modules/rabbitmq/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/redis/files/memcached.conf +0 -0
- data/{puppet → data/puppet}/modules/redis/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/ruby/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/rvm/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/science/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/squid/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/svn/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/tomcat7/files/tomcat-users.xml +0 -0
- data/{puppet → data/puppet}/modules/tomcat7/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/varnish/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/web/manifests/init.pp +0 -0
- data/{puppet → data/puppet}/modules/zookeeper/files/conf/configuration.xsl +0 -0
- data/{puppet → data/puppet}/modules/zookeeper/files/conf/environment +0 -0
- data/{puppet → data/puppet}/modules/zookeeper/files/conf/log4j.properties +0 -0
- data/{puppet → data/puppet}/modules/zookeeper/files/conf/zoo.cfg +0 -0
- data/{puppet → data/puppet}/modules/zookeeper/manifests/init.pp +0 -0
- data/{vagrant → data/vagrant}/profiles/default.json +0 -0
- data/lib/apollon.rb +3 -1
- data/lib/apollon/cli/app.rb +38 -0
- data/lib/apollon/cli/cli.rb +7 -0
- data/lib/apollon/cli/cmd/provider_cmd.rb +28 -0
- data/lib/apollon/cli/cmd/puppet_cmd.rb +54 -0
- data/lib/apollon/cli/shared.rb +12 -0
- data/lib/apollon/core/core.rb +1 -1
- data/lib/apollon/extensions/string.rb +43 -0
- data/lib/apollon/helpers/helpers.rb +6 -4
- data/lib/apollon/lib.rb +3 -4
- data/lib/apollon/provider/provider.rb +23 -0
- data/lib/apollon/provider/providers/aws.rb +8 -0
- data/lib/apollon/provider/providers/digital_ocean.rb +8 -0
- data/lib/apollon/provider/providers/virtualbox.rb +8 -0
- data/lib/apollon/puppet/core.rb +40 -0
- data/lib/apollon/{provisions/provisions.rb → puppet/puppet.rb} +1 -1
- data/lib/apollon/version.rb +2 -1
- data/spec/spec_helper.rb +44 -0
- data/spec/unit/cli/cli_spec.rb +7 -0
- metadata +256 -123
- data/Gemfile.lock +0 -87
- data/lib/apollon/app/app.rb +0 -1
- data/lib/apollon/provisions/puppet.rb +0 -1
- data/puppet/modules/java/files/install-java7.sh +0 -7
- data/puppet/modules/java/files/install-java8.sh +0 -7
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/apollon.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'gli'
|
4
|
+
require 'pathname'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
require_relative 'shared'
|
8
|
+
|
9
|
+
def launch(argv = ARGV)
|
10
|
+
run(argv)
|
11
|
+
end
|
12
|
+
|
13
|
+
include GLI::App
|
14
|
+
|
15
|
+
program_desc 'Apollon CLI'
|
16
|
+
|
17
|
+
module Apollon
|
18
|
+
# Apollon CLI
|
19
|
+
module Cli
|
20
|
+
# CLI Application
|
21
|
+
class App
|
22
|
+
extend Apollon::Cli::Shared
|
23
|
+
|
24
|
+
cmds = File.absolute_path(File.join(File.dirname(__FILE__), 'cmd'))
|
25
|
+
Dir.glob(cmds + '/*.rb').each do |file|
|
26
|
+
require file
|
27
|
+
end
|
28
|
+
|
29
|
+
program_desc 'Apollon CLI'
|
30
|
+
|
31
|
+
def main(argv = ARGV)
|
32
|
+
launch(argv)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
launch
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'gli'
|
4
|
+
require 'pp'
|
5
|
+
require 'terminal-table'
|
6
|
+
|
7
|
+
include GLI::App
|
8
|
+
|
9
|
+
require_relative '../../provider/provider'
|
10
|
+
|
11
|
+
require_relative '../shared'
|
12
|
+
|
13
|
+
desc 'Provider'
|
14
|
+
command :provider do |c|
|
15
|
+
c.desc 'List supported providers'
|
16
|
+
c.command :list do |list|
|
17
|
+
list.action do
|
18
|
+
data = Apollon::Provider.list.each_with_index.map do |item, i|
|
19
|
+
[i, item[:name], item[:klass], item[:path]]
|
20
|
+
end
|
21
|
+
|
22
|
+
# TODO: Implement here
|
23
|
+
puts Terminal::Table.new title: 'Provider List',
|
24
|
+
headings: %w(Id Name Class Path),
|
25
|
+
rows: data
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'gli'
|
4
|
+
require 'pp'
|
5
|
+
require 'terminal-table'
|
6
|
+
|
7
|
+
require_relative '../shared'
|
8
|
+
|
9
|
+
require_relative '../../puppet/puppet'
|
10
|
+
|
11
|
+
include GLI::App
|
12
|
+
|
13
|
+
def print_puppet_table(data, title = '', headings = nil, _base_dir = Apollon::Puppet::PUPPET_DIR)
|
14
|
+
rows = data.each_with_index.map do |item, i|
|
15
|
+
[i, item[:name], item[:rel], item[:path]]
|
16
|
+
end
|
17
|
+
|
18
|
+
puts Terminal::Table.new title: title,
|
19
|
+
headings: headings,
|
20
|
+
rows: rows
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Puppet low-level commands'
|
24
|
+
command :puppet do |puppet|
|
25
|
+
# Puppet manifests
|
26
|
+
puppet.desc 'Puppet manifests'
|
27
|
+
puppet.command :manifest do |manifest|
|
28
|
+
# List puppet manifests
|
29
|
+
manifest.desc 'List puppet manifest'
|
30
|
+
manifest.command :list do |list|
|
31
|
+
list.action do
|
32
|
+
print_puppet_table(Apollon::Puppet.manifests,
|
33
|
+
'Puppet Manifests',
|
34
|
+
%w(id Name Relative Path),
|
35
|
+
Apollon::Puppet::MANIFEST_DIR)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Puppet modules
|
41
|
+
puppet.desc 'Puppet modules'
|
42
|
+
puppet.command :module do |modul|
|
43
|
+
# List puppet manifests
|
44
|
+
modul.desc 'List puppet modules'
|
45
|
+
modul.command :list do |list|
|
46
|
+
list.action do
|
47
|
+
print_puppet_table(Apollon::Puppet.modules,
|
48
|
+
'Puppet Modules',
|
49
|
+
%w(id Name Relative Path),
|
50
|
+
Apollon::Puppet::MODULE_DIR)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/apollon/core/core.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# String class extensions
|
4
|
+
class String
|
5
|
+
# rubocop:disable all
|
6
|
+
def camelcase(*separators)
|
7
|
+
case separators.first
|
8
|
+
when Symbol, TrueClass, FalseClass, NilClass
|
9
|
+
first_letter = separators.shift
|
10
|
+
end
|
11
|
+
|
12
|
+
separators = ['_', '\s'] if separators.empty?
|
13
|
+
|
14
|
+
str = self.dup
|
15
|
+
|
16
|
+
separators.each do |s|
|
17
|
+
str = str.gsub(/(?:#{s}+)([a-z])/) { $1.upcase }
|
18
|
+
end
|
19
|
+
|
20
|
+
case first_letter
|
21
|
+
when :upper, true
|
22
|
+
str = str.gsub(/(\A|\s)([a-z])/) { $1 + $2.upcase }
|
23
|
+
when :lower, false
|
24
|
+
str = str.gsub(/(\A|\s)([A-Z])/) { $1 + $2.downcase }
|
25
|
+
end
|
26
|
+
|
27
|
+
str
|
28
|
+
end
|
29
|
+
|
30
|
+
def camel_case
|
31
|
+
return self if self !~ /_/ && self =~ /[A-Z]+.*/
|
32
|
+
split('_').map { |e| e.capitalize }.join
|
33
|
+
end
|
34
|
+
|
35
|
+
def modulize
|
36
|
+
#gsub('__','/'). # why was this ever here?
|
37
|
+
gsub(/__(.?)/) { "::#{$1.upcase}" }.
|
38
|
+
gsub(/\/(.?)/) { "::#{$1.upcase}" }.
|
39
|
+
gsub(/(?:_+|-+)([a-z])/) { $1.upcase }.
|
40
|
+
gsub(/(\A|\s)([a-z])/) { $1 + $2.upcase }
|
41
|
+
end
|
42
|
+
# rubocop:enable all
|
43
|
+
end
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'net/http'
|
2
4
|
require 'json'
|
3
5
|
|
4
|
-
uri = URI(
|
6
|
+
uri = URI('https://api.github.com/gists')
|
5
7
|
|
6
8
|
payload = {
|
7
|
-
'description' =>
|
9
|
+
'description' => 'My test gist',
|
8
10
|
'public' => true,
|
9
11
|
'files' => {
|
10
12
|
'test.txt' => {
|
@@ -20,9 +22,9 @@ puts req.inspect
|
|
20
22
|
puts req.body.inspect
|
21
23
|
|
22
24
|
# GitHub API is strictly via HTTPS, so SSL is mandatory
|
23
|
-
res = Net::HTTP.start(uri.hostname, uri.port, :
|
25
|
+
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
24
26
|
http.request(req)
|
25
27
|
end
|
26
28
|
|
27
29
|
puts res.inspect
|
28
|
-
puts res.body.inspect
|
30
|
+
puts res.body.inspect
|
data/lib/apollon/lib.rb
CHANGED
@@ -2,8 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'pathname'
|
4
4
|
|
5
|
-
require_relative '
|
6
|
-
require_relative 'provisions/provisions'
|
5
|
+
# require_relative 'cli/cli'
|
7
6
|
|
8
7
|
base = Pathname(__FILE__).dirname.expand_path
|
9
8
|
|
@@ -12,8 +11,8 @@ res = []
|
|
12
11
|
Dir.glob(base + '*.rb').each do |file|
|
13
12
|
loaded_file = require file
|
14
13
|
res << {
|
15
|
-
:
|
16
|
-
:
|
14
|
+
file: file,
|
15
|
+
loaded: loaded_file
|
17
16
|
}
|
18
17
|
end
|
19
18
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require_relative '../extensions/string'
|
4
|
+
|
5
|
+
module Apollon
|
6
|
+
# Provider module
|
7
|
+
module Provider
|
8
|
+
class << self
|
9
|
+
def list
|
10
|
+
base = File.join(File.dirname(__FILE__), 'providers')
|
11
|
+
providers = File.absolute_path(base)
|
12
|
+
Dir.glob(providers + '/*.rb').map do |file|
|
13
|
+
name = file.gsub(base + '/', '').gsub('.rb', '')
|
14
|
+
{
|
15
|
+
name: name,
|
16
|
+
path: file,
|
17
|
+
klass: name.modulize
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Apollon
|
4
|
+
# Interface for puppet
|
5
|
+
class Puppet
|
6
|
+
BASE_DIR ||= File.absolute_path(File.join(File.dirname(__FILE__),
|
7
|
+
'..',
|
8
|
+
'..',
|
9
|
+
'..'))
|
10
|
+
PUPPET_DIR ||= File.join(BASE_DIR, 'data', 'puppet')
|
11
|
+
MODULE_DIR ||= File.join(PUPPET_DIR, 'modules')
|
12
|
+
MANIFEST_DIR ||= File.join(PUPPET_DIR, 'manifests')
|
13
|
+
|
14
|
+
PUPPET_MANIFEST_PATTERN = '/*'
|
15
|
+
PUPPET_MODULE_PATTERN = '/*'
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def relative_files(dir, relative_dir)
|
19
|
+
Dir.glob(dir).map do |f|
|
20
|
+
full_path = File.expand_path(f)
|
21
|
+
rel_path = full_path.gsub(relative_dir + '/', '')
|
22
|
+
name = rel_path.gsub(/\.pp$/, '').split('/')[0]
|
23
|
+
{
|
24
|
+
name: name,
|
25
|
+
rel: full_path.gsub(BASE_DIR + '/', ''),
|
26
|
+
path: full_path
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def manifests(dir = MANIFEST_DIR + PUPPET_MANIFEST_PATTERN)
|
32
|
+
relative_files(dir, MANIFEST_DIR)
|
33
|
+
end
|
34
|
+
|
35
|
+
def modules(dir = MODULE_DIR + PUPPET_MODULE_PATTERN)
|
36
|
+
relative_files(dir, MODULE_DIR)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/apollon/version.rb
CHANGED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
require 'rspec'
|
5
|
+
require 'coveralls'
|
6
|
+
require 'pathname'
|
7
|
+
|
8
|
+
Coveralls.wear_merged!
|
9
|
+
|
10
|
+
# Automagically include all helpers/*_helper.rb
|
11
|
+
|
12
|
+
base = Pathname(__FILE__).dirname.expand_path
|
13
|
+
Dir.glob(base + 'helpers/*_helper.rb').each do |file|
|
14
|
+
require file
|
15
|
+
end
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
config.filter_run_excluding :broken => true
|
19
|
+
|
20
|
+
config.before(:all) do
|
21
|
+
# TODO: Fully setup global environment
|
22
|
+
end
|
23
|
+
|
24
|
+
config.after(:all) do
|
25
|
+
# TODO: Fully setup global environment
|
26
|
+
end
|
27
|
+
|
28
|
+
config.before(:suite) do
|
29
|
+
# TODO: Setup test project
|
30
|
+
end
|
31
|
+
|
32
|
+
config.after(:suite) do
|
33
|
+
# TODO: Delete test project
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
38
|
+
SimpleCov::Formatter::HTMLFormatter,
|
39
|
+
Coveralls::SimpleCov::Formatter
|
40
|
+
]
|
41
|
+
|
42
|
+
SimpleCov.start do
|
43
|
+
add_filter 'spec/'
|
44
|
+
end
|