git-check-ci 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+