bicho 0.0.10 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c310b39555e503cc2b2499c20dc1bf39305448e0
4
- data.tar.gz: 7c75e72001d044b19ae518903739d61199895a50
3
+ metadata.gz: 4a0d062e368708076439568e705310a5434de9ba
4
+ data.tar.gz: 7bf1e89725b8870dd8d87d5b5f5747b419cbd284
5
5
  SHA512:
6
- metadata.gz: e9e7ad0a98e5dfdaf9ab6fd038927b8f4256e415b6841f236d8574db19636bf8db052dbb581d850bd1362e1981b874e7a3cd1535caa1f0ca6e46064755e0a991
7
- data.tar.gz: f10639f87f15b62b106150b11321e7b840bd69c487ec46212b795578cabb4db47c626f8dfefdce18cb43a9707bb296a45bfa842696d421934e74d2fbfdf27ea4
6
+ metadata.gz: 12e08de436746cfb6c9453ea300a24571a686848ed15c882c51a49f7fc0d85b8f00d45d51db05b8d28917e36231c9581491ae377e137afb40a4026af922d92f8
7
+ data.tar.gz: 00bd9161bc8120b63570dd6d8f7d9fdd0fd878bfe4cbbf8a0d415ddbdecb1920f64cd1dc2f4873a2cc5323b69cfb1c7851e53485bd7e6bb7441a9d68827f319e
@@ -1,117 +1,45 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2014-12-19 12:45:53 +0100 using RuboCop version 0.27.1.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- # Offense count: 1
9
- # Configuration parameters: AlignWith, SupportedStyles.
10
- Lint/DefEndAlignment:
1
+ Metrics/AbcSize:
11
2
  Enabled: false
3
+ Max: 41
12
4
 
13
- # Offense count: 1
14
- Lint/RescueException:
5
+ Metrics/ClassLength:
15
6
  Enabled: false
7
+ Max: 182
16
8
 
17
- # Offense count: 3
18
- Lint/UselessAssignment:
9
+ Metrics/CyclomaticComplexity:
19
10
  Enabled: false
11
+ Max: 11
20
12
 
21
- # Offense count: 8
22
- Metrics/AbcSize:
23
- Max: 43
24
-
25
- # Offense count: 1
26
- # Configuration parameters: CountComments.
27
- Metrics/ClassLength:
28
- Max: 133
29
-
30
- # Offense count: 41
31
- # Configuration parameters: AllowURI, URISchemes.
13
+ # Offense count: 49
14
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
15
+ # URISchemes: http, https
32
16
  Metrics/LineLength:
33
17
  Max: 356
34
18
 
35
- # Offense count: 13
36
- # Configuration parameters: CountComments.
37
19
  Metrics/MethodLength:
38
20
  Enabled: false
39
21
 
40
- # Offense count: 1
41
- # Cop supports --auto-correct.
42
- Style/BlockComments:
43
- Enabled: false
44
-
45
- # Offense count: 2
46
- Style/ClassAndModuleCamelCase:
22
+ Metrics/PerceivedComplexity:
47
23
  Enabled: false
48
24
 
49
- # Offense count: 5
50
- # Configuration parameters: EnforcedStyle, SupportedStyles.
51
25
  Style/ClassAndModuleChildren:
52
- Enabled: false
53
-
54
- # Offense count: 17
55
- Style/Documentation:
56
- Enabled: false
57
-
58
- # Offense count: 13
59
- # Cop supports --auto-correct.
60
- # Configuration parameters: EnforcedStyle, SupportedStyles.
61
- Style/EmptyLinesAroundClassBody:
62
- Enabled: false
63
-
64
- # Offense count: 2
65
- # Cop supports --auto-correct.
66
- Style/EmptyLinesAroundMethodBody:
67
- Enabled: false
26
+ Exclude:
27
+ # CLI plugins
28
+ - 'lib/bicho/cli/commands/*.rb'
29
+ - 'lib/bicho/client.rb'
68
30
 
69
- # Offense count: 2
70
- # Cop supports --auto-correct.
71
- # Configuration parameters: EnforcedStyle, SupportedStyles.
72
- Style/EmptyLinesAroundModuleBody:
73
- Enabled: false
74
-
75
- # Offense count: 2
76
- # Configuration parameters: MinBodyLength.
77
31
  Style/GuardClause:
78
- Enabled: false
32
+ Exclude:
33
+ - 'lib/bicho/client.rb'
79
34
 
80
- # Offense count: 4
81
- # Configuration parameters: MaxLineLength.
82
- Style/IfUnlessModifier:
83
- Enabled: false
84
-
85
- # Offense count: 1
86
35
  # Configuration parameters: EnforcedStyle, SupportedStyles.
