hookworm-base 0.1.0

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.
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