git-check-ci 0.1.0

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.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,57 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ git-check-ci (0.1.0)
5
+ daemons
6
+ httparty
7
+ json
8
+ thor
9
+
10
+ GEM
11
+ remote: http://rubygems.org/
12
+ specs:
13
+ coderay (1.0.7)
14
+ daemons (1.1.8)
15
+ diff-lcs (1.1.3)
16
+ httparty (0.8.3)
17
+ multi_json (~> 1.0)
18
+ multi_xml
19
+ json (1.7.3)
20
+ method_source (0.7.1)
21
+ multi_json (1.3.6)
22
+ multi_xml (0.5.1)
23
+ pry (0.9.9.6)
24
+ coderay (~> 1.0.5)
25
+ method_source (~> 0.7.1)
26
+ slop (>= 2.4.4, < 3)
27
+ pry-doc (0.4.2)
28
+ pry (>= 0.9.0)
29
+ yard (~> 0.8.1)
30
+ pry-nav (0.2.1)
31
+ pry (~> 0.9.9)
32
+ rake (0.9.2.2)
33
+ rspec (2.10.0)
34
+ rspec-core (~> 2.10.0)
35
+ rspec-expectations (~> 2.10.0)
36
+ rspec-mocks (~> 2.10.0)
37
+ rspec-core (2.10.1)
38
+ rspec-expectations (2.10.0)
39
+ diff-lcs (~> 1.1.3)
40
+ rspec-mocks (2.10.1)
41
+ ruby-prof (0.10.8)
42
+ slop (2.4.4)
43
+ thor (0.15.3)
44
+ yard (0.8.2.1)
45
+
46
+ PLATFORMS
47
+ ruby
48
+
49
+ DEPENDENCIES
50
+ bundler
51
+ git-check-ci!
52
+ pry
53
+ pry-doc
54
+ pry-nav
55
+ rake
56
+ rspec
57
+ ruby-prof
data/README.md ADDED
@@ -0,0 +1,83 @@
1
+ ## git-check-ci
2
+
3
+ Display your continuous integration status in your prompt!
4
+ This tool helps you decorate your command line with `✗` for failed builds and `✔` for successful builds.
5
+
6
+ It assumes you're running a CI server that responds to a `/:project/ping` endpoint with status 200 on build successes.
7
+
8
+ ### Installing
9
+
10
+ As simple as it gets:
11
+
12
+ gem install git-check-ci
13
+
14
+
15
+ ### Configuring
16
+
17
+ Go to a Git clone of the project you've placed under CI:
18
+
19
+ $ cd <my-repository>
20
+
21
+ Run the setup command:
22
+
23
+ $ git check-ci setup
24
+
25
+ What is the URL of your CI server? [currently unset]
26
+ > http://my-integrity-server:port
27
+
28
+ What is the name of the project you're checking? [currently unset]
29
+ > integrity-project-name
30
+
31
+ If the server requires a login, what should I use? [currently unset]
32
+ > john.mcfoo
33
+
34
+ with which passphrase? [currently unset]
35
+
36
+ Setup is now complete. Doing a test run.
37
+ All good! Now the 'check' and 'fast-check' commands should work.
38
+
39
+ Add it to your prompt:
40
+
41
+ --- add me to e.g. ~/.profile ---
42
+ eval "$(git check-ci init)"
43
+ export PS1="\$(GitCheckCI) \u\$"
44
+
45
+ Reload your shell:
46
+
47
+ $ exec $SHELL -l
48
+
49
+ You're done! You should see the following while it's starting up:
50
+
51
+ ? mezis$
52
+
53
+ And after hitting return a few times, assuming your build is broken:
54
+
55
+ ✗ mezis$
56
+
57
+ It's red... Time to make it green and refactor!
58
+ Happy coding!
59
+
60
+
61
+ ### Status icons
62
+
63
+ This tool will show:
64
+
65
+ - nothing when not in a Git repository.
66
+ - `✗` for failed builds.
67
+ - `✔` for successful builds.
68
+ - `●` when the latest build is pending or in progress.
69
+ - `?` if the configuration is incomplete, or the check service is starting up.
70
+ - `!` on failures (properly configured but checking failed).
71
+
72
+
73
+ ### Behind the scenes
74
+
75
+ The `GitCheckCI` shell helper does two things:
76
+
77
+ - it spawns a checking service with `git check-ci server_start`
78
+ - it returns the contents of the `ci.status` Git configuration variable
79
+
80
+ The spawned server check the CI status over HTTP every minute and stores the response in the Git configuration (used as an IPC of sorts).
81
+
82
+ It's done that way because `GitCheckCI` needs to be really, really fast---anything slower than 30ms will make your prompt feel unresponsive.
83
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/git-check-ci ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Check the status of the CI server, and print a block coloured accordingly.
4
+ # Add me to your prompt!
5
+ #
6
+ require 'git-check-ci/shell'
7
+ GitCheckCI::Shell.start
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/git-check-ci/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "git-check-ci"
6
+ s.version = GitCheckCI::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+
9
+ s.authors = ["Julien Letessier"]
10
+ s.email = ["julien.letessier@gmail.com"]
11
+ s.description = %q{Check CI status of the local project}
12
+ s.summary = %q{
13
+ Provides git-check-ci, which can display textual or graphic status
14
+ feedback based on a CI server's results.
15
+ }
16
+ s.homepage = "http://github.com/mezis/git-check-ci"
17
+
18
+ s.required_rubygems_version = ">= 1.3.6"
19
+
20
+ s.add_development_dependency "bundler"
21
+ s.add_development_dependency "rspec"
22
+ s.add_development_dependency "rake"
23
+ s.add_development_dependency "pry"
24
+ s.add_development_dependency "pry-nav"
25
+ s.add_development_dependency "pry-doc"
26
+ s.add_development_dependency "ruby-prof"
27
+
28
+ s.add_dependency "httparty"
29
+ s.add_dependency "daemons"
30
+ s.add_dependency "json"
31
+ s.add_dependency "thor"
32
+
33
+ s.files = `git ls-files`.split($\)
34
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
35
+ s.test_files = s.files.grep(%r{^spec})
36
+ s.require_paths = ["lib"]
37
+ end
@@ -0,0 +1,4 @@
1
+ require 'git-check-ci/version'
2
+ require 'git-check-ci/server'
3
+ require 'git-check-ci/checker'
4
+ require 'git-check-ci/formatter'
@@ -0,0 +1,61 @@
1
+ require 'git-check-ci/config'
2
+ require 'git-check-ci/formatter'
3
+ require 'singleton'
4
+ require 'sha1'
5
+
6
+ require 'rubygems'
7
+ require 'httparty'
8
+
9
+ module GitCheckCI
10
+ class Checker
11
+
12
+ attr_reader :config
13
+
14
+ # pass a :dir (defaults to current directory)
15
+ def initialize(options = {})
16
+ @directory = options[:dir] || Dir.pwd
17
+ @config = Config.new(:dir => @directory)
18
+ end
19
+
20
+
21
+ def check_and_save
22
+ save(check)
23
+ end
24
+
25
+ def uid
26
+ @config.ci.project
27
+ end
28
+
29
+
30
+ private
31
+
32
+
33
+ def check
34
+ return {:code => 400} if @config.ci.url.empty? || @config.ci.project.empty?
35
+
36
+ login = @config.ci.login
37
+ password = @config.ci.password
38
+ options = {}
39
+ unless login.empty? && password.empty?
40
+ options[:basic_auth] = { :username => login.to_s, :password => password.to_s }
41
+ end
42
+ url = "#{@config.ci.url}/#{@config.ci.project}/ping"
43
+ response = HTTParty.get(url, options)
44
+ return {:code => response.code, :body => response.to_s}
45
+
46
+ rescue HTTParty::UnsupportedURIScheme, SocketError
47
+ {:code => 400}
48
+ end
49
+
50
+
51
+
52
+ # save the CI result to the Git config
53
+ def save(code_and_response)
54
+ @config.ci.last_checked = Time.now.strftime('%s')
55
+ @config.ci.response = code_and_response.to_json
56
+ @config.ci.status = Formatter.handle_response(code_and_response)
57
+ nil
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,110 @@
1
+ #
2
+ # Access Git settings by calling +git config+.
3
+ #
4
+ # config.foo.bar returns the "bar" setting in section "foo".
5
+ #
6
+ require 'pathname'
7
+
8
+ module GitCheckCI
9
+ class Config
10
+ Error = Class.new(RuntimeError)
11
+
12
+
13
+ # configs are directory (well, repo) specific
14
+ def initialize(options = {})
15
+ @directory = options.delete(:dir) || Dir.pwd
16
+ @chain = options.delete(:chain) || []
17
+ @default = options.delete(:default)
18
+ raise Error.new("Bad options #{options.inspect}") if options.any?
19
+ end
20
+
21
+ def to_s
22
+ @to_s ||= get
23
+ end
24
+
25
+
26
+ # return true when ci.url, ci.project, ci.status exist
27
+ def valid?
28
+ self.ci.url.to_s
29
+ self.ci.project.to_s
30
+ self.ci.status.to_s
31
+ true
32
+ rescue Error
33
+ false
34
+ end
35
+
36
+
37
+ def method_missing(method_name, *args)
38
+ if "string".respond_to?(method_name)
39
+ # puts "passing #{method_name} to #{key}"
40
+ to_s.send(method_name, *args)
41
+ elsif method_name.to_s =~ /(.*)=$/
42
+ # puts "passing #{method_name} to #{key}"
43
+ self.class.new(:dir => @directory, :chain => @chain + [$1]).send(:set,*args)
44
+ else
45
+ options = args.first || {}
46
+ self.class.new(options.merge :dir => @directory, :chain => @chain + [method_name])
47
+ end
48
+ end
49
+
50
+
51
+ def is_git_dir?
52
+ in_dir do
53
+ %x(git status 2>/dev/null)
54
+ ($? == 0)
55
+ end
56
+ end
57
+
58
+
59
+ def self.method_missing(method_name, *args)
60
+ new :chain => [method_name]
61
+ end
62
+
63
+
64
+ def self.valid?
65
+ new.valid?
66
+ end
67
+
68
+
69
+ def set(value)
70
+ # puts "writing config (#{key} -> #{value})"
71
+ in_dir do
72
+ if value.nil?
73
+ %x(git config --unset #{key} || true)
74
+ success = ($? == 0)
75
+ else
76
+ success = system("git", "config", key, value)
77
+ end
78
+ raise Error.new("writing config failed (#{key} -> #{value})") unless success
79
+ end
80
+ end
81
+
82
+ def get
83
+ in_dir do
84
+ value = %x(git config #{key}).strip
85
+ # raise Error.new("reading git config failed (#{key})") unless ($? == 0)
86
+ value.empty? ? (@default || "") : value
87
+ end
88
+ end
89
+
90
+
91
+ private
92
+
93
+
94
+ def key
95
+ @chain.join('.').gsub(/_/,'-')
96
+ end
97
+
98
+
99
+ def in_dir
100
+ old_dir = Dir.pwd
101
+ begin
102
+ Dir.chdir(@directory)
103
+ yield
104
+ ensure
105
+ Dir.chdir(old_dir)
106
+ end
107
+ end
108
+
109
+ end
110
+ end
@@ -0,0 +1,35 @@
1
+
2
+
3
+ module GitCheckCI
4
+ module Formatter
5
+ extend self
6
+
7
+ def handle_response(data)
8
+ case data[:body]
9
+ when /failed/ then build_string(:red, '✗')
10
+ when /(pending|building)/ then build_string(:gray, '●')
11
+ when /[0-9a-f]{40}/ then build_string(:green, '✔')
12
+ else build_string(:yellow, '!')
13
+ end
14
+ end
15
+
16
+
17
+ private
18
+
19
+
20
+ def build_string(color, symbol)
21
+ reset = "\033[0m"
22
+ color_code = case color
23
+ when :red then "\033[31m"
24
+ when :green then "\033[32m"
25
+ when :yellow then "\033[33m"
26
+ when :gray then "\033[37m"
27
+ else ""
28
+ end
29
+
30
+ "#{color_code}#{symbol}#{reset}"
31
+ end
32
+
33
+
34
+ end
35
+ end
@@ -0,0 +1,87 @@
1
+ require 'git-check-ci/checker'
2
+ require 'git-check-ci/silencer'
3
+ require 'pathname'
4
+
5
+ require 'rubygems'
6
+ require 'daemons'
7
+ require 'json'
8
+
9
+ module GitCheckCI
10
+ class Server
11
+ include Silencer
12
+
13
+ # path where the results are stored
14
+ attr_reader :outfile
15
+
16
+ def initialize(options = {})
17
+ @dir = options[:dir] || Dir.pwd
18
+ @interval = options[:interval] || 60.0
19
+ @checker = Checker.new(:dir => @dir)
20
+ @config = @checker.config
21
+
22
+ @appgroup = Daemons::ApplicationGroup.new(
23
+ app_name,
24
+ :multiple => false, :dir => tmpdir.to_s, :dir_mode => :normal
25
+ )
26
+ @app = @appgroup.new_application(:mode => :proc, :proc => method(:worker))
27
+ end
28
+
29
+
30
+ def start(options = {})
31
+ return unless @config.is_git_dir?
32
+ return if @app.running?
33
+ work # once manually so we're pretty sure the server loop will work
34
+ @app.start
35
+ sleep 0.1 until @app.pid.pid
36
+ unless options[:quiet]
37
+ @app.started
38
+ puts "project #{@config.ci.project}"
39
+ end
40
+ nil
41
+ end
42
+
43
+
44
+ def stop(options = {})
45
+ return unless @config.is_git_dir?
46
+ return unless @app.running?
47
+ if options[:quiet]
48
+ silencing($stdout) { @app.stop }
49
+ else
50
+ @app.stop
51
+ end
52
+ nil
53
+ end
54
+
55
+
56
+ def running?
57
+ @app.running?
58
+ end
59
+
60
+
61
+ private
62
+
63
+
64
+ def app_name
65
+ "git-check-ci:#{@checker.uid}"
66
+ end
67
+
68
+
69
+ def worker
70
+ $0 = app_name
71
+ loop do
72
+ work
73
+ sleep @interval
74
+ end
75
+ end
76
+
77
+ def work
78
+ @checker.check_and_save
79
+ end
80
+
81
+
82
+ def tmpdir
83
+ Pathname.new '/var/tmp'
84
+ end
85
+
86
+ end
87
+ end
@@ -0,0 +1,101 @@
1
+ require 'git-check-ci/config'
2
+ require 'git-check-ci/server'
3
+ require 'git-check-ci/formatter'
4
+
5
+ require 'rubygems'
6
+ require 'thor'
7
+
8
+ module GitCheckCI
9
+ class Shell < Thor
10
+ include Thor::Actions
11
+
12
+ desc "check", "Fetch and print the current CI status."
13
+ def check
14
+ Checker.new.check_and_save
15
+ $stdout.puts Config.ci.response.to_s
16
+ end
17
+
18
+ desc "setup", "Interactively setup #{File.basename $0}."
19
+ def setup
20
+ Server.new.stop
21
+ @config = Config.new
22
+
23
+ ask_for @config.ci.url, "What is the URL of your CI server?"
24
+ ask_for @config.ci.project, "What is the name of the project you're checking?"
25
+ ask_for @config.ci.login, "If the server requires a login, what should I use?"
26
+ unless @config.ci.login.empty?
27
+ ask_for @config.ci.password, "with which passphrase?"
28
+ end
29
+
30
+ puts
31
+ say "Setup is now complete. Doing a test run."
32
+ @config.ci.status = nil
33
+ Checker.new.check_and_save
34
+ if @config.ci.status.empty?
35
+ say "Sorry, but something went wrong. Try checking connectivity and your setup.", :yellow
36
+ else
37
+ say "All good! Now the 'check' and 'fast-check' commands should work.", :green
38
+ end
39
+ @config.ci.last_checked = nil
40
+ end
41
+
42
+
43
+ desc "server_start", "Start the checking daemon. Will store the build status in your git config."
44
+ method_option :quiet, :type => :boolean, :aliases => "-q"
45
+ def server_start
46
+ Server.new.start options
47
+ end
48
+
49
+ desc "server_stop", "Stop the checking daemon."
50
+ method_option :quiet, :type => :boolean, :aliases => "-q"
51
+ def server_stop
52
+ Server.new.stop options
53
+ end
54
+
55
+ desc "server_status", "Displays the server status."
56
+ def server_status
57
+ if Server.new.running?
58
+ say "Server is running"
59
+ else
60
+ say "Server is not running"
61
+ end
62
+ end
63
+
64
+
65
+ desc "init", "Output shell config."
66
+ def init
67
+ puts %q[
68
+ GitCheckCI() {
69
+ # exit early if not in a git repository
70
+ git status > /dev/null 2>&1 || return
71
+
72
+ # exit early if no project is configured
73
+ git config ci.project > /dev/null 2>&1 || { echo '?' ; return ; }
74
+
75
+ # spawn a server if no recent updates
76
+ last_checked=$(git config ci.last-checked || echo 0)
77
+ now=$(date +%s)
78
+ let "delta = $now - $last_checked"
79
+ test $delta -gt 120 && { git check-ci server_start & }
80
+
81
+ # try to return a status
82
+ git config ci.status 2> /dev/null || echo '?'
83
+ }
84
+ ]
85
+ end
86
+
87
+
88
+
89
+ private
90
+
91
+
92
+ def ask_for(setting, message)
93
+ current_value = setting.get
94
+ current_value = 'currently unset' if current_value.empty?
95
+ puts
96
+ value = ask("#{message} [#{current_value}]\n> ", :cyan)
97
+ setting.set(value) unless value.empty?
98
+ end
99
+
100
+ end
101
+ end
@@ -0,0 +1,14 @@
1
+ module GitCheckCI
2
+ module Silencer
3
+
4
+ def silencing(stream)
5
+ old_stream = stream.dup
6
+ stream.reopen('/dev/null')
7
+ stream.sync = true
8
+ yield
9
+ ensure
10
+ stream.reopen(old_stream)
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module GitCheckCI
2
+ VERSION = '0.1.0' unless defined?(GitCheckCI::VERSION)
3
+ end
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git-check-ci
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Julien Letessier
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-07-05 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ prerelease: false
32
+ name: bundler
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ prerelease: false
46
+ name: rspec
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ prerelease: false
60
+ name: rake
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ requirement: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ prerelease: false
74
+ name: pry
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ requirement: &id005 !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ hash: 3
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ prerelease: false
88
+ name: pry-nav
89
+ type: :development
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ requirement: &id006 !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ hash: 3
98
+ segments:
99
+ - 0
100
+ version: "0"
101
+ prerelease: false
102
+ name: pry-doc
103
+ type: :development
104
+ version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
106
+ requirement: &id007 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ hash: 3
112
+ segments:
113
+ - 0
114
+ version: "0"
115
+ prerelease: false
116
+ name: ruby-prof
117
+ type: :development
118
+ version_requirements: *id007
119
+ - !ruby/object:Gem::Dependency
120
+ requirement: &id008 !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ hash: 3
126
+ segments:
127
+ - 0
128
+ version: "0"
129
+ prerelease: false
130
+ name: httparty
131
+ type: :runtime
132
+ version_requirements: *id008
133
+ - !ruby/object:Gem::Dependency
134
+ requirement: &id009 !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ hash: 3
140
+ segments:
141
+ - 0
142
+ version: "0"
143
+ prerelease: false
144
+ name: daemons
145
+ type: :runtime
146
+ version_requirements: *id009
147
+ - !ruby/object:Gem::Dependency
148
+ requirement: &id010 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ hash: 3
154
+ segments:
155
+ - 0
156
+ version: "0"
157
+ prerelease: false
158
+ name: json
159
+ type: :runtime
160
+ version_requirements: *id010
161
+ - !ruby/object:Gem::Dependency
162
+ requirement: &id011 !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ hash: 3
168
+ segments:
169
+ - 0
170
+ version: "0"
171
+ prerelease: false
172
+ name: thor
173
+ type: :runtime
174
+ version_requirements: *id011
175
+ description: Check CI status of the local project
176
+ email:
177
+ - julien.letessier@gmail.com
178
+ executables:
179
+ - git-check-ci
180
+ extensions: []
181
+
182
+ extra_rdoc_files: []
183
+
184
+ files:
185
+ - Gemfile
186
+ - Gemfile.lock
187
+ - README.md
188
+ - Rakefile
189
+ - bin/git-check-ci
190
+ - git-check-ci.gemspec
191
+ - lib/git-check-ci.rb
192
+ - lib/git-check-ci/checker.rb
193
+ - lib/git-check-ci/config.rb
194
+ - lib/git-check-ci/formatter.rb
195
+ - lib/git-check-ci/server.rb
196
+ - lib/git-check-ci/shell.rb
197
+ - lib/git-check-ci/silencer.rb
198
+ - lib/git-check-ci/version.rb
199
+ has_rdoc: true
200
+ homepage: http://github.com/mezis/git-check-ci
201
+ licenses: []
202
+
203
+ post_install_message:
204
+ rdoc_options: []
205
+
206
+ require_paths:
207
+ - lib
208
+ required_ruby_version: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ hash: 3
214
+ segments:
215
+ - 0
216
+ version: "0"
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ hash: 23
223
+ segments:
224
+ - 1
225
+ - 3
226
+ - 6
227
+ version: 1.3.6
228
+ requirements: []
229
+
230
+ rubyforge_project:
231
+ rubygems_version: 1.3.9.5
232
+ signing_key:
233
+ specification_version: 3
234
+ summary: Provides git-check-ci, which can display textual or graphic status feedback based on a CI server's results.
235
+ test_files: []
236
+