36
+ # SupportedStyles: snake_case, camelCase
87
37
  Style/MethodName:
88
- Enabled: false
38
+ Exclude:
39
+ # L3 method
40
+ - 'lib/bicho/query.rb'
89
41
 
90
- # Offense count: 7
42
+ # Offense count: 3
91
43
  # Cop supports --auto-correct.
92
44
  Style/NumericLiterals:
93
45
  MinDigits: 7
94
-
95
- # Offense count: 1
96
- Style/RedundantException:
97
- Enabled: false
98
-
99
- # Offense count: 1
100
- Style/RescueModifier:
101
- Enabled: false
102
-
103
- # Offense count: 6
104
- # Cop supports --auto-correct.
105
- Style/SpaceInsideBrackets:
106
- Enabled: false
107
-
108
- # Offense count: 1
109
- # Cop supports --auto-correct.
110
- # Configuration parameters: EnforcedStyle, SupportedStyles.
111
- Style/StringLiterals:
112
- Enabled: false
113
-
114
- # Offense count: 1
115
- # Cop supports --auto-correct.
116
- Style/TrailingWhitespace:
117
- Enabled: true
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.1
4
+ - 2.2.5
5
+ script:
6
+ - bundle exec rake test
7
+ - bundle exec rubocop
@@ -1,15 +1,19 @@
1
- = Bicho
1
+ # Bicho
2
2
 
3
3
  * http://github.com/dmacvicar/bicho
4
4
 
