gitrepo-status 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b979a4d611c8f5099bf6380f8e883a6b138df0e6
4
+ data.tar.gz: c259ac14668a39758ca09501d072693ee7fc8ae0
5
+ SHA512:
6
+ metadata.gz: e886cdc94a97da335e871ec7fa9efffbed9d8068aa90487a7bb13675a675de85e0dbe705d4cdd8112e0ad5ff0947f61e5b8c446a5e2f23ce7225c9c9b0ae05e4
7
+ data.tar.gz: 99ea3a3198a89ce4f80a312f66a13dc103a6d8afe472b120cd93ba7b71d8366c30ccccecafddca4a5a8bf4ca220b5b69a764edeb80eacbbcda9d870b1f78331a
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /vendor/
10
+ /vagrant/.vagrant
11
+
12
+ # rspec failure tracking
13
+ .rspec_status
14
+ puppet-control-repo
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.2
5
+ before_install: gem install bundler -v 1.16.0
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in gitrepo-status.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gitrepo-status (0.2.0)
5
+ awesome_print
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ awesome_print (1.8.0)
11
+ diff-lcs (1.3)
12
+ rake (12.3.1)
13
+ rspec (3.7.0)
14
+ rspec-core (~> 3.7.0)
15
+ rspec-expectations (~> 3.7.0)
16
+ rspec-mocks (~> 3.7.0)
17
+ rspec-core (3.7.1)
18
+ rspec-support (~> 3.7.0)
19
+ rspec-expectations (3.7.0)
20
+ diff-lcs (>= 1.2.0, < 2.0)
21
+ rspec-support (~> 3.7.0)
22
+ rspec-mocks (3.7.0)
23
+ diff-lcs (>= 1.2.0, < 2.0)
24
+ rspec-support (~> 3.7.0)
25
+ rspec-support (3.7.1)
26
+
27
+ PLATFORMS
28
+ ruby
29
+
30
+ DEPENDENCIES
31
+ bundler (~> 1.16)
32
+ gitrepo-status!
33
+ rake (~> 12.0)
34
+ rspec (~> 3.7)
35
+
36
+ BUNDLED WITH
37
+ 1.16.1
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Gitrepo::Status
2
+
3
+ ## Idea
4
+
5
+ - Check current status/commit of a repo
6
+ - compare with remotes and extra urls
7
+ - get source url from metadata.json for puppet modules
8
+ - get puppetforge version for puppet modules
9
+
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'gitrepo-status'
17
+ ```
18
+
19
+ And then execute:
20
+
21
+ $ bundle
22
+
23
+ Or install it yourself as:
24
+
25
+ $ gem install gitrepo-status
26
+
27
+ ## Usage
28
+
29
+ TODO: Write usage instructions here
30
+
31
+ ## Development
32
+
33
+ A 'vagrant/Vagrantfile' is provided to ease development on Debian Stretch.
34
+
35
+ The vagrant setup installs the required package ruby-rugged.
36
+ This is because installing/building the rugged gem is a pain in ...
37
+
38
+ The current repo will be available in '/build' in the VM.
39
+
40
+
41
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
42
+
43
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
44
+
45
+ ## Contributing
46
+
47
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gitrepo-status.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'gitrepo/status'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install --path vendor/
7
+
8
+ # Do any other automated setup that you need to do here
data/changelog.md ADDED
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ Version format based on http://semver.org/
5
+
6
+ ## [Unreleased]
7
+
8
+ ## [0.1.0] - 2018-03-27
9
+ ### Added
10
+ - gitrepo-status cli script
11
+
12
+ ## [0.0.0] - 2018-03-27
13
+ ### Added
14
+ - ...
15
+
16
+ ### Changed
17
+ - ...
18
+
19
+ ### Removed
20
+ - ...
@@ -0,0 +1,213 @@
1
+ #!/usr/bin/env ruby
2
+ require 'getoptlong'
3
+ require 'gitrepo/status'
4
+ require 'awesome_print'
5
+ require 'yaml'
6
+ require 'json'
7
+
8
+ class Hash
9
+ def to_html
10
+ [
11
+ '<ul>',
12
+ map { |k, v| ["<li><strong>#{k}:</strong> ", v.respond_to?(:to_html) ? v.to_html : "<span>#{v}</span></li>"] },
13
+ '</ul>'
14
+ ].join
15
+ end
16
+ end
17
+
18
+ def clidoc
19
+ puts <<-CLIDOC
20
+
21
+ #{$PROGRAM_NAME} [OPTION]
22
+
23
+ -h, --help:
24
+ show help
25
+
26
+ -d, --debug [level]:
27
+ Debug level.
28
+
29
+ -p, --path [location of repo to check]
30
+ Path to a location of the repo to check.
31
+ Default '.' (Current directory)
32
+ If this ends in '/' the script will loop over
33
+ all subdirectories. These should all be git repos.
34
+
35
+ -o, --output [txt|raw|html|yaml|json|...].
36
+ Multiple types specified by comma separated string.
37
+ eg : -o txt,html
38
+ Default 'txt'
39
+
40
+ -a, --ahead_behind
41
+ Show how many commits current commit is ahead or behind remote.
42
+
43
+ --puppet
44
+ Report puppet module info from metadata.json
45
+
46
+ -t, --tests
47
+ Run some test code...
48
+
49
+ CLIDOC
50
+ end
51
+
52
+ opts = GetoptLong.new(
53
+ ['--help', '-h', GetoptLong::NO_ARGUMENT],
54
+ ['--debug', '-d', GetoptLong::OPTIONAL_ARGUMENT],
55
+ ['--path', '-p', GetoptLong::REQUIRED_ARGUMENT],
56
+ ['--output', '-o', GetoptLong::REQUIRED_ARGUMENT],
57
+ ['--ahead_behind', '-a', GetoptLong::NO_ARGUMENT],
58
+ ['--puppet', GetoptLong::NO_ARGUMENT],
59
+ ['--test', '-t', GetoptLong::NO_ARGUMENT]
60
+ )
61
+
62
+ debug = 0
63
+ path = '.'
64
+ output = ['txt']
65
+ ahead_behind = false
66
+ puppet = false
67
+ test = false
68
+
69
+ opts.each do |opt, arg|
70
+ case opt
71
+ when '--help'
72
+ clidoc
73
+ exit
74
+ when '--debug'
75
+ debug = if arg == ''
76
+ 1
77
+ else
78
+ arg.to_i
79
+ end
80
+ when '--path'
81
+ path = arg
82
+ when '--output'
83
+ output = arg.split(',')
84
+ when '--ahead_behind'
85
+ ahead_behind = true
86
+ when '--puppet'
87
+ puppet = true
88
+ when '--test'
89
+ test = true
90
+ end
91
+ end
92
+
93
+ OR = output.include?('raw')
94
+ OT = output.include?('txt')
95
+ OH = output.include?('html')
96
+ OY = output.include?('yaml')
97
+ OJ = output.include?('json')
98
+
99
+ paths = if path.end_with? '/'
100
+ Dir.glob("#{path}*/")
101
+ else
102
+ [path]
103
+ end
104
+
105
+ result = {}
106
+
107
+ def o_t_p(obj, ap_p = false)
108
+ return unless OT
109
+ if ap_p
110
+ ap obj
111
+ else
112
+ puts obj
113
+ end
114
+ end
115
+
116
+ def o_t_r(obj)
117
+ return unless OR
118
+ ap obj
119
+ end
120
+
121
+ def o_t_h(obj)
122
+ return unless OH
123
+ html_str = %(
124
+ <!DOCTYPE html>
125
+ <html>
126
+ <head>
127
+ <meta charset="UTF-8">
128
+ <meta name="viewport" content="width=device-width,initial-scale=1">
129
+ <title>Puppet Module version report</title>
130
+ <meta name="author" content="gitrepo-status">
131
+ <meta name="description" content="Puppet Module Git repo status">
132
+ <link rel="stylesheet" href="stylesheet.css" type="text/css">
133
+ <style type="text/css">
134
+
135
+ </style>
136
+ </head>
137
+ <body>
138
+
139
+ #{obj.to_html}
140
+
141
+ </body>
142
+ </html>
143
+ )
144
+ puts html_str
145
+ end
146
+
147
+ def o_t_y(obj)
148
+ return unless OY
149
+ puts obj.to_yaml
150
+ end
151
+
152
+ def o_t_j(obj)
153
+ return unless OJ
154
+ puts obj.to_json
155
+ end
156
+
157
+ paths.each do |path|
158
+ o_t_p "Path : #{path}"
159
+ r = {}
160
+
161
+ gitrepo = Gitrepo::Status.new(path: path)
162
+
163
+ gitrepo.fetch_all
164
+
165
+ gitrepo.test if test
166
+
167
+ r = {}
168
+
169
+ if ahead_behind
170
+ a_b = gitrepo.ahead_behind
171
+ unless a_b.nil?
172
+ a_b.each do |name, data|
173
+ r[name] ||= {}
174
+ o_t_p "-- Branch : #{name}"
175
+ if (data[0]).zero? && (data[1]).zero?
176
+ o_t_p ' Branch up to date.'
177
+ else
178
+ o_t_p " ahead : #{data[0]} commits"
179
+ o_t_p " behind : #{data[1]} commits"
180
+ end
181
+ r[name]['ahead - behind'] = data
182
+ end
183
+ end
184
+ end
185
+
186
+ if puppet && gitrepo.puppet_module?
187
+ diff = gitrepo.puppet_module_info
188
+ keys = %w[version dependencies requirements]
189
+ unless diff.empty?
190
+ diff.each do |name, data|
191
+ r[name] ||= {}
192
+ r[name]['puppet'] ||= {}
193
+ o_t_p "--- metadata difference with branch : #{name} (keys #{keys})"
194
+ data.select { |key, _| keys.include?(key) }.each do |k, v|
195
+ o_t_p " Key : #{k}"
196
+ o_t_p ' Old : '
197
+ o_t_p v[0], true
198
+ o_t_p ' New : '
199
+ o_t_p v[1], true
200
+ r[name]['puppet'][k] = { 'Old' => v[0], 'New' => v[1] }
201
+ end
202
+ end
203
+ end
204
+ end
205
+ result[path] = r
206
+ end
207
+
208
+ o_t_r result
209
+ o_t_h result
210
+ o_t_y result
211
+ o_t_j result
212
+
213
+ # vim:set fileencoding=utf8 fileformat=undefined filetype=ruby tabstop=2 expandtab:
@@ -0,0 +1,38 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'gitrepo/status/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'gitrepo-status'
7
+ spec.version = Gitrepo::Status::VERSION
8
+ spec.authors = ['Stefan - Zipkid - Goethals']
9
+ spec.email = ['stefan@zipkid.eu']
10
+
11
+ spec.summary = 'Gitrepo status checker'
12
+ spec.description = 'Check status of a gitrepo compared to upstream and other source urls'
13
+ spec.homepage = 'https://github.com/vrtdev/gitrepo-status'
14
+
15
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
16
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
17
+ if spec.respond_to?(:metadata)
18
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
19
+ else
20
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
21
+ 'public gem pushes.'
22
+ end
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
25
+ f.match(%r{^(test|spec|features)/})
26
+ end
27
+ spec.bindir = 'exe'
28
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ['lib']
30
+
31
+ spec.add_development_dependency 'bundler', '~> 1.16'
32
+ spec.add_development_dependency 'rake', '~> 12.0'
33
+ spec.add_development_dependency 'rspec', '~> 3.7'
34
+
35
+ # Building rugged is a pain, install system package 'ruby-rugged' instead.
36
+ # spec.add_runtime_dependency 'rugged'
37
+ spec.add_runtime_dependency 'awesome_print'
38
+ end
@@ -0,0 +1,5 @@
1
+ class Gitrepo
2
+ class Status
3
+ VERSION = '0.2.0'.freeze
4
+ end
5
+ end
@@ -0,0 +1,150 @@
1
+ require 'gitrepo/status/version'
2
+ require 'rugged'
3
+ require 'json'
4
+
5
+ # Class Gitrepo
6
+ class Gitrepo
7
+ # Class Gitrepo::Status
8
+ class Status
9
+ def initialize(opt = {})
10
+ @path = opt.fetch(:path)
11
+ @report_branches = opt[:report_branches] || %w[master]
12
+ repo
13
+ end
14
+
15
+ def repo
16
+ return @repo if @repo
17
+ @repo = Rugged::Repository.discover(@path)
18
+ @basepath = repo.path.chomp('/.git/')
19
+ @repo
20
+ end
21
+
22
+ def fetch_all
23
+ # libgit2 and https... a dificult story... :-(
24
+ # remotes.each do |remote|
25
+ # repo.fetch remote.name
26
+ # end
27
+ cmd1 = 'git branch -r | grep -v "\->" | while read remote; do git branch --track "${remote#origin/}" "$remote" > /dev/null 2>&1; done'
28
+ cmd2 = 'git fetch --all > /dev/null 2>&1'
29
+ Dir.chdir(@path) do
30
+ `#{cmd1}`
31
+ `#{cmd2}`
32
+ end
33
+ end
34
+
35
+ def puppet_module?
36
+ !repo.index.get('metadata.json').nil?
37
+ end
38
+
39
+ def branchnames
40
+ branches_txt = ''
41
+ Dir.chdir(@path) do
42
+ branches_txt = `git branch --contains HEAD | grep -v 'detached at'`
43
+ end
44
+ branches = branches_txt.split("\n").map(&:strip)
45
+ branches.insert(0, branches.delete('master')) if branches.include?('master')
46
+ select_branches(branches)
47
+ end
48
+
49
+ def select_branches(branches)
50
+ return branches if @report_branches.empty?
51
+ b = branches.select { |e| @report_branches.include?(e) }
52
+ return b unless b.empty?
53
+ branches
54
+ end
55
+
56
+ def ahead_behind
57
+ branches = {}
58
+ branchnames.each do |branch|
59
+ branches[branch] = repo.ahead_behind(repo.head.target_id, "origin/#{branch}")
60
+ end
61
+ branches
62
+ end
63
+
64
+ def puppet_module_info
65
+ blob = repo.blob_at(repo.head.target_id, 'metadata.json')
66
+ current_metadata = JSON.parse(blob.content)
67
+ diff = {}
68
+ branchnames.each do |branch|
69
+ blob = repo.blob_at(repo.branches[branch].target_id, 'metadata.json')
70
+ branch_metadata = JSON.parse(blob.content)
71
+ branch_diff = deep_diff(current_metadata, branch_metadata)
72
+ diff[branch] = branch_diff unless branch_diff.empty?
73
+ end
74
+ diff
75
+ end
76
+
77
+ def test
78
+ require 'awesome_print'
79
+ # puts '--- repo.methods ---'
80
+ # ap repo.methods
81
+ puts '--- repo.path ---'
82
+ ap repo.path
83
+
84
+ ap repo.index.get('metadata.json')
85
+
86
+ puts '--- repo.last_commit ---'
87
+ ap repo.last_commit.tree_id
88
+
89
+ puts "Is Puppet Module? (has '/metadata.json'?) : #{puppet_module?}"
90
+ head = repo.head
91
+ puts '--- repo.head ---'
92
+ ap head
93
+
94
+ # sha1 hash of the newest commit
95
+ head_sha = head.target_id
96
+ puts '--- repo.head.target_id ---'
97
+ ap head_sha
98
+
99
+ ap repo.ahead_behind(head_sha, 'origin/master')
100
+
101
+ puts '--- repo remotes ---'
102
+ repo.remotes.each do |remote|
103
+ # ap remote.methods
104
+ ap remote.url
105
+ end
106
+
107
+ puts '--- repo branch ---'
108
+ repo.branches.each do |branch|
109
+ # ap branch.methods
110
+ ap branch.name
111
+ ap branch.head?
112
+ ap branch.upstream
113
+ end
114
+
115
+ # # the commit message associated the newest commit
116
+ # commit = repo.lookup(head_sha)
117
+ # puts '--- repo.lookup(repo.head.target_id) ---'
118
+ # pp commit
119
+ #
120
+ # puts '--- repo object methods ---'
121
+ # ap repo.methods
122
+ #
123
+ puts '--- repo remotes ---'
124
+ repo.remotes.each do |remote|
125
+ # ap remote.methods
126
+ ap remote.name
127
+ ap remote.url
128
+ end
129
+ #
130
+ # puts '--- repo branch ---'
131
+ # repo.branches.each do |branch|
132
+ # ap branch.methods
133
+ # ap branch.name
134
+ # end
135
+ end
136
+
137
+ def deep_diff(a, b)
138
+ (a.keys | b.keys).each_with_object({}) do |k, diff|
139
+ if a[k] != b[k]
140
+ diff[k] = if a[k].is_a?(Hash) && b[k].is_a?(Hash)
141
+ deep_diff(a[k], b[k])
142
+ else
143
+ diff[k] = [a[k], b[k]]
144
+ end
145
+ end
146
+ diff
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+
3
+ set -x
4
+
5
+ apt-get -y update
6
+
7
+ apt-get -y upgrade
8
+
9
+ apt-get install -y git curl rubygems ruby-rugged
10
+
11
+ gem install bundler
@@ -0,0 +1,16 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # All Vagrant configuration is done below. The "2" in Vagrant.configure
5
+ # configures the configuration version (we support older styles for
6
+ # backwards compatibility). Please don't change it unless you know what
7
+ # you're doing.
8
+ Vagrant.configure('2') do |config|
9
+ config.vbguest.auto_update = false
10
+ config.vm.synced_folder '../', '/build'
11
+
12
+ config.vm.define :stretch do |stretch|
13
+ stretch.vm.box = 'generic/debian9'
14
+ stretch.vm.provision :shell, name: 'install tools', path: '../script/shell/installer'
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gitrepo-status
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Stefan - Zipkid - Goethals
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-08-24 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.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: awesome_print
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Check status of a gitrepo compared to upstream and other source urls
70
+ email:
71
+ - stefan@zipkid.eu
72
+ executables:
73
+ - gitrepo-status
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - ".rspec"
79
+ - ".travis.yml"
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - README.md
83
+ - Rakefile
84
+ - bin/console
85
+ - bin/setup
86
+ - changelog.md
87
+ - exe/gitrepo-status
88
+ - gitrepo-status.gemspec
89
+ - lib/gitrepo/status.rb
90
+ - lib/gitrepo/status/version.rb
91
+ - script/shell/installer
92
+ - vagrant/Vagrantfile
93
+ homepage: https://github.com/vrtdev/gitrepo-status
94
+ licenses: []
95
+ metadata:
96
+ allowed_push_host: https://rubygems.org
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubyforge_project:
113
+ rubygems_version: 2.5.2.1
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Gitrepo status checker
117
+ test_files: []