prospectus 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +48 -2
- data/Rakefile +1 -1
- data/bin/prospectus +25 -0
- data/lib/prospectus.rb +54 -0
- data/lib/prospectus/helpers/github_api.rb +26 -0
- data/lib/prospectus/helpers/regex.rb +20 -0
- data/lib/prospectus/item.rb +63 -0
- data/lib/prospectus/list.rb +38 -0
- data/lib/prospectus/modules/gemnasium.rb +66 -0
- data/lib/prospectus/modules/git_tag.rb +14 -0
- data/lib/prospectus/modules/github_release.rb +28 -0
- data/lib/prospectus/modules/github_tag.rb +28 -0
- data/lib/prospectus/modules/grep.rb +29 -0
- data/lib/prospectus/modules/static.rb +18 -0
- data/lib/prospectus/modules/url_xpath.rb +35 -0
- data/lib/prospectus/state.rb +27 -0
- data/lib/prospectus/version.rb +5 -0
- data/prospectus.gemspec +10 -5
- data/spec/prospectus_spec.rb +0 -1
- metadata +44 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f56ad02011f3a9e8e71e0dd976d899d4b1f2662
|
4
|
+
data.tar.gz: 490bb12b8ad993b4c2e45ce724c9f98bc0efab67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00d3aaf31da7499f7f3372644631aa422b5288828705cfaeaff12dc840c3735bc7ef240c3e090b0749e8f7d3759f75b71b6d784ab410060befecc4554e9ca378
|
7
|
+
data.tar.gz: 2bfc8e02c7460827542404d3c4c0db17fb1d7788125f0ca08790d8ced78a170f7d7cbfb5246a4b9f6d492e1480aca2e8026f494b7eeb7fad4cfd514d2366d4cc
|
data/README.md
CHANGED
@@ -5,13 +5,59 @@ prospectus
|
|
5
5
|
[![Dependency Status](https://img.shields.io/gemnasium/akerl/prospectus.svg)](https://gemnasium.com/akerl/prospectus)
|
6
6
|
[![Build Status](https://img.shields.io/circleci/project/akerl/prospectus.svg)](https://circleci.com/gh/akerl/prospectus)
|
7
7
|
[![Coverage Status](https://img.shields.io/codecov/c/github/akerl/prospectus.svg)](https://codecov.io/github/akerl/prospectus)
|
8
|
-
[![Code Quality](https://img.shields.io/codacy
|
8
|
+
[![Code Quality](https://img.shields.io/codacy/36b84b3bc7b24cd4991c4753f7788850.svg)](https://www.codacy.com/app/akerl/prospectus)
|
9
9
|
[![MIT Licensed](https://img.shields.io/badge/license-MIT-green.svg)](https://tldrlegal.com/license/mit-license)
|
10
10
|
|
11
|
-
DSL and tool
|
11
|
+
Write short scripts in a simple DSL and use the prospectus tool to check for changes in expected vs. actual state.
|
12
|
+
|
13
|
+
I use this for checking my [homebrew tap](https://github.com/halyard/homebrew-formulae) and [ArchLinux packages](https://github.com/amylum) for outdated package versions: it compares the version I'm packaging now against the upstream latest version.
|
12
14
|
|
13
15
|
## Usage
|
14
16
|
|
17
|
+
This gem reads a "./.prospectus" file to determine expected/actual state. A prospectus file can be pretty lightweight:
|
18
|
+
|
19
|
+
```
|
20
|
+
item do
|
21
|
+
name 'zlib'
|
22
|
+
|
23
|
+
expected do
|
24
|
+
github_release
|
25
|
+
repo 'madler/zlib'
|
26
|
+
regex /^v(.*)$/
|
27
|
+
end
|
28
|
+
|
29
|
+
actual do
|
30
|
+
git_tag
|
31
|
+
regex /^(.*)-\d+$/
|
32
|
+
end
|
33
|
+
end
|
34
|
+
```
|
35
|
+
|
36
|
+
Prospectus works by letting you define "items", each of which have an "expected" and "actual" block. You can specify a "name", as above, otherwise it will infer the name from the directory containing the prospectus file.
|
37
|
+
|
38
|
+
The expected/actual blocks first define the module to be used, and then define any configuration for that module.
|
39
|
+
|
40
|
+
To run the check, just run `prospectus` in the directory with the .prospectus file, or use `prospectus -d /path/to/directory`.
|
41
|
+
|
42
|
+
## Included Modules
|
43
|
+
|
44
|
+
### static_test
|
45
|
+
|
46
|
+
Used for testing, this allows you to manually declare a state:
|
47
|
+
|
48
|
+
```
|
49
|
+
item do
|
50
|
+
expected do
|
51
|
+
static_test
|
52
|
+
set '0.0.3'
|
53
|
+
end
|
54
|
+
actual do
|
55
|
+
static_test
|
56
|
+
set '0.0.1'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
15
61
|
## Installation
|
16
62
|
|
17
63
|
gem install prospectus
|
data/Rakefile
CHANGED
data/bin/prospectus
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'prospectus'
|
4
|
+
require 'mercenary'
|
5
|
+
|
6
|
+
Mercenary.program(:prospectus) do |p|
|
7
|
+
p.version Prospectus::VERSION
|
8
|
+
p.description 'Tool and DSL for checking expected vs actual state'
|
9
|
+
p.syntax 'prospectus [options]'
|
10
|
+
|
11
|
+
# rubocop:disable Metrics/LineLength
|
12
|
+
p.option :directory, '-d DIR', '--directory DIR', 'Change to directory before loading'
|
13
|
+
p.option :good_only, '-g', '--good', 'Show only items with good state'
|
14
|
+
p.option :all, '-a', '--all', 'Show all items'
|
15
|
+
# rubocop:enable Metrics/LineLength
|
16
|
+
|
17
|
+
p.action do |_, options|
|
18
|
+
options[:directory] ||= '.'
|
19
|
+
Dir.chdir(options[:directory]) do
|
20
|
+
Prospectus.load_from_file(options).check.each do |x|
|
21
|
+
puts "#{x.name}: #{x.actual} / #{x.expected}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/prospectus.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'logcabin'
|
2
|
+
|
3
|
+
##
|
4
|
+
# Tool and DSL for checking expected vs actual state
|
5
|
+
module Prospectus
|
6
|
+
DEFAULT_FILE = './.prospectus'
|
7
|
+
|
8
|
+
class << self
|
9
|
+
##
|
10
|
+
# Insert a helper .new() method for creating a new Cache object
|
11
|
+
def new(*args)
|
12
|
+
self::List.new(*args)
|
13
|
+
end
|
14
|
+
|
15
|
+
##
|
16
|
+
# Method for loading list from DSL
|
17
|
+
def load_from_file(params = {})
|
18
|
+
params[:file] ||= DEFAULT_FILE
|
19
|
+
list = List.new(params)
|
20
|
+
dsl = ListDSL.new(list, params)
|
21
|
+
dsl.instance_eval(File.read(params[:file]), params[:file])
|
22
|
+
list
|
23
|
+
end
|
24
|
+
|
25
|
+
def modules
|
26
|
+
@modules ||= LogCabin.new(load_path: load_path(:modules))
|
27
|
+
end
|
28
|
+
|
29
|
+
def helpers
|
30
|
+
@helpers ||= LogCabin.new(load_path: load_path(:helpers))
|
31
|
+
end
|
32
|
+
|
33
|
+
def extra_dep(name, dep)
|
34
|
+
require dep
|
35
|
+
rescue LoadError
|
36
|
+
raise("The #{name} module requires the #{dep} gem")
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def gem_dir
|
42
|
+
Gem::Specification.find_by_name('prospectus').gem_dir
|
43
|
+
end
|
44
|
+
|
45
|
+
def load_path(type)
|
46
|
+
File.join(gem_dir, 'lib', 'prospectus', type.to_s)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
require 'prospectus/version'
|
52
|
+
require 'prospectus/list'
|
53
|
+
require 'prospectus/item'
|
54
|
+
require 'prospectus/state'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Prospectus.extra_dep('github_api', 'octoauth')
|
2
|
+
|
3
|
+
module LogCabin
|
4
|
+
module Modules
|
5
|
+
##
|
6
|
+
# Provide an api method for modules to query GitHub
|
7
|
+
module GithubApi
|
8
|
+
def github_api
|
9
|
+
@github_api ||= Octokit::Client.new(
|
10
|
+
access_token: auth.token,
|
11
|
+
auto_paginate: true
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def auth
|
18
|
+
@auth ||= Octoauth.new(
|
19
|
+
note: 'Prospectus',
|
20
|
+
file: :default,
|
21
|
+
autosave: true
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module LogCabin
|
2
|
+
module Modules
|
3
|
+
##
|
4
|
+
# Use regex to adjust state value
|
5
|
+
module Regex
|
6
|
+
def regex_helper(value)
|
7
|
+
return value unless @find
|
8
|
+
fail("Value does not match regex: #{value}") unless value.match(@find)
|
9
|
+
value.sub(@find, @replace)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def regex(find, replace = '\1')
|
15
|
+
@find = find
|
16
|
+
@replace = replace
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Prospectus
|
2
|
+
##
|
3
|
+
# Define item objects that defined expected vs actual state
|
4
|
+
class Item
|
5
|
+
attr_reader :list
|
6
|
+
|
7
|
+
def initialize(params = {})
|
8
|
+
@options = params
|
9
|
+
@list = List.new(params)
|
10
|
+
end
|
11
|
+
|
12
|
+
def name
|
13
|
+
@name ||= File.basename Dir.pwd
|
14
|
+
end
|
15
|
+
|
16
|
+
def expected
|
17
|
+
@expected || fail("No expected state was loaded for #{name}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def actual
|
21
|
+
@actual || fail("No actual state was loaded for #{name}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# DSL for wrapping eval of item files
|
27
|
+
class ItemDSL
|
28
|
+
def initialize(item, params)
|
29
|
+
@item = item
|
30
|
+
@options = params
|
31
|
+
end
|
32
|
+
|
33
|
+
def name(value)
|
34
|
+
@item.instance_variable_set(:@name, value)
|
35
|
+
end
|
36
|
+
|
37
|
+
def expected(&block)
|
38
|
+
state(:@expected, &block)
|
39
|
+
end
|
40
|
+
|
41
|
+
def actual(&block)
|
42
|
+
state(:@actual, &block)
|
43
|
+
end
|
44
|
+
|
45
|
+
def deps(&block)
|
46
|
+
dsl = ListDSL.new(@item.list, @options)
|
47
|
+
dsl.instance_eval(&block)
|
48
|
+
@item.list.items.each do |dep|
|
49
|
+
dep.instance_variable_set(:@name, "#{@item.name}::#{dep.name}")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def state(name, &block)
|
56
|
+
state = State.new(@options)
|
57
|
+
dsl = StateDSL.new(state, @options)
|
58
|
+
dsl.instance_eval(&block)
|
59
|
+
dsl.load!
|
60
|
+
@item.instance_variable_set(name, state.value)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Prospectus
|
2
|
+
##
|
3
|
+
# Define list object that contains items
|
4
|
+
class List
|
5
|
+
def initialize(params = {})
|
6
|
+
@options = params
|
7
|
+
end
|
8
|
+
|
9
|
+
def items
|
10
|
+
@items ||= []
|
11
|
+
end
|
12
|
+
|
13
|
+
def check
|
14
|
+
all, good_only = @options.values_at(:all, :good_only)
|
15
|
+
items.select do |x|
|
16
|
+
match = x.expected == x.actual
|
17
|
+
true if all || (!match ^ good_only)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# DSL for wrapping eval of list files
|
24
|
+
class ListDSL
|
25
|
+
def initialize(list, params)
|
26
|
+
@list = list
|
27
|
+
@options = params
|
28
|
+
end
|
29
|
+
|
30
|
+
def item(&block)
|
31
|
+
item = Item.new(@options)
|
32
|
+
dsl = ItemDSL.new(item, @options)
|
33
|
+
dsl.instance_eval(&block)
|
34
|
+
@list.items << item
|
35
|
+
item.list.items.each { |x| @list.items << x }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
Prospectus.extra_dep('gemnasium', 'netrc')
|
2
|
+
require 'net/http'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module LogCabin
|
6
|
+
module Modules
|
7
|
+
##
|
8
|
+
# Pull state from Gemnasium
|
9
|
+
module Gemnasium
|
10
|
+
def load!
|
11
|
+
fail('No slug provided') unless @slug
|
12
|
+
@state.value = parse_api
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def parse_api
|
18
|
+
%w(red yellow).each do |color|
|
19
|
+
return color if colors.include? color
|
20
|
+
end
|
21
|
+
'green'
|
22
|
+
end
|
23
|
+
|
24
|
+
def colors
|
25
|
+
@colors ||= api_data.map { |x| x['first_level'] && x['color'] }
|
26
|
+
end
|
27
|
+
|
28
|
+
def api_data
|
29
|
+
@resp ||= Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
30
|
+
request = Net::HTTP::Get.new uri.request_uri
|
31
|
+
request.basic_auth(*creds)
|
32
|
+
response = http.request(request)
|
33
|
+
JSON.parse(response.body)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def creds
|
38
|
+
netrc[site] || prompt_for_creds
|
39
|
+
end
|
40
|
+
|
41
|
+
def prompt_for_creds
|
42
|
+
puts 'Please enter your API key from https://gemnasium.com/settings >> '
|
43
|
+
resp = gets.chomp
|
44
|
+
netrc[site] = 'X', resp
|
45
|
+
netrc.save
|
46
|
+
netrc[site]
|
47
|
+
end
|
48
|
+
|
49
|
+
def netrc
|
50
|
+
@netrc ||= Netrc.read
|
51
|
+
end
|
52
|
+
|
53
|
+
def uri
|
54
|
+
@uri ||= URI("https://api.gemnasium.com/projects/#{@slug}/dependencies")
|
55
|
+
end
|
56
|
+
|
57
|
+
def site
|
58
|
+
'gemnasium.com'
|
59
|
+
end
|
60
|
+
|
61
|
+
def slug(value)
|
62
|
+
@slug = value
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
module LogCabin
|
5
|
+
module Modules
|
6
|
+
##
|
7
|
+
# Pull state from a GitHub release
|
8
|
+
module GithubRelease
|
9
|
+
include Prospectus.helpers.find(:regex)
|
10
|
+
include Prospectus.helpers.find(:github_api)
|
11
|
+
|
12
|
+
def load!
|
13
|
+
fail('No repo specified') unless @repo
|
14
|
+
@state.value = regex_helper(release)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def release
|
20
|
+
@release ||= github_api.latest_release(@repo).tag_name
|
21
|
+
end
|
22
|
+
|
23
|
+
def repo(value)
|
24
|
+
@repo = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
module LogCabin
|
5
|
+
module Modules
|
6
|
+
##
|
7
|
+
# Pull state from a GitHub tag
|
8
|
+
module GithubTag
|
9
|
+
include Prospectus.helpers.find(:regex)
|
10
|
+
include Prospectus.helpers.find(:github_api)
|
11
|
+
|
12
|
+
def load!
|
13
|
+
fail('No repo specified') unless @repo
|
14
|
+
@state.value = regex_helper(tag)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def tag
|
20
|
+
@tag ||= github_api.tags(@repo).first.name
|
21
|
+
end
|
22
|
+
|
23
|
+
def repo(value)
|
24
|
+
@repo = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module LogCabin
|
2
|
+
module Modules
|
3
|
+
##
|
4
|
+
# Pull state from a local file
|
5
|
+
module Grep
|
6
|
+
include Prospectus.helpers.find(:regex)
|
7
|
+
|
8
|
+
def load!
|
9
|
+
fail('No file specified') unless @file
|
10
|
+
line = read_file
|
11
|
+
@state.value = regex_helper(line)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def read_file
|
17
|
+
File.read(@file).each_line do |line|
|
18
|
+
line = line.chomp
|
19
|
+
return line if line.match(@find)
|
20
|
+
end
|
21
|
+
fail("No lines in #{@file} matched #{@find}")
|
22
|
+
end
|
23
|
+
|
24
|
+
def file(value)
|
25
|
+
@file = value
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module LogCabin
|
2
|
+
module Modules
|
3
|
+
##
|
4
|
+
# Simple text class, uses "set 'value'" to declare value
|
5
|
+
module Static
|
6
|
+
def load!
|
7
|
+
fail('Must use `set` to provide a value') unless @value
|
8
|
+
@state.value = @value
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def set(value)
|
14
|
+
@value = value
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Prospectus.extra_dep('url_xpath', 'nokogiri')
|
2
|
+
|
3
|
+
require 'open-uri'
|
4
|
+
|
5
|
+
module LogCabin
|
6
|
+
module Modules
|
7
|
+
##
|
8
|
+
# Pull state from a GitHub tag
|
9
|
+
module UrlXpath
|
10
|
+
include Prospectus.helpers.find(:regex)
|
11
|
+
|
12
|
+
def load!
|
13
|
+
fail('No url provided') unless @url
|
14
|
+
fail('No xpath provided') unless @xpath
|
15
|
+
text = parse_page
|
16
|
+
@state.value = regex_helper(text)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def parse_page
|
22
|
+
page = Nokogiri::HTML(open(@url)) { |config| config.strict.nonet }
|
23
|
+
page.xpath(@xpath).text
|
24
|
+
end
|
25
|
+
|
26
|
+
def url(value)
|
27
|
+
@url = value
|
28
|
+
end
|
29
|
+
|
30
|
+
def xpath(value)
|
31
|
+
@xpath = value
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Prospectus
|
2
|
+
##
|
3
|
+
# Define a state object that supports modular checks
|
4
|
+
class State
|
5
|
+
attr_accessor :value
|
6
|
+
|
7
|
+
def initialize(params = {})
|
8
|
+
@options = params
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# DSL for wrapping eval of states
|
14
|
+
class StateDSL
|
15
|
+
def initialize(state, params)
|
16
|
+
@state = state
|
17
|
+
@options = params
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing(method, *args, &block)
|
21
|
+
return super if @module
|
22
|
+
@module = Prospectus.modules.find(method)
|
23
|
+
return super unless @module
|
24
|
+
extend @module
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/prospectus.gemspec
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
+
$:.unshift File.expand_path('../lib/', __FILE__)
|
2
|
+
require 'prospectus/version'
|
3
|
+
|
1
4
|
Gem::Specification.new do |s|
|
2
5
|
s.name = 'prospectus'
|
3
|
-
s.version =
|
6
|
+
s.version = Prospectus::VERSION
|
4
7
|
s.date = Time.now.strftime('%Y-%m-%d')
|
5
8
|
|
6
|
-
s.summary = '
|
7
|
-
s.description = "
|
9
|
+
s.summary = 'Tool and DSL for checking expected vs actual state'
|
10
|
+
s.description = "Tool and DSL for checking expected vs actual state"
|
8
11
|
s.authors = ['Les Aker']
|
9
12
|
s.email = 'me@lesaker.org'
|
10
13
|
s.homepage = 'https://github.com/akerl/prospectus'
|
@@ -12,12 +15,14 @@ Gem::Specification.new do |s|
|
|
12
15
|
|
13
16
|
s.files = `git ls-files`.split
|
14
17
|
s.test_files = `git ls-files spec/*`.split
|
18
|
+
s.executables = ['prospectus']
|
19
|
+
|
20
|
+
s.add_dependency 'mercenary', '~> 0.3.4'
|
21
|
+
s.add_dependency 'logcabin', '~> 0.0.1'
|
15
22
|
|
16
23
|
s.add_development_dependency 'rubocop', '~> 0.35.0'
|
17
24
|
s.add_development_dependency 'rake', '~> 10.4.0'
|
18
25
|
s.add_development_dependency 'codecov', '~> 0.1.1'
|
19
26
|
s.add_development_dependency 'rspec', '~> 3.4.0'
|
20
27
|
s.add_development_dependency 'fuubar', '~> 2.0.0'
|
21
|
-
s.add_development_dependency 'webmock', '~> 1.22.0'
|
22
|
-
s.add_development_dependency 'vcr', '~> 3.0.0'
|
23
28
|
end
|
data/spec/prospectus_spec.rb
CHANGED
metadata
CHANGED
@@ -1,116 +1,117 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prospectus
|
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
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: mercenary
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
20
|
-
type: :
|
19
|
+
version: 0.3.4
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.3.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: logcabin
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 0.0.1
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.0.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rubocop
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.35.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.35.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 10.4.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 10.4.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: codecov
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.1.1
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.1.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 3.4.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 3.4.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: fuubar
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 2.0.0
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
description:
|
110
|
+
version: 2.0.0
|
111
|
+
description: Tool and DSL for checking expected vs actual state
|
112
112
|
email: me@lesaker.org
|
113
|
-
executables:
|
113
|
+
executables:
|
114
|
+
- prospectus
|
114
115
|
extensions: []
|
115
116
|
extra_rdoc_files: []
|
116
117
|
files:
|
@@ -121,8 +122,22 @@ files:
|
|
121
122
|
- LICENSE
|
122
123
|
- README.md
|
123
124
|
- Rakefile
|
125
|
+
- bin/prospectus
|
124
126
|
- circle.yml
|
125
127
|
- lib/prospectus.rb
|
128
|
+
- lib/prospectus/helpers/github_api.rb
|
129
|
+
- lib/prospectus/helpers/regex.rb
|
130
|
+
- lib/prospectus/item.rb
|
131
|
+
- lib/prospectus/list.rb
|
132
|
+
- lib/prospectus/modules/gemnasium.rb
|
133
|
+
- lib/prospectus/modules/git_tag.rb
|
134
|
+
- lib/prospectus/modules/github_release.rb
|
135
|
+
- lib/prospectus/modules/github_tag.rb
|
136
|
+
- lib/prospectus/modules/grep.rb
|
137
|
+
- lib/prospectus/modules/static.rb
|
138
|
+
- lib/prospectus/modules/url_xpath.rb
|
139
|
+
- lib/prospectus/state.rb
|
140
|
+
- lib/prospectus/version.rb
|
126
141
|
- prospectus.gemspec
|
127
142
|
- spec/prospectus_spec.rb
|
128
143
|
- spec/spec_helper.rb
|
@@ -146,10 +161,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
161
|
version: '0'
|
147
162
|
requirements: []
|
148
163
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
164
|
+
rubygems_version: 2.5.1
|
150
165
|
signing_key:
|
151
166
|
specification_version: 4
|
152
|
-
summary:
|
167
|
+
summary: Tool and DSL for checking expected vs actual state
|
153
168
|
test_files:
|
154
169
|
- spec/prospectus_spec.rb
|
155
170
|
- spec/spec_helper.rb
|