leeroy 0.1 → 0.1.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 636a8cd002e62972e2a97d3a609c3b62c77ba844
4
+ data.tar.gz: 34a1fa01af2133f94c0e17d3c2f9d8d59b0e9492
5
+ SHA512:
6
+ metadata.gz: 3ed1fda82ea19330662fb127bcb9ea4ed5135ae928139e46f356e83254df868cfc5c379b7cba5df0a04d6e68826181c474d17a5695b4729d3a776a1ced42551c
7
+ data.tar.gz: 7698dc9c8d6bb23b3eb21f83375201d464964575af5ce85b157d0c33d836213863fc6136a942b4bf8a381065e3161ce7b7235652d6faf5f7aee54a3dc1a2ca44
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
19
+ .bundle
20
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in leeroy.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,31 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ leeroy (0.1.0)
5
+ paint (~> 0.8)
6
+ rest-client (~> 1.7)
7
+ terminal-table (~> 1.4)
8
+ trollop (~> 2.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ gem-release (0.7.3)
14
+ mime-types (2.4.3)
15
+ netrc (0.10.2)
16
+ paint (0.9.0)
17
+ rake (10.4.2)
18
+ rest-client (1.7.3)
19
+ mime-types (>= 1.16, < 3.0)
20
+ netrc (~> 0.7)
21
+ terminal-table (1.4.5)
22
+ trollop (2.1.1)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ bundler (~> 1.7)
29
+ gem-release (~> 0.7)
30
+ leeroy!
31
+ rake (~> 10.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 John Hamelink
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- #Leeroy
1
+ #Leeroy [![Gem Version](https://badge.fury.io/rb/leeroy.svg)](http://badge.fury.io/rb/leeroy)
2
2
 
3
3
  Leeeeeeeeeeeeeeeeroy Jenkins!
4
4
 
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/leeroy CHANGED
@@ -1,105 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'leeroy'
2
3
 
3
- require "rubygems"
4
- require "bundler/setup"
5
-
6
- require 'paint'
7
- require 'terminal-table'
8
- require 'rest-client'
9
- require 'json'
10
- require 'uri'
11
- require 'trollop'
12
-
13
-
14
- def makeResource(route)
15
- route = URI.escape(route)
16
- return RestClient::Resource.new @endpoint + '/' + route + '/api/json', @username, @password
17
- end
18
-
19
-
20
- def getJobs()
21
- resource = makeResource('/')
22
- return JSON.parse(resource.get)['jobs']
23
- end
24
-
25
- def getJob(name)
26
- resource = makeResource('job/' + name)
27
- return JSON.parse(resource.get)
28
- end
29
-
30
- def list()
31
- jobs = getJobs()
32
-
33
- rows = []
34
- jobs.each do |job|
35
- rows << [job['name'], getJobStatus(job["name"])]
36
- end
37
-
38
- header = ['Job', {:value => 'Status', :alignment => :center}]
39
- table = Terminal::Table.new :headings => header, :rows => rows
40
- table.align_column(1, :center)
41
- print table
42
- end
43
-
44
- def getJobStatus(name, prefix = "", suffix = "")
45
- score = getJob(name)['healthReport']
46
- unless score == []
47
- score = score[0]['score']
48
-
49
- if score > 80
50
- return Paint[score.to_s + '%', :black, :green, :bright]
51
- elsif score > 60 && score < 80
52
- return Paint[score.to_s + '%', :yellow, :bright]
53
- elsif score > 40 && score < 60
54
- return Paint[score.to_s + '%', :orange, :bright]
55
- elsif score > 20 && score < 40
56
- return Paint[score.to_s + '%', :orange, :bright, :red]
57
- elsif score < 20
58
- return Paint[score.to_s + '%', :white, :bright, :red]
59
- else
60
- return Paint["Error", :white, :bright, :red]
61
- end
62
-
63
- end
64
-
65
- return Paint["No Results", :white, :bright, :black]
66
- end
67
-
68
-
69
- opts = Trollop::options do
70
- version "Leeroy 0.0.1 (c) 2012 John Hamelink <john@johnhamelink.com>"
71
- banner <<-EOS
72
-
73
- Leeeeeeeeeeeeeeeeroy Jenkins!
74
-
75
- Leeroy lets you quickly check the status of your builds from the commandline.
76
- Leeroy is called Leeroy because of this excellent meme: http://youtu.be/LkCNJRfSZBU
77
-
78
- Usage:
79
- ------
80
-
81
- leeroy --username john@doe.com --password p455w0rd --endpoint http://jenkins.dev:8080
82
-
83
- Options:
84
- --------
85
-
86
- EOS
87
- opt :username, "Your Jenkins username", :type => :string
88
- opt :password, "Your Jenkins password", :type => :string
89
- opt :endpoint, "The root URL of jenkins", :type => :string
90
- end
91
-
92
-
93
- Trollop::die :username, "must be defined" unless opts[:username]
94
- Trollop::die :password, "must be defined" unless opts[:password]
95
- Trollop::die :endpoint, "must be defined" unless opts[:endpoint]
96
-
97
-
98
- @username = opts[:username]
99
- @password = opts[:password]
100
- @endpoint = opts[:endpoint]
101
-
102
-
103
- print "\n\n"
104
- list()
105
- print "\n\n"
4
+ Leeroy::Jenkins.new
data/leeroy.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'leeroy/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "leeroy"
8
+ spec.version = Leeroy::VERSION
9
+ spec.authors = ["John Hamelink"]
10
+ spec.email = ["hello@farmer.io"]
11
+ spec.summary = %q{Quickly see the status of your jenkins jobs}
12
+ spec.description = %q{Leeroy lets you quickly check the status of your jenkins builds from the commandline.}
13
+ spec.homepage = "https://github.com/johnhamelink/leeroy"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "paint", "~> 0.8"
22
+ spec.add_dependency "rest-client", "~> 1.7"
23
+ spec.add_dependency "trollop", "~> 2.0"
24
+ spec.add_dependency "terminal-table", "~> 1.4"
25
+
26
+ spec.add_development_dependency "gem-release", "~> 0.7"
27
+ spec.add_development_dependency "bundler", "~> 1.7"
28
+ spec.add_development_dependency "rake", "~> 10.0"
29
+ end
data/lib/leeroy.rb ADDED
@@ -0,0 +1,3 @@
1
+ require "leeroy/version"
2
+ require "leeroy/jenkins"
3
+
@@ -0,0 +1,111 @@
1
+ module Leeroy
2
+
3
+ require 'paint'
4
+ require 'terminal-table'
5
+ require 'rest-client'
6
+ require 'json'
7
+ require 'uri'
8
+ require 'trollop'
9
+
10
+ class Jenkins
11
+
12
+ def initialize
13
+
14
+ opts = Trollop::options do
15
+ version "Leeroy #{Leeroy::VERSION} (c) 2012 John Hamelink <john@johnhamelink.com>"
16
+ banner <<-EOS
17
+
18
+ Leeeeeeeeeeeeeeeeroy Jenkins!
19
+
20
+ Leeroy lets you quickly check the status of your builds from the commandline.
21
+ Leeroy is called Leeroy because of this excellent meme: http://youtu.be/LkCNJRfSZBU
22
+
23
+ Usage:
24
+ ------
25
+
26
+ leeroy --username john@doe.com --password p455w0rd --endpoint http://jenkins.dev:8080
27
+
28
+ Options:
29
+ --------
30
+
31
+ EOS
32
+ opt :username, "Your Jenkins username", :type => :string
33
+ opt :password, "Your Jenkins password", :type => :string
34
+ opt :endpoint, "The root URL of jenkins", :type => :string
35
+ end
36
+
37
+
38
+ Trollop::die :username, "must be defined" unless opts[:username]
39
+ Trollop::die :password, "must be defined" unless opts[:password]
40
+ Trollop::die :endpoint, "must be defined" unless opts[:endpoint]
41
+
42
+
43
+ @username = opts[:username]
44
+ @password = opts[:password]
45
+ @endpoint = opts[:endpoint]
46
+
47
+
48
+ print "\n\n"
49
+ list
50
+ print "\n\n"
51
+ end
52
+
53
+ private
54
+
55
+ def makeResource(route)
56
+ route = URI.escape(route)
57
+ return RestClient::Resource.new @endpoint + '/' + route + '/api/json', @username, @password
58
+ end
59
+
60
+
61
+ def getJobs()
62
+ resource = makeResource('/')
63
+ return JSON.parse(resource.get)['jobs']
64
+ end
65
+
66
+ def getJob(name)
67
+ resource = makeResource('job/' + name)
68
+ return JSON.parse(resource.get)
69
+ end
70
+
71
+ def list()
72
+ jobs = getJobs()
73
+
74
+ rows = []
75
+ jobs.each do |job|
76
+ rows << [job['name'], getJobStatus(job["name"])]
77
+ end
78
+
79
+ header = ['Job', {:value => 'Status', :alignment => :center}]
80
+ table = Terminal::Table.new :headings => header, :rows => rows
81
+ table.align_column(1, :center)
82
+ print table
83
+ end
84
+
85
+ def getJobStatus(name, prefix = "", suffix = "")
86
+ score = getJob(name)['healthReport']
87
+ unless score == []
88
+ score = score[0]['score']
89
+
90
+ if score > 80
91
+ return Paint[score.to_s + '%', :black, :green, :bright]
92
+ elsif score > 60 && score < 80
93
+ return Paint[score.to_s + '%', :yellow, :bright]
94
+ elsif score > 40 && score < 60
95
+ return Paint[score.to_s + '%', :orange, :bright]
96
+ elsif score > 20 && score < 40
97
+ return Paint[score.to_s + '%', :orange, :bright, :red]
98
+ elsif score < 20
99
+ return Paint[score.to_s + '%', :white, :bright, :red]
100
+ else
101
+ return Paint["Error", :white, :bright, :red]
102
+ end
103
+
104
+ end
105
+
106
+ return Paint["No Results", :white, :bright, :black]
107
+ end
108
+
109
+
110
+ end
111
+ end
@@ -0,0 +1,3 @@
1
+ module Leeroy
2
+ VERSION = "0.1.1"
3
+ end
metadata CHANGED
@@ -1,49 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leeroy
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - John Hamelink
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-02 00:00:00.000000000 Z
13
- dependencies: []
14
- description: Leeroy lets you quickly check the status of your builds from the commandline.
11
+ date: 2015-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: paint
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: trollop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: terminal-table
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.4'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: gem-release
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ description: Leeroy lets you quickly check the status of your jenkins builds from
112
+ the commandline.
15
113
  email:
16
- - john@johnhamelink.com
114
+ - hello@farmer.io
17
115
  executables:
18
116
  - leeroy
19
117
  extensions: []
20
118
  extra_rdoc_files: []
21
119
  files:
22
- - bin/leeroy
23
- - LICENSE
120
+ - ".gitignore"
121
+ - Gemfile
122
+ - Gemfile.lock
123
+ - LICENSE.txt
24
124
  - README.md
125
+ - Rakefile
126
+ - bin/leeroy
127
+ - leeroy.gemspec
128
+ - lib/leeroy.rb
129
+ - lib/leeroy/jenkins.rb
130
+ - lib/leeroy/version.rb
25
131
  homepage: https://github.com/johnhamelink/leeroy
26
- licenses: []
132
+ licenses:
133
+ - MIT
134
+ metadata: {}
27
135
  post_install_message:
28
136
  rdoc_options: []
29
137
  require_paths:
30
138
  - lib
31
139
  required_ruby_version: !ruby/object:Gem::Requirement
32
- none: false
33
140
  requirements:
34
- - - ! '>='
141
+ - - ">="
35
142
  - !ruby/object:Gem::Version
36
143
  version: '0'
37
144
  required_rubygems_version: !ruby/object:Gem::Requirement
38
- none: false
39
145
  requirements:
40
- - - ! '>='
146
+ - - ">="
41
147
  - !ruby/object:Gem::Version
42
- version: 1.8.23
148
+ version: '0'
43
149
  requirements: []
44
- rubyforge_project: leeroy
45
- rubygems_version: 1.8.23
150
+ rubyforge_project:
151
+ rubygems_version: 2.4.5
46
152
  signing_key:
47
- specification_version: 3
153
+ specification_version: 4
48
154
  summary: Quickly see the status of your jenkins jobs
49
155
  test_files: []
data/LICENSE DELETED
@@ -1,17 +0,0 @@
1
- Copyright 2012 John Hamelink <john@johnhamelink.com>
2
-
3
- This file is part of Leeroy.
4
-
5
- Leeroy is free software: you can redistribute it and/or modify
6
- it under the terms of the GNU General Public License as published by
7
- the Free Software Foundation, either version 3 of the License, or
8
- (at your option) any later version.
9
-
10
- Leeroy is distributed in the hope that it will be useful,
11
- but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- GNU General Public License for more details.
14
-
15
- You should have received a copy of the GNU General Public License
16
- along with Leeroy. If not, see <http://www.gnu.org/licenses/>.
17
-