ci-go-nfo 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,13 @@
1
+ Ci-Go-Nfo CHANGLEOG
2
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
3
+
4
+ v0.0.1 => v0.0.2
5
+ 5) get summary of total/passed/failed Go CI pipelines and the names of failed
6
+
7
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
+
9
+ v0.0.0 => v0.0.1
10
+ 1) setup config for ci-go-nfo
11
+ 2) get information for all builds in Go CI
12
+ 3) get information of just passed Go CI builds
13
+ 4) get information of just failed Go CI builds
@@ -14,7 +14,28 @@ easily from console itself, no more browse
14
14
 
15
15
  ## Usage
16
16
 
17
- TODO: Write usage instructions here
17
+ Ci-Go-Nfo ver.0.0.1
18
+
19
+ to set-up credential config for your go-ci
20
+ $ ci-go-nfo setup
21
+
22
+ to set-up credential config for your go-ci
23
+ $ ci-go-nfo setup
24
+
25
+ to show go-ci info of all runs
26
+ $ ci-go-nfo
27
+
28
+ to show go-ci summary of total/passed/failed pipelines
29
+ $ ci-go-nfo summary
30
+
31
+ to show go-ci info of failed runs
32
+ $ ci-go-nfo fail
33
+
34
+ to show go-ci info of passed runs
35
+ $ ci-go-nfo pass
36
+ _____
37
+ .....more to come
38
+
18
39
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
19
40
 
20
41
  ## Contributing
data/bin/ci-go-nfo CHANGED
@@ -3,30 +3,46 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
3
3
 
4
4
  require 'ci-go-nfo'
5
5
 
