stewfinder 0.0.1 → 0.0.2
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 +4 -4
- data/.rubocop.yml +3 -0
- data/Gemfile +4 -1
- data/README.md +3 -1
- data/Rakefile +7 -0
- data/exe/stewfinder +1 -4
- data/lib/stewfinder.rb +1 -61
- data/lib/stewfinder/command.rb +49 -0
- data/lib/stewfinder/finder.rb +71 -0
- data/lib/stewfinder/module.rb +2 -0
- data/lib/stewfinder/version.rb +2 -2
- data/stewards.yml +3 -0
- data/stewfinder.gemspec +4 -0
- data/test/command_test.rb +59 -0
- data/test/finder_test.rb +117 -0
- data/test/test_helper.rb +15 -0
- metadata +69 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a5e78e27f1e4a329755bceef065da6b53ff4665
|
4
|
+
data.tar.gz: 2011b0b615358b6c6d974f1d7715d943e55ec921
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12467cbff214c1f0b0bde5f61a582e27f308c67324c436bf78306bae80e86333d7ff3c29141c3ca7bf21e36670366ba96d69fc420a02d4ad306d4494626b9673
|
7
|
+
data.tar.gz: b81f738cfacd95bb84d3d88faced22d2e64b9da67b4e2d4e9cf90303bf4bb50957588333baacc86649c369f78501ecbc357120b1a0ac5a085ffc26f07c3b719e
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
@@ -4,5 +4,8 @@ source 'https://rubygems.org'
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
group :development do
|
7
|
-
|
7
|
+
# This provides some basic reporting on tests for CircleCI
|
8
|
+
gem 'minitest-ci', git: 'git@github.com:circleci/minitest-ci.git'
|
8
9
|
end
|
10
|
+
|
11
|
+
gem 'simplecov', require: false, group: :test
|
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# Stewfinder
|
1
|
+
# Stewfinder
|
2
2
|
|
3
3
|
This gem provides command line utilities for working locally with [Ladle](https://github.com/appfolio/ladle) style stewards files.
|
4
4
|
|
5
|
+
[](https://circleci.com/gh/appfolio/stewfinder/tree/master)
|
6
|
+
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
Install via the command line:
|
data/Rakefile
CHANGED
data/exe/stewfinder
CHANGED
data/lib/stewfinder.rb
CHANGED
@@ -1,62 +1,2 @@
|
|
1
|
+
require 'stewfinder/module'
|
1
2
|
require 'stewfinder/version'
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
class Stewfinder
|
5
|
-
def initialize(filename)
|
6
|
-
@name = filename
|
7
|
-
end
|
8
|
-
|
9
|
-
def find
|
10
|
-
stewards = get_stewards
|
11
|
-
|
12
|
-
puts 'Stewards for this file:'
|
13
|
-
if stewards.empty?
|
14
|
-
puts 'None'
|
15
|
-
else
|
16
|
-
puts ' - ' + stewards.uniq.sort.join("\n - ")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def get_stewfiles
|
23
|
-
stewfiles = []
|
24
|
-
cur_path = Pathname(@name)
|
25
|
-
while cur_path
|
26
|
-
stewfiles << File.join(cur_path, 'stewards.yml') if File.exist?(File.join(cur_path, 'stewards.yml'))
|
27
|
-
prev_path = cur_path
|
28
|
-
cur_path = cur_path.split.first
|
29
|
-
break if cur_path == prev_path
|
30
|
-
end
|
31
|
-
stewfiles
|
32
|
-
end
|
33
|
-
|
34
|
-
def get_stewards
|
35
|
-
stewards = []
|
36
|
-
stewfiles = get_stewfiles
|
37
|
-
stewfiles.each do |file|
|
38
|
-
steward_hash = YAML.load_file(file)
|
39
|
-
next unless steward_hash
|
40
|
-
|
41
|
-
steward_hash['stewards'].each do |s|
|
42
|
-
case s
|
43
|
-
when String
|
44
|
-
stewards << s
|
45
|
-
when Hash
|
46
|
-
begin
|
47
|
-
if [s['include']].flatten.any? { |i| File.fnmatch?(i.to_s, @name) } &&
|
48
|
-
[s['exclude']].flatten.none? { |i| File.fnmatch?(i.to_s, @name) }
|
49
|
-
stewards << s['github_username']
|
50
|
-
end
|
51
|
-
rescue
|
52
|
-
puts "Invalid Format: #{s.inspect} in file #{file}"
|
53
|
-
end
|
54
|
-
else
|
55
|
-
puts "Invalid Format: #{s.inspect} in file #{file}"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
stewards
|
61
|
-
end
|
62
|
-
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'docopt'
|
2
|
+
require_relative 'finder'
|
3
|
+
require_relative 'version'
|
4
|
+
|
5
|
+
module Stewfinder
|
6
|
+
# Provides the command line interface to Stewfinder
|
7
|
+
class Command
|
8
|
+
DOC = <<-DOC
|
9
|
+
stewfinder: A tool to help discover code stewards.
|
10
|
+
|
11
|
+
Usage:
|
12
|
+
stewfinder [options] [PATH]
|
13
|
+
stewfinder -h | --help
|
14
|
+
stewfinder --version
|
15
|
+
|
16
|
+
Options:
|
17
|
+
--sort Sort the output list.
|
18
|
+
|
19
|
+
When PATH isn't provided stewfinder will use the present working directory.
|
20
|
+
DOC
|
21
|
+
.freeze
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@exit_status = 0
|
25
|
+
end
|
26
|
+
|
27
|
+
def run
|
28
|
+
options = Docopt.docopt(DOC, argv: argv, version: VERSION)
|
29
|
+
finder = Finder.new(File.absolute_path(options['PATH'] || Dir.pwd))
|
30
|
+
finder.print_stewards(options['--sort'])
|
31
|
+
@exit_status
|
32
|
+
rescue Docopt::Exit => exc
|
33
|
+
exit_with_status(exc.message, exc.class.usage != '')
|
34
|
+
rescue StandardError => exc
|
35
|
+
exit_with_status(exc.message)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def argv
|
41
|
+
ARGV
|
42
|
+
end
|
43
|
+
|
44
|
+
def exit_with_status(message, condition = true)
|
45
|
+
puts message
|
46
|
+
@exit_status = condition ? 1 : @exit_status
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Stewfinder
|
4
|
+
class Finder
|
5
|
+
def initialize(filename)
|
6
|
+
raise StandardError, "Invalid file #{filename}" unless File.exist?(filename)
|
7
|
+
@name = filename
|
8
|
+
end
|
9
|
+
|
10
|
+
def find
|
11
|
+
get_stewards.uniq
|
12
|
+
end
|
13
|
+
|
14
|
+
def print_stewards(sort)
|
15
|
+
stewards = find
|
16
|
+
|
17
|
+
str = "Stewards for #{@name}:\n"
|
18
|
+
if stewards.empty?
|
19
|
+
str += 'None'
|
20
|
+
else
|
21
|
+
stewards = stewards.sort! if sort
|
22
|
+
str += ' - ' + stewards.join("\n - ")
|
23
|
+
end
|
24
|
+
|
25
|
+
puts str
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def get_stewfiles
|
31
|
+
stewfiles = []
|
32
|
+
cur_path = Pathname(@name)
|
33
|
+
prev_path = nil
|
34
|
+
while cur_path != prev_path
|
35
|
+
stewfiles << File.join(cur_path, 'stewards.yml') if File.exist?(File.join(cur_path, 'stewards.yml'))
|
36
|
+
prev_path = cur_path
|
37
|
+
cur_path = cur_path.split.first
|
38
|
+
end
|
39
|
+
stewfiles
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_stewards
|
43
|
+
stewards = []
|
44
|
+
stewfiles = get_stewfiles
|
45
|
+
stewfiles.each do |file|
|
46
|
+
steward_hash = YAML.load_file(file)
|
47
|
+
next unless steward_hash
|
48
|
+
|
49
|
+
steward_hash['stewards'].each do |s|
|
50
|
+
case s
|
51
|
+
when String
|
52
|
+
stewards << s
|
53
|
+
when Hash
|
54
|
+
begin
|
55
|
+
if [s['include']].flatten.any? { |i| File.fnmatch?(i.to_s, @name) } &&
|
56
|
+
[s['exclude']].flatten.none? { |i| File.fnmatch?(i.to_s, @name) }
|
57
|
+
stewards << s['github_username']
|
58
|
+
end
|
59
|
+
rescue
|
60
|
+
puts "Invalid Format: #{s.inspect} in file #{file}"
|
61
|
+
end
|
62
|
+
else
|
63
|
+
puts "Invalid Format: #{s.inspect} in file #{file}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
stewards
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/stewfinder/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = '0.0.
|
1
|
+
module Stewfinder
|
2
|
+
VERSION = '0.0.2'.freeze
|
3
3
|
end
|
data/stewards.yml
ADDED
data/stewfinder.gemspec
CHANGED
@@ -19,6 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
+
spec.add_runtime_dependency 'docopt', '~> 0.5'
|
22
23
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
23
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
|
+
spec.add_development_dependency 'minitest', '~> 5.8'
|
26
|
+
spec.add_development_dependency 'rubocop', '~> 0.38'
|
27
|
+
spec.add_development_dependency 'mocha', '~> 1.1'
|
24
28
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Stewfinder
|
4
|
+
class CommandTest < MiniTest::Test
|
5
|
+
def test_run
|
6
|
+
finder_mock = mock
|
7
|
+
Finder.expects(:new).with('/home/test').returns(finder_mock)
|
8
|
+
finder_mock.expects(:print_stewards).with(false)
|
9
|
+
cmd = Command.new
|
10
|
+
cmd.expects(:argv).returns(['/home/test'])
|
11
|
+
|
12
|
+
assert_equal 0, cmd.run
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_run__sort
|
16
|
+
finder_mock = mock
|
17
|
+
Finder.expects(:new).with('/home/test').returns(finder_mock)
|
18
|
+
finder_mock.expects(:print_stewards).with(true)
|
19
|
+
cmd = Command.new
|
20
|
+
cmd.expects(:argv).returns(['/home/test', '--sort'])
|
21
|
+
|
22
|
+
assert_equal 0, cmd.run
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_run__defaults_to_pwd
|
26
|
+
Dir.expects(:pwd).returns('/current/dir')
|
27
|
+
finder_mock = mock
|
28
|
+
Finder.expects(:new).with('/current/dir').returns(finder_mock)
|
29
|
+
finder_mock.expects(:print_stewards).with(false)
|
30
|
+
cmd = Command.new
|
31
|
+
cmd.expects(:argv).returns([])
|
32
|
+
|
33
|
+
assert_equal 0, cmd.run
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_run__invalid_option
|
37
|
+
cmd = Command.new
|
38
|
+
cmd.expects(:argv).returns(['--bryce'])
|
39
|
+
STDOUT.expects(:puts).with("--bryce is not recognized\nUsage:\n stewfinder [options] [PATH]\n stewfinder -h | --help\n stewfinder --version")
|
40
|
+
|
41
|
+
assert_equal 1, cmd.run
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_run__help
|
45
|
+
cmd = Command.new
|
46
|
+
cmd.expects(:argv).returns(['-h'])
|
47
|
+
STDOUT.expects(:puts).with(Command::DOC)
|
48
|
+
|
49
|
+
assert_equal 0, cmd.run
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_run__raises
|
53
|
+
Docopt.expects(:docopt).raises(StandardError, 'error message')
|
54
|
+
STDOUT.expects(:puts).with('error message')
|
55
|
+
|
56
|
+
assert_equal 1, Command.new.run
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/test/finder_test.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Stewfinder
|
4
|
+
class FinderTest < MiniTest::Test
|
5
|
+
def test_initialize__file_does_not_exist
|
6
|
+
File.expects(:exist?).returns(false)
|
7
|
+
|
8
|
+
assert_raises StandardError do
|
9
|
+
Finder.new('not a file lol')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_find
|
14
|
+
File.stubs(:exist?).returns(true)
|
15
|
+
YAML.stubs(:load_file).returns(loaded_stewfile)
|
16
|
+
|
17
|
+
finder = Finder.new('/home/test/git/stewfinder')
|
18
|
+
|
19
|
+
assert_equal %w(test2 test1), finder.find
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_find__with_regex
|
23
|
+
File.stubs(:exist?).returns(true)
|
24
|
+
YAML.stubs(:load_file).returns(loaded_stewfile)
|
25
|
+
|
26
|
+
finder = Finder.new('/home/test/git/stewfinder/regex.rb')
|
27
|
+
|
28
|
+
assert_equal %w(test2 test1 test_regex1 test_regex2), finder.find
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_find__handles_bad_syntax
|
32
|
+
File.stubs(:exist?).returns(true)
|
33
|
+
YAML.stubs(:load_file).returns('stewards' => ['test1', 1])
|
34
|
+
STDOUT.expects(:puts).with('Invalid Format: 1 in file /stewards.yml')
|
35
|
+
|
36
|
+
finder = Finder.new('/')
|
37
|
+
|
38
|
+
assert_equal %w(test1), finder.find
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_find__does_not_load_nonexistant_files
|
42
|
+
File.stubs(:exist?).returns(false)
|
43
|
+
File.expects(:exist?)
|
44
|
+
.with(any_of('/home/test/stewards.yml', '/home/test/git/stewfinder/test/finder_test.rb'))
|
45
|
+
.returns(true).twice
|
46
|
+
YAML.expects(:load_file).returns('stewards' => ['test1'])
|
47
|
+
|
48
|
+
finder = Finder.new('/home/test/git/stewfinder/test/finder_test.rb')
|
49
|
+
|
50
|
+
assert_equal ['test1'], finder.find
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_find__no_stewards
|
54
|
+
File.stubs(:exist?).returns(true)
|
55
|
+
YAML.stubs(:load_file).returns('stewards' => [])
|
56
|
+
|
57
|
+
finder = Finder.new('/home/test/git/stewfinder')
|
58
|
+
|
59
|
+
assert_equal [], finder.find
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_find__fnmatch_raises_error
|
63
|
+
File.stubs(:exist?).returns(true)
|
64
|
+
YAML.stubs(:load_file).returns('stewards' => [{ 'github_username' => 'test_regex2', 'include' => '*regex*' }])
|
65
|
+
STDOUT.expects(:puts).with do |*args|
|
66
|
+
args.first.include?('Invalid Format')
|
67
|
+
end
|
68
|
+
|
69
|
+
File.expects(:fnmatch?).raises(StandardError)
|
70
|
+
|
71
|
+
finder = Finder.new('/')
|
72
|
+
|
73
|
+
finder.find
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_print_stewards__unsorted
|
77
|
+
File.stubs(:exist?).returns(true)
|
78
|
+
YAML.stubs(:load_file).returns(loaded_stewfile)
|
79
|
+
STDOUT.expects(:puts).with("Stewards for /home/test/git/stewfinder:\n - test2\n - test1")
|
80
|
+
|
81
|
+
finder = Finder.new('/home/test/git/stewfinder')
|
82
|
+
|
83
|
+
finder.print_stewards(false)
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_print_stewards__sorted
|
87
|
+
File.stubs(:exist?).returns(true)
|
88
|
+
YAML.stubs(:load_file).returns(loaded_stewfile)
|
89
|
+
STDOUT.expects(:puts).with("Stewards for /home/test/git/stewfinder:\n - test1\n - test2")
|
90
|
+
|
91
|
+
finder = Finder.new('/home/test/git/stewfinder')
|
92
|
+
|
93
|
+
finder.print_stewards(true)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_print_stewards__no_stewards
|
97
|
+
File.stubs(:exist?).returns(true)
|
98
|
+
YAML.stubs(:load_file).returns('stewards' => [])
|
99
|
+
STDOUT.expects(:puts).with("Stewards for /home/test/git/stewfinder:\nNone")
|
100
|
+
|
101
|
+
finder = Finder.new('/home/test/git/stewfinder')
|
102
|
+
|
103
|
+
finder.print_stewards(false)
|
104
|
+
end
|
105
|
+
|
106
|
+
private
|
107
|
+
|
108
|
+
def loaded_stewfile
|
109
|
+
{ 'stewards' => [
|
110
|
+
'test2',
|
111
|
+
'test1',
|
112
|
+
{ 'github_username' => 'test_regex1', 'include' => ['*regex*'] },
|
113
|
+
{ 'github_username' => 'test_regex2', 'include' => '*regex*' }
|
114
|
+
] }
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
|
3
|
+
# save to CircleCI's artifacts directory if we're on CircleCI
|
4
|
+
if ENV['CIRCLE_ARTIFACTS']
|
5
|
+
dir = File.join(ENV['CIRCLE_ARTIFACTS'], 'coverage')
|
6
|
+
SimpleCov.coverage_dir(dir)
|
7
|
+
end
|
8
|
+
|
9
|
+
SimpleCov.minimum_coverage(100)
|
10
|
+
SimpleCov.start
|
11
|
+
|
12
|
+
require 'stewfinder'
|
13
|
+
require 'minitest/autorun'
|
14
|
+
require 'mocha/mini_test'
|
15
|
+
require 'pathname'
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stewfinder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Standke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: docopt
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.5'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +52,48 @@ dependencies:
|
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.8'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.8'
|
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.38'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.38'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mocha
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.1'
|
41
97
|
description: Finds stewards for a given file.
|
42
98
|
email:
|
43
99
|
- alexander.standke@appfolio.com
|
@@ -54,8 +110,15 @@ files:
|
|
54
110
|
- Rakefile
|
55
111
|
- exe/stewfinder
|
56
112
|
- lib/stewfinder.rb
|
113
|
+
- lib/stewfinder/command.rb
|
114
|
+
- lib/stewfinder/finder.rb
|
115
|
+
- lib/stewfinder/module.rb
|
57
116
|
- lib/stewfinder/version.rb
|
117
|
+
- stewards.yml
|
58
118
|
- stewfinder.gemspec
|
119
|
+
- test/command_test.rb
|
120
|
+
- test/finder_test.rb
|
121
|
+
- test/test_helper.rb
|
59
122
|
homepage: https://github.com/appfolio/stewfinder
|
60
123
|
licenses:
|
61
124
|
- MIT
|
@@ -80,5 +143,8 @@ rubygems_version: 2.4.3
|
|
80
143
|
signing_key:
|
81
144
|
specification_version: 4
|
82
145
|
summary: Get it while it's hot!
|
83
|
-
test_files:
|
146
|
+
test_files:
|
147
|
+
- test/command_test.rb
|
148
|
+
- test/finder_test.rb
|
149
|
+
- test/test_helper.rb
|
84
150
|
has_rdoc:
|