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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0a2847a778e51cf212ecec194f6b2775dfaec87
4
- data.tar.gz: fc19c435c6987f97b451390cff3065de791b0a57
3
+ metadata.gz: 8f56ad02011f3a9e8e71e0dd976d899d4b1f2662
4
+ data.tar.gz: 490bb12b8ad993b4c2e45ce724c9f98bc0efab67
5
5
  SHA512:
6
- metadata.gz: cb4db8ffb9c25ad460b57a99a23db2718b7841b0a6b7d22bdf46a6fd53792ea2201d0b09cc3e530e77b4a8fcadb145dc664b0956fa2759c7ad8a163886c0b398
7
- data.tar.gz: 5c6c6f81be6ab3ce203f08502a811bac539809b782074aba96c8e12f2641b97b21d3cfd1acfa37b87d25eb4a03e61c6646be5fce5cdc8da0ba7f464d832151dd
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/.svg)](https://www.codacy.com/app/akerl/prospectus)
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 for checking for state changes
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
@@ -7,7 +7,7 @@ RSpec::Core::RakeTask.new(:spec)
7
7
 
8
8
  desc 'Run Rubocop on the gem'
9
9
  RuboCop::RakeTask.new(:rubocop) do |task|
10
- task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
10
+ task.patterns = ['lib/**/*.rb', 'spec/**/*.rb', 'bin/*']
11
11
  task.fail_on_error = true
12
12
  end
13
13
 
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,14 @@
1
+ module LogCabin
2
+ module Modules
3
+ ##
4
+ # Pull state from a git tag
5
+ module GitTag
6
+ include Prospectus.helpers.find(:regex)
7
+
8
+ def load!
9
+ tag = `git describe --tags --abbrev=0`.chomp
10
+ @state.value = regex_helper(tag)
11
+ end
12
+ end
13
+ end
14
+ 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
@@ -0,0 +1,5 @@
1
+ ##
2
+ # Declare package version
3
+ module Prospectus
4
+ VERSION = '0.0.2'
5
+ 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 = '0.0.1'
6
+ s.version = Prospectus::VERSION
4
7
  s.date = Time.now.strftime('%Y-%m-%d')
5
8
 
6
- s.summary = 'DSL and tool for checking for state changes'
7
- s.description = "DSL and tool for checking for state changes"
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
@@ -1,2 +1 @@
1
1
  require 'spec_helper'
2
-
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.1
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-09 00:00:00.000000000 Z
11
+ date: 2015-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rubocop
14
+ name: mercenary
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.35.0
20
- type: :development
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.35.0
26
+ version: 0.3.4
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: logcabin
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 10.4.0
34
- type: :development
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: 10.4.0
40
+ version: 0.0.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: codecov
42
+ name: rubocop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.1
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.1.1
54
+ version: 0.35.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.4.0
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: 3.4.0
68
+ version: 10.4.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: fuubar
70
+ name: codecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 2.0.0
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: 2.0.0
82
+ version: 0.1.1
83
83
  - !ruby/object:Gem::Dependency
84
- name: webmock
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.22.0
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: 1.22.0
96
+ version: 3.4.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: vcr
98
+ name: fuubar
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.0.0
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: 3.0.0
111
- description: DSL and tool for checking for state changes
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.4.5.1
164
+ rubygems_version: 2.5.1
150
165
  signing_key:
151
166
  specification_version: 4
152
- summary: DSL and tool for checking for state changes
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