hookworm-base 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MDQxOGFkODFmYWE4YTAzMTY1NWZhMDgxMTg4NzBmNTcxNThkMTE2Zg==
5
+ data.tar.gz: !binary |-
6
+ ZTJjYjNlYWUyZWIwMjliNzFhMmE3MzEyYzhlMTQyODdlMDA2MTY4ZA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZGFhOGZiN2M4ZGJiNDJkMTY4OWQxZDM5MGE5MDUyYjA4OWFlZTNlMDAyN2Fi
10
+ MWY3YjRmZDM2MzQzY2QxMGM3MDk4NDIwMTMzNWIwZTdhYWE0MDU2ZmQ4MmZj
11
+ ZjRjZjYxYTE1OTFjZDVlZDA0YTMzNWNlN2U2NjA0NWYzYTZiNGI=
12
+ data.tar.gz: !binary |-
13
+ OGU0OGRiM2JiODM5ODNlZTg3MzBlMTIxZWNlYWU5ZGI0ZmFjMjNkMmY4ZGJi
14
+ N2QxZjkwNjU2MjAzMGIxZjMzYWFhNjA1ZDYxNWM5NGVkNTE2YTk2ZDIxMmE1
15
+ ZjM3MWFjNmY5NmYzOTQ4ZGYxOTgzMjliMWEwN2M5NDgzMjRhNzg=
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ pkg
12
+ spec/reports
13
+ tmp
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --require pry
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,3 @@
1
+ ---
2
+ Documentation:
3
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.0.0-p353
data/.simplecov ADDED
@@ -0,0 +1,7 @@
1
+ if ENV['COVERAGE']
2
+ SimpleCov.start do
3
+ add_filter '/spec/'
4
+ end
5
+ end
6
+
7
+ # vim:filetype=ruby
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ ---
2
+ language: ruby
3
+ rvm:
4
+ - 2.0.0
5
+ - 2.1.0
6
+ notifications:
7
+ email: github+hookworm-base-ruby@modcloth.com
8
+ deploy:
9
+ provider: rubygems
10
+ api_key:
11
+ secure: SuK2ieVIvpVfG6wwMe+pponXMn6Tc8yFkdlksGR+qKqQRnOO8jkViodOD1iBKkvovKqNlr/5Z7atkfDh6raOOOHEl511lKLxvZhN4BMtuvqj55iiT5OmLrJew3SfIMjcbVZRjxf6msyvrSPZ5mGFDOdxSFkgkpP2yRf7uCtVxg8=
12
+ gem: hookworm-base
13
+ on:
14
+ tags: true
15
+ branch: master
16
+ repo: modcloth-labs/hookworm-base-ruby
17
+ rvm: 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,23 @@
1
+ Copyright © 2014 ModCloth, Inc.
2
+ ====================================
3
+
4
+ ## MIT License
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a
7
+ copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included
15
+ in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Hookworm Base
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'hookworm-base'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install hookworm-base
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new do |t|
6
+ t.rspec_opts = '--format doc'
7
+ end
8
+
9
+ Rubocop::RakeTask.new(:rubocop)
10
+
11
+ desc 'Run specs with SimpleCov'
12
+ task :coverage do
13
+ ENV['COVERAGE'] = '1'
14
+ Rake::Task['spec'].invoke
15
+ end
16
+
17
+ task default: [:rubocop, :coverage]
@@ -0,0 +1,28 @@
1
+ # vim:fileencoding=utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'hookworm/base/version'
5
+ require 'English'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'hookworm-base'
9
+ spec.version = Hookworm::Base::VERSION
10
+ spec.authors = ['Dan Buch']
11
+ spec.email = %w(d.buch@modcloth.com)
12
+ spec.description = %q{}
13
+ spec.summary = %q{}
14
+ spec.homepage = ''
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files`.split($RS)
18
+ spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(/^(test|spec|features)\//)
20
+ spec.require_paths = %w(lib)
21
+
22
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'pry'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rubocop'
27
+ spec.add_development_dependency 'simplecov'
28
+ end
@@ -0,0 +1,17 @@
1
+ class String
2
+ def commasplit
3
+ split(',').map(&:strip)
4
+ end
5
+
6
+ def cleanquotes
7
+ gsub(/["']/, '')
8
+ end
9
+
10
+ def to_plaintext
11
+ gsub(/\n/, '\n').gsub(/\t/, '\t')
12
+ end
13
+
14
+ def to_html
15
+ gsub(/\n/, '<br />').gsub(/\t/, ' ')
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'uri'
2
+
3
+ module URI
4
+ unless @@schemes['SMTP']
5
+ class SMTP < Generic
6
+ DEFAULT_PORT = 587
7
+ end
8
+ @@schemes['SMTP'] = SMTP
9
+ end
10
+
11
+ unless @@schemes['SMTPS']
12
+ class SMTPS < Generic
13
+ DEFAULT_PORT = 587
14
+ end
15
+ @@schemes['SMTPS'] = SMTPS
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ module Hookworm
2
+ module Base
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,43 @@
1
+ require 'json'
2
+ require_relative 'config'
3
+ require_relative 'logging'
4
+
5
+ module Hookworm
6
+ module Base
7
+ include ::Hookworm::Config
8
+ include ::Hookworm::Logging
9
+
10
+ def run!(argv)
11
+ action = argv.first
12
+ if %(configure handle).include?(action)
13
+ return send(*argv)
14
+ else
15
+ abort("I don't know how to #{action.inspect}")
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def configure
22
+ @cfg = JSON.parse(input_stream.read, symbolize_names: true)
23
+ File.open(cfg_file, 'w') do |f|
24
+ f.puts JSON.pretty_generate(@cfg)
25
+ end
26
+ log.info { "Configured! Wrote config to #{cfg_file}" }
27
+ end
28
+
29
+ def handle(type)
30
+ send(:"handle_#{type}")
31
+ end
32
+
33
+ def handle_github
34
+ 78
35
+ end
36
+
37
+ def handle_travis
38
+ 78
39
+ end
40
+
41
+ autoload :VERSION, 'hookworm/base/version'
42
+ end
43
+ end
@@ -0,0 +1,13 @@
1
+ module Hookworm
2
+ module Config
3
+ private
4
+
5
+ def cfg
6
+ @cfg ||= JSON.parse(File.read(cfg_file), symbolize_names: true)
7
+ end
8
+
9
+ def cfg_file
10
+ File.join(Dir.pwd, "#{File.basename($PROGRAM_NAME)}.cfg.json")
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,52 @@
1
+ require 'erb'
2
+ require 'time'
3
+
4
+ module Hookworm
5
+ class DirectoryIndexUpdater
6
+ def initialize(cfg)
7
+ @path_base = cfg[:static_dir]
8
+ @version = cfg[:version]
9
+ end
10
+
11
+ def update_all!(root_dir)
12
+ Dir.glob(%W(#{root_dir} #{root_dir}/* #{root_dir}/**/*)) do |entry|
13
+ update_index!(entry) if File.directory?(entry)
14
+ end
15
+ end
16
+
17
+ def update_index!(directory)
18
+ File.open(File.join(directory, 'index.html'), 'w:UTF-8') do |f|
19
+ f.write TemplateContext.new(
20
+ @version,
21
+ directory.gsub(/#{@path_base}/, ''),
22
+ Dir.entries(directory).sort.reject { |e| e =~ /^(\.|index\.html)$/ }
23
+ ).render(index_tmpl)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def index_tmpl
30
+ @index_tmpl ||= ERB.new(index_tmpl_string)
31
+ end
32
+
33
+ def index_tmpl_string
34
+ @index_tmpl_string ||= File.read(
35
+ File.expand_path('../index-template.html.erb', __FILE__)
36
+ )
37
+ end
38
+
39
+ class TemplateContext
40
+ def initialize(version, uri_path, entries)
41
+ @version = version
42
+ @uri_path = uri_path
43
+ @entries = entries
44
+ end
45
+
46
+ def render(template)
47
+ @build_time = Time.now.utc
48
+ template.result(binding)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,30 @@
1
+ require 'net/smtp'
2
+ require 'uri'
3
+
4
+ module Hookworm
5
+ class Emailer
6
+ def initialize(email_uri)
7
+ @email_uri = URI(email_uri)
8
+ end
9
+
10
+ def send(from, to, msg)
11
+ Net::SMTP.start(*smtp_args) do |smtp|
12
+ smtp.enable_ssl if @email_uri.scheme == 'smtps'
13
+ smtp.send_message(msg, from, to)
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def smtp_args
20
+ [
21
+ @email_uri.host,
22
+ @email_uri.port,
23
+ 'localhost',
24
+ @email_uri.user,
25
+ @email_uri.password,
26
+ @email_uri.user ? :plain : nil
27
+ ]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Index for <%= @uri_path %></title>
5
+ <meta name="updated-at" content="<%= @build_time %>">
6
+ <style type="text/css">body { font-family: sans-serif; }</style>
7
+ </head>
8
+ <body>
9
+ <h1>Index for <%= @uri_path %></h1>
10
+ <ul>
11
+ <% @entries.each do |entry| %>
12
+ <li><a href="<%= entry %>"><%= entry %></a></li>
13
+ <% end %>
14
+ </ul>
15
+ <hr>
16
+ <p>updated at: <code><%= @build_time %></code></p>
17
+ <pre><%= @version %></pre>
18
+ </body>
19
+ </html>
@@ -0,0 +1,35 @@
1
+ require 'logger'
2
+
3
+ module Hookworm
4
+ module Logging
5
+ include ::Hookworm::Config
6
+
7
+ private
8
+
9
+ def log
10
+ @log ||= build_log
11
+ end
12
+
13
+ def input_stream
14
+ $stdin.set_encoding('UTF-8')
15
+ end
16
+
17
+ def output_stream
18
+ $stdout.set_encoding('UTF-8')
19
+ end
20
+
21
+ def log_stream
22
+ $stderr.set_encoding('UTF-8')
23
+ end
24
+
25
+ def build_log
26
+ logger = Logger.new(log_stream)
27
+ logger.level = cfg[:debug] ? Logger::DEBUG : Logger::INFO
28
+ log_level = cfg[:log_level]
29
+ if log_level && Logger.const_defined?(log_level.upcase)
30
+ logger.level = Logger.const_get(log_level.upcase)
31
+ end
32
+ logger
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,4 @@
1
+ require 'hookworm/base'
2
+
3
+ require_relative 'core_ext/string'
4
+ require_relative 'core_ext/uri'
@@ -0,0 +1,17 @@
1
+ describe String do
2
+ it 'adds a #commasplit method' do
3
+ 'foo, ham'.commasplit.should == %w(foo ham)
4
+ end
5
+
6
+ it 'adds a #cleanquotes method' do
7
+ %Q{"foo bar" "fizz'''}.cleanquotes.should == 'foo bar fizz'
8
+ end
9
+
10
+ it 'adds a #to_plaintext method' do
11
+ "hambone\n99\t\tfancy".to_plaintext.should == 'hambone\n99\t\tfancy'
12
+ end
13
+
14
+ it 'adds a #to_html method' do
15
+ "hambone\n99\t\tfancy".to_html.should == 'hambone<br />99 fancy'
16
+ end
17
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hookworm::Base do
4
+ let(:handler_input) { StringIO.new('{"log_level":"warn"}') }
5
+
6
+ let :example_handler do
7
+ Class.new do
8
+ include Hookworm::Base
9
+ include Support::FakeIOStreams
10
+
11
+ end.new(handler_input)
12
+ end
13
+
14
+ let :config_file_stream do
15
+ StringIO.new
16
+ end
17
+
18
+ before :each do
19
+ File.stub(:open).with(/rspec.cfg.json$/, 'w').and_yield(config_file_stream)
20
+ end
21
+
22
+ it 'has a version' do
23
+ defined?(Hookworm::Base::VERSION).should be_true
24
+ end
25
+
26
+ context 'when configuring' do
27
+ let :handler_input do
28
+ StringIO.new('{"fizz":"buzz","bork":true,"log_level":"warn"}')
29
+ end
30
+
31
+ it 'does not explode' do
32
+ example_handler.run!(%w(configure))
33
+ end
34
+
35
+ it 'writes the entire config to a cached config file' do
36
+ example_handler.run!(%w(configure))
37
+ JSON.parse(config_file_stream.string).should == {
38
+ 'fizz' => 'buzz',
39
+ 'bork' => true,
40
+ 'log_level' => 'warn'
41
+ }
42
+ end
43
+
44
+ context 'when the input is not JSON' do
45
+ let(:handler_input) { StringIO.new('foo...?') }
46
+
47
+ it 'explodes' do
48
+ expect { example_handler.run!(%w(configure)) }.to raise_error
49
+ end
50
+ end
51
+ end
52
+
53
+ context 'when handling github' do
54
+ it 'returns 78' do
55
+ example_handler.run!(%w(handle github)).should == 78
56
+ end
57
+ end
58
+
59
+ context 'when handling travis' do
60
+ it 'returns 78' do
61
+ example_handler.run!(%w(handle travis)).should == 78
62
+ end
63
+ end
64
+
65
+ context 'when handling something unknown' do
66
+ it 'explodes' do
67
+ expect { example_handler.run!(%w(handle zombies)) }.to raise_error
68
+ end
69
+ end
70
+
71
+ context 'when the action is unknown' do
72
+ before { $stderr = StringIO.new }
73
+ after { $stderr = STDERR }
74
+
75
+ it 'explodes' do
76
+ expect { example_handler.run!(%w(fribble)) }.to raise_error
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,2 @@
1
+ describe Hookworm::Config do
2
+ end
@@ -0,0 +1,4 @@
1
+ require 'hookworm/directory_index_updater'
2
+
3
+ describe Hookworm::DirectoryIndexUpdater do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'hookworm/emailer'
2
+
3
+ describe Hookworm::Emailer do
4
+ end
@@ -0,0 +1,17 @@
1
+ describe Hookworm::Logging do
2
+ let :example_instance do
3
+ Class.new { include Hookworm::Logging }.new
4
+ end
5
+
6
+ it 'uses stdin as the input stream' do
7
+ example_instance.send(:input_stream).should == $stdin
8
+ end
9
+
10
+ it 'uses stdout as the output stream' do
11
+ example_instance.send(:output_stream).should == $stdout
12
+ end
13
+
14
+ it 'uses stderr as the log stream' do
15
+ example_instance.send(:log_stream).should == $stderr
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ require 'simplecov'
2
+ require 'hookworm-base'
3
+
4
+ RSpec.configure do |c|
5
+ c.filter_run_excluding(integration: true) unless ENV['RSPEC_INTEGRATION']
6
+ end
7
+
8
+ module Support
9
+ module FakeIOStreams
10
+ def initialize(instream)
11
+ @input_stream = instream
12
+ super()
13
+ end
14
+
15
+ attr_reader :input_stream
16
+
17
+ def output_stream
18
+ @output_stream ||= StringIO.new
19
+ end
20
+
21
+ def log_stream
22
+ @log_stream ||= StringIO.new
23
+ end
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hookworm-base
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Dan Buch
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-30 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: pry
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: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
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: rubocop
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
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: ''
98
+ email:
99
+ - d.buch@modcloth.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - .gitignore
105
+ - .rspec
106
+ - .rubocop.yml
107
+ - .ruby-version
108
+ - .simplecov
109
+ - .travis.yml
110
+ - Gemfile
111
+ - LICENSE.md
112
+ - README.md
113
+ - Rakefile
114
+ - hookworm-base.gemspec
115
+ - lib/core_ext/string.rb
116
+ - lib/core_ext/uri.rb
117
+ - lib/hookworm-base.rb
118
+ - lib/hookworm/base.rb
119
+ - lib/hookworm/base/version.rb
120
+ - lib/hookworm/config.rb
121
+ - lib/hookworm/directory_index_updater.rb
122
+ - lib/hookworm/emailer.rb
123
+ - lib/hookworm/index-template.html.erb
124
+ - lib/hookworm/logging.rb
125
+ - spec/lib/core_ext/string_spec.rb
126
+ - spec/lib/hookworm/base_spec.rb
127
+ - spec/lib/hookworm/config_spec.rb
128
+ - spec/lib/hookworm/directory_index_updater_spec.rb
129
+ - spec/lib/hookworm/emailer_spec.rb
130
+ - spec/lib/hookworm/logging_spec.rb
131
+ - spec/spec_helper.rb
132
+ homepage: ''
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.2.1
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: ''
156
+ test_files:
157
+ - spec/lib/core_ext/string_spec.rb
158
+ - spec/lib/hookworm/base_spec.rb
159
+ - spec/lib/hookworm/config_spec.rb
160
+ - spec/lib/hookworm/directory_index_updater_spec.rb
161
+ - spec/lib/hookworm/emailer_spec.rb
162
+ - spec/lib/hookworm/logging_spec.rb
163
+ - spec/spec_helper.rb