ci-go-nfo 0.0.1 → 0.0.2

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/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