5
- == Introduction
5
+ ![stable](https://img.shields.io/badge/stability-stable-green.svg)
6
+ ![maintained](https://img.shields.io/maintenance/yes/2016.svg)
7
+ [![Build Status](https://travis-ci.org/dmacvicar/bicho.svg?branch=master)](https://travis-ci.org/dmacvicar/bicho)
8
+
9
+ ## Introduction
6
10
 
7
11
  Library to access bugzilla and command line tool.
8
12
 
9
13
  Its main goal is to be clean and provide a command line tool
10
14
  that exposes its features.
11
15
 
12
- == Features
16
+ ## Features
13
17
 
14
18
  Main use case is report generation, therefore only the following
15
19
  features are implemented right now:
@@ -19,62 +23,72 @@ features are implemented right now:
19
23
 
20
24
  Plugins can be written to deal with specific bugzilla installations.
21
25
 
22
- == Example (API)
26
+ ## Example (API)
23
27
 
24
- === Client API
28
+ ### Client API
25
29
 
26
- require 'bicho'
30
+ ```ruby
31
+ require 'bicho'
27
32
 
28
- server = Bicho::Client.new('http://bugzilla.gnome.org')
29
- server.get_bugs(127043).each do |bug|
30
- puts bug.summary
31
- puts bug.url
33
+ server = Bicho::Client.new('http://bugzilla.gnome.org')
34
+ server.get_bugs(127043).each do |bug|
35
+ puts bug.summary
36
+ puts bug.url
32
37
 
33
- puts bug.history
34
- end
38
+ puts bug.history
39
+ end
40
+ ```
35
41
 
36
42
  You can give more than one bug or a named query, or both:
37
43
 
38
- server.get_bugs(127043, 432423) => [....]
39
- server.get_bugs("Named list") => [....]
40
- server.get_bugs("Named list", 4423443) => [....]
44
+ ```ruby
45
+ server.get_bugs(127043, 432423) => [....]
46
+ server.get_bugs("Named list") => [....]
47
+ server.get_bugs("Named list", 4423443) => [....]
48
+ ```
41
49
 
42
- === ActiveRecord-like API
50
+ ### ActiveRecord-like API
43
51
 
44
52
  To use the ActiveRecord like interface over the +Bug+ class, you need first
45
53
  to set the Bicho common client:
46
54
 
47
- require 'bicho'
55
+ ```ruby
56
+ require 'bicho'
48
57
 
49
- Bicho.client = Bicho::Client.new('https://bugzilla.gnome.org')
58
+ Bicho.client = Bicho::Client.new('https://bugzilla.gnome.org')
50
59
 
51
- Bicho::Bug.where(product: 'vala', status: 'resolved').each do |bug|
52
- # .. do something with bug
53
- end
60
+ Bicho::Bug.where(product: 'vala', status: 'resolved').each do |bug|
61
+ # .. do something with bug
62
+ end
63
+ ```
54
64
 
55
- Or alternatively:
65
+ Or alternatively:
56
66
 
57
- Bicho::Bug.where.product('vala').status('resolved').each do |bug|
58
- # .. do something with bug
59
- end
67
+ ```ruby
68
+ Bicho::Bug.where.product('vala').status('resolved').each do |bug|
69
+ # .. do something with bug
70
+ end
71
+ ```
60
72
 
61
- == Example (CLI)
73
+ ## Example (CLI)
62
74
 
63
- bicho -b http://bugzilla.gnome.org show 127043
75
+ ```console
76
+ bicho -b http://bugzilla.gnome.org show 127043
64
77
 
65
- bicho -b gnome history 127043
78
+ bicho -b gnome history 127043
66
79
 
67
- bicho -b gnome search --summary "crash"
80
+ bicho -b gnome search --summary "crash"
68
81
 
69
- bicho -b gnome search --help
82
+ bicho -b gnome search --help
83
+ ```
70
84
 
71
- == Authentication
85
+ ## Authentication
72
86
 
73
87
  For SUSE/Novell Bugzilla, a plugin loads the credentials from '~/.oscrc'.
74
88
 
75
89
  Otherwise, use the 'username:password@' part of the API URL.
76
90
 
77
- == Customizing Bicho: the user.rb plugin.
91
+ ## Customizing Bicho: the user.rb plugin.
78
92
 
79
93
  Plugins are included that provide shortcuts for the most common bugzilla sites.
80
94
 
@@ -83,13 +97,15 @@ There is a "user" plugin that does some of these shortcuts from a configuration
83
97
  The settings are read from '.config/bicho/config.yml'. There you can specify the default
84
98
  bugzilla site to use when none is specified and custom aliases.
85
99
 
86
- aliases:
87
- mysite: http://bugzilla.site.com
88
- default: mysite
100
+ ```yml
101
+ aliases:
102
+ mysite: http://bugzilla.site.com
103
+ default: mysite
104
+ ```
89
105
 
90
- == Extending Bicho
106
+ ## Extending Bicho
91
107
 
92
- === Plugins
108
+ ### Plugins
93
109
 
94
110
  Plugins are classes in the module Bicho::Plugins. They can implement hooks that are
95
111
  called at different points of execution.
@@ -111,26 +127,26 @@ called at different points of execution.
111
127
  The API url is derived from the site url, however some bugzilla installations may have
112
128
  different servers or endpoints.
113
129
 
114
- === Commands
130
+ ### Commands
115
131
 
116
132
  See the +Command+ class to implement more commands.
117
133
 
118
- == Known issues
134
+ ## Known issues
119
135
 
120
136
  * For now bugs respond to the bugs attributtes described in
121
137
  http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html, I intend to make those real attributes.
122
138
  * There is no check if an API is supported on the server side
123
139
 
124
- == Roadmap
140
+ ## Roadmap
125
141
 
126
142
  * Define the plugin hooks, right now there is one :-)
127
143
  * Shortcuts for the bugzilla URL (bicho -b bko search ..), a plugin?
128
144
 
129
- == Authors
145
+ ## Authors
130
146
 
131
147
  * Duncan Mac-Vicar P. <dmacvicar@suse.de>
132
148
 
133
- == License
149
+ ## License
134
150
 
135
151
  Copyright (c) 2011-2015 SUSE LLC
136
152
 
data/Rakefile CHANGED
@@ -8,10 +8,8 @@ extra_docs = ['README*', 'TODO*', 'CHANGELOG*']
8
8
  task default: [:test]
9
9
 
10
10
  Rake::TestTask.new do |t|
11
- t.libs << File.expand_path('../test', __FILE__)
12
- t.libs << File.expand_path('../', __FILE__)
13
- t.test_files = FileList['test/test*.rb']
14
- t.verbose = true
11
+ t.test_files = Dir.glob(File.join(Dir.pwd, '/test/test_*.rb'))
12
+ t.verbose = true if ENV['DEBUG']
15
13
  end
16
14
 
17
15
  begin
@@ -20,12 +18,12 @@ begin
20
18
  t.files = ['lib/**/*.rb', *extra_docs]
21
19
  t.options = ['--no-private']
22
20
  end
23
- rescue LoadError
24
- STDERR.puts 'Install yard if you want prettier docs'
25
- require 'rdoc/task'
26
- Rake::RDocTask.new(:doc) do |rdoc|
27
- rdoc.rdoc_dir = 'doc'
28
- rdoc.title = "bicho #{Bicho::VERSION}"
29
- extra_docs.each { |ex| rdoc.rdoc_files.include ex }
30
- end
21
+ rescue LoadError
22
+ STDERR.puts 'Install yard if you want prettier docs'
23
+ require 'rdoc/task'
24
+ Rake::RDocTask.new(:doc) do |rdoc|
25
+ rdoc.rdoc_dir = 'doc'
26
+ rdoc.title = "bicho #{Bicho::VERSION}"
27
+ extra_docs.each { |ex| rdoc.rdoc_files.include ex }
28
+ end
31
29
  end
@@ -17,6 +17,11 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency('highline', ['~> 1.6.2'])
18
18
  s.add_dependency('nokogiri')
19
19
 
20
+ s.add_development_dependency('rake')
21
+ s.add_development_dependency('minitest')
22
+ s.add_development_dependency('minitest-reporters')
23
+ s.add_development_dependency('rubocop')
24
+
20
25
  s.rubyforge_project = 'bicho'
21
26
 
22
27
  s.files = `git ls-files`.split("\n")
data/bin/bicho CHANGED
@@ -34,9 +34,9 @@ ft = HighLine::ColorScheme.new do |cs|
34
34
  cs[:even_row] = [:green]
35
35
  cs[:odd_row] = [:magenta]
36
36
  cs[:error] = [:red]
37
- cs[:remove] = [ :red ]
38
- cs[:add] = [ :green ]
39
- cs[:changeset] = [ :blue ]
37
+ cs[:remove] = [:red]
38
+ cs[:add] = [:green]
39
+ cs[:changeset] = [:blue]
40
40
  end
41
41
 
42
42
  HighLine.color_scheme = ft
@@ -75,7 +75,11 @@ EOS
75
75
  Bicho::Logging.logger.level = Logger::DEBUG if global_opts[:debug]
76
76
 
77
77
  # get the subcommand
78
- cmd = ARGV.shift rescue nil
78
+ cmd = begin
79
+ ARGV.shift
80
+ rescue
81
+ nil
82
+ end
79
83
 
80
84
  if !cmd || !SUB_COMMANDS.include?(cmd)
81
85
  Trollop.die "available subcommands: #{SUB_COMMANDS.join(' ')}"
@@ -88,7 +92,7 @@ EOS
88
92
  opts = cmd_instance.parse_options
89
93
 
90
94
  ret = cmd_instance.do(global_opts, opts, ARGV)
91
- rescue Exception => e
95
+ rescue StandardError => e
92
96
  Bicho::Logging.logger.error e.message
93
97
  Bicho::Logging.logger.error e.backtrace
94
98
  t.say("#{t.color('ERROR: ', :error)} #{t.color(e.message, :bold)}")
@@ -29,6 +29,7 @@ require 'bicho/logging'
29
29
  require 'bicho/client'
30
30
  require 'bicho/bug'
31
31
 
32
+ # All classes of the Bicho library belong to this module.
32
33
  module Bicho
33
34
  SEARCH_FIELDS = [
34
35
  # name, type, description, multi
@@ -55,5 +56,5 @@ module Bicho
55
56
  [:version, :strings, 'The Version field of a bug.', true],
56
57
  [:votes, :ints, 'Searches for bugs with this many votes or greater', false],
57
58
  [:whiteboard, :strings, "Search the 'Status Whiteboard' field on bugs for a substring.", true]
58
- ]
59
+ ].freeze
59
60
  end
@@ -0,0 +1,72 @@
1
+ #--
2
+ # Copyright (c) 2016 SUSE LLC
3
+ #
4
+ # Author: Duncan Mac-Vicar P. <dmacvicar@suse.de>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and associated documentation files (the
8
+ # "Software"), to deal in the Software without restriction, including
9
+ # without limitation the rights to use, copy, modify, merge, publish,
10
+ # distribute, sublicense, and/or sell copies of the Software, and to
11
+ # permit persons to whom the Software is furnished to do so, subject to
12
+ # the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be
15
+ # included in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+ #++
25
+ require 'stringio'
26
+
27
+ module Bicho
28
+ # Represents an attachment object for a given bug
29
+ class Attachment
30
+ attr_reader :props
31
+
32
+ def initialize(client, xmlrpc_client, props)
33
+ @client = client
34
+ @xmlrpc_client = xmlrpc_client
35
+ @props = props
36
+ end
37
+
38
+ # @return [Fixnum] attachment id
39
+ def id
40
+ props['id'].to_i
41
+ end
42
+
43
+ # @return [Fixnum] attachment bug id
44
+ def bug_id
45
+ props['bug_id'].to_i
46
+ end
47
+
48
+ # @return [String] attachment content type
49
+ def content_type
50
+ props['content_type']
51
+ end
52
+
53
+ # @return [Fixnum] attachment size
54
+ def size
55
+ props['size'].to_i
56
+ end
57
+
58
+ # @return [String] attachment summary
59
+ def summary
60
+ props['summary']
61
+ end
62
+
63
+ # @return [StringIO] attachmentdata
64
+ # This will be loaded lazyly every time called
65
+ def data
66
+ ret = @xmlrpc_client.call('Bug.attachments',
67
+ attachment_ids: [id], include_fields: ['data'])
68
+ @client.handle_faults(ret)
69
+ StringIO.new(ret['attachments'][id.to_s]['data'])
70
+ end
71
+ end
72
+ end