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