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 +3 -0
- data/Gemfile.lock +57 -0
- data/README.md +83 -0
- data/Rakefile +1 -0
- data/bin/git-check-ci +7 -0
- data/git-check-ci.gemspec +37 -0
- data/lib/git-check-ci.rb +4 -0
- data/lib/git-check-ci/checker.rb +61 -0
- data/lib/git-check-ci/config.rb +110 -0
- data/lib/git-check-ci/formatter.rb +35 -0
- data/lib/git-check-ci/server.rb +87 -0
- data/lib/git-check-ci/shell.rb +101 -0
- data/lib/git-check-ci/silencer.rb +14 -0
- data/lib/git-check-ci/version.rb +3 -0
- metadata +236 -0
data/Gemfile
ADDED
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,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
|
data/lib/git-check-ci.rb
ADDED
@@ -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
|
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
|
+
|