6
- case ARGV[0]
7
- when 'help', '-h', '--help', '?'
8
- puts <<-HELP
9
- \e[1m\e[31mCi-Go-Nfo ver.#{Ci::Go::Nfo::VERSION}\e[0m
10
- to set-up credential config for your go-ci\e[33m
11
- $ ci-go-nfo setup\e[0m
12
- to set-up credential config for your go-ci\e[33m
13
- $ ci-go-nfo setup\e[0m
14
- to show go-ci info of all runs\e[33m
15
- $ ci-go-nfo\e[0m
16
- to show go-ci info of failed runs\e[33m
17
- $ ci-go-nfo fail\e[0m
18
- to show go-ci info of passed runs\e[33m
19
- $ ci-go-nfo pass\e[0m
20
- \e[32m_____
21
- \e[33m.....more to come
22
- \e[0m
23
- HELP
24
- when 'setup'
25
- Ci::Go::Access.persist_config
26
- when 'pass'
27
- Ci::Go::Nfo.cli 'pass'
28
- when 'fail'
29
- Ci::Go::Nfo.cli 'fail'
30
- else
31
- Ci::Go::Nfo.cli
6
+ if ARGV.size === 1
7
+ case ARGV[0]
8
+ when 'help', '-h', '--help', '?'
9
+ puts <<-HELP
10
+ \e[1m\e[31mCi-Go-Nfo ver.#{Ci::Go::Nfo::VERSION}\e[0m
11
+ to set-up credential config for your go-ci\e[33m
12
+ $ ci-go-nfo setup\e[0m
13
+ to show go-ci info of all runs\e[33m
14
+ $ ci-go-nfo\e[0m
15
+ to show go-ci info of failed runs\e[33m
16
+ $ ci-go-nfo fail\e[0m
17
+ to show go-ci info of passed runs\e[33m
18
+ $ ci-go-nfo pass\e[0m
19
+ \e[32m_____
20
+ \e[33m.....more to come
21
+ \e[0m
22
+ HELP
23
+ when 'setup'
24
+ Ci::Go::Access.persist_config
25
+ when nil
26
+ Ci::Go::Nfo.builds
27
+ when 'pass'
28
+ Ci::Go::Nfo.builds 'pass'
29
+ when 'fail'
30
+ Ci::Go::Nfo.builds 'fail'
31
+ when 'summary'
32
+ Ci::Go::Nfo.summary
33
+ else
34
+ Ci::Go::Nfo.builds nil, ARGV[0]
35
+ end
36
+
37
+ elsif ARGV.size === 2
38
+ argv = ARGV
39
+ status = ['pass', 'fail']
40
+ detail = ['dep', 'history']
41
+ filter = [status, detail].flatten.select{|s| argv.delete status}
42
+
43
+ if status.include? filter
44
+ Ci::Go::Nfo.builds filter, argv
45
+ elsif filter === 'dep'
46
+ # would
47
+ end
32
48
  end
data/lib/ci-go-nfo.rb CHANGED
@@ -10,26 +10,58 @@ module Ci
10
10
  module Go
11
11
  module Nfo
12
12
 
13
- def self.cli(filter = nil)
13
+ def self.summary
14
+ go_all = Ci::Go::Cctray.data_from_xml
15
+ failed_builds, passed_builds = [], []
16
+ go_all['names'].each_with_index do |name, idx|
17
+ if name.split('::').size == 3
18
+ if go_all['lastBuildStatus'][idx] === 'Failure'
19
+ failed_builds << name.split('::')[0]
20
+ elsif go_all['lastBuildStatus'][idx] === 'Success'
21
+ passed_builds << name.split('::')[0]
22
+ end
23
+ end
24
+ end
25
+ Ci::Go::Print.summary passed_builds.uniq, failed_builds.uniq
26
+ end
27
+
28
+ def self.builds(status = nil)
14
29
  go = Ci::Go::Cctray.data_from_xml
15
30
  go['names'].each_with_index do |name, idx|
16
31
  next if name.split('::').size < 3
17
- status = <<-STATUS
18
- \e[1m\e[31m#{name.gsub('::', '->')}
19
- \e[32m#{go['lastBuildStatus'][idx]} \e[0m for run#\e[32m#{go['lastBuildLabels'][idx]} \e[33mat #{go['lastBuildTimes'][idx]}
20
- \e[0mdetails at \e[36m#{go['weburls'][idx]}
21
-
22
- STATUS
23
- if filter.nil?
24
- puts status
25
- elsif filter === 'fail' && go['lastBuildStatus'][idx]==='Failure'
26
- puts status
27
- elsif filter === 'pass' && go['lastBuildStatus'][idx]==='Success'
28
- puts status
32
+ build = {
33
+ 'name' => name,
34
+ 'last_status' => go['lastBuildStatus'][idx],
35
+ 'last_label' => go['lastBuildLabels'][idx],
36
+ 'last_time' => go['lastBuildTimes'][idx],
37
+ 'weburl' => go['weburls'][idx]
38
+ }
39
+
40
+ if status.nil?
41
+ Ci::Go::Print.build_status build
42
+ elsif status === 'fail' && build['last_status'] === 'Failure'
43
+ Ci::Go::Print.build_status build
44
+ elsif status === 'pass' && build['last_status'] === 'Success'
45
+ Ci::Go::Print.build_status build
29
46
  end
30
47
  end
31
48
  end
32
49
 
50
+ def self.build_of(pipeline)
51
+ go = Ci::Go::Cctray.data_from_xml
52
+ build_name = go['names'].select{|gname| gname.split(/::/)[0] === pipeline}
53
+ idx = go.index build_name
54
+ build = {
55
+ 'name' => go['names'][idx],
56
+ 'last_status' => go['lastBuildStatus'][idx],
57
+ 'last_label' => go['lastBuildLabels'][idx],
58
+ 'last_time' => go['lastBuildTimes'][idx],
59
+ 'weburl' => go['weburls'][idx]
60
+ }
61
+
62
+ Ci::Go::Print.build_status build
63
+ end
64
+
33
65
  end
34
66
  end
35
67
  end
@@ -1,4 +1,5 @@
1
1
  ## cctray.rb
2
+ # Ci::Go::Cctray.data_from_xml ~ return hash of array of fields in Go CCTray XML
2
3
 
3
4
  require 'xml-motor'
4
5
 
@@ -7,7 +8,7 @@ module Ci
7
8
  module Cctray
8
9
 
9
10
  def self.data_from_xml
10
- cctray = Ci::WWW.http
11
+ cctray = Ci::WWW::Go.cctray_xml
11
12
  splitd = XMLMotor.splitter cctray.body
12
13
  tags = XMLMotor.indexify splitd
13
14
  go_nfo = {}
@@ -19,7 +20,6 @@ module Ci
19
20
  go_nfo['weburls'] = XMLMotor.xmlattrib 'webUrl', splitd, tags, 'Project'
20
21
  go_nfo
21
22
  end
22
-
23
23
  end
24
24
  end
25
25
  end
@@ -0,0 +1,31 @@
1
+ ## print.rb
2
+
3
+ module Ci
4
+ module Go
5
+ module Print
6
+
7
+ def self.summary(passed_builds, failed_builds)
8
+ puts <<-OUTPUT
9
+ \e[1m\e[94mCI Summary\e[0m
10
+ Total \e[94mPipelines:\e[0m \e[94m#{passed_builds.size + failed_builds.size}\e[0m
11
+ Total \e[32mPassed\e[0m Pipelines: \e[94m#{passed_builds.size}\e[0m
12
+ Total \e[31mFailed\e[0m Pipelines: \e[94m#{failed_builds.size}\e[0m
13
+ \e[91mFailed\e[0m Build are:
14
+ OUTPUT
15
+ failed_builds.each do |build|
16
+ puts " \e[31m\e[1m#{build}\e[0m"
17
+ end
18
+ end
19
+
20
+ def self.build_status(build)
21
+ puts <<-OUTPUT
22
+ \e[1m\e[31m#{build['name'].gsub('::', '->')}
23
+ \e[32m#{build['last_status']} \e[0m for run#\e[32m#{build['last_label']} \e[33mat #{build['last_time']}
24
+ \e[0mdetails at \e[36m#{build['weburl']}
25
+
26
+ OUTPUT
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -1,7 +1,7 @@
1
1
  module Ci
2
2
  module Go
3
3
  module Nfo
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.2"
5
5
  end
6
6
  end
7
7
  end
data/lib/ci-go-nfo/www.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  ## www.rb
2
+ # Ci::WWW.http ~ takes url and config{:user, :password}, gives http response
3
+ # Ci::WWW::Go.cctray_xml ~ return cctray.xml http response
2
4
 
3
5
  require 'net/http'
4
6
  require 'uri'
@@ -6,14 +8,25 @@ require 'uri'
6
8
  module Ci
7
9
  module WWW
8
10
 
9
- def self.http
10
- config = Ci::Go::Access.config
11
- url = URI.parse("#{config['baseurl']}/go/cctray.xml")
11
+ def self.http(url, config)
12
+ url = URI.parse(url)
12
13
  req = Net::HTTP::Get.new(url.path)
13
14
  req.basic_auth(config['user'], config['password']) unless config['user'].nil?
14
- Net::HTTP.start(url.host, url.port) {|http|
15
- http.request(req)
16
- }
15
+ Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
16
+ end
17
+ end
18
+ end
19
+
20
+
21
+ module Ci
22
+ module WWW
23
+ module Go
24
+
25
+ def self.cctray_xml
26
+ config = Ci::Go::Access.config
27
+ url = "#{config['baseurl']}/go/cctray.xml"
28
+ Ci::WWW.http url, config
29
+ end
17
30
  end
18
31
  end
19
32
  end
@@ -1 +1 @@
1
- ~/.go.abril
1
+ ~/.ci.go.config
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-go-nfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-19 00:00:00.000000000 Z
12
+ date: 2012-10-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xml-motor
@@ -54,15 +54,17 @@ extensions: []
54
54
  extra_rdoc_files: []
55
55
  files:
56
56
  - .gitignore
57
+ - CHANGELOG
57
58
  - Gemfile
58
59
  - LICENSE
59
- - README.md
60
+ - README
60
61
  - Rakefile
61
62
  - bin/ci-go-nfo
62
63
  - ci-go-nfo.gemspec
63
64
  - lib/ci-go-nfo.rb
64
65
  - lib/ci-go-nfo/cctray.rb
65
66
  - lib/ci-go-nfo/go_info.rb
67
+ - lib/ci-go-nfo/print.rb
66
68
  - lib/ci-go-nfo/version.rb
67
69
  - lib/ci-go-nfo/www.rb
68
70
  - resource/config.store