Skip to content

dmacvicar/bicho

Repository files navigation

Bicho

stable maintained Build Status

Introduction

Library to access bugzilla and command line tool.

Its main goal is to be clean and provide a command line tool that exposes its features.

Features

Main use case is report generation, therefore only the following features are implemented right now:

  • get bugs
  • search bugs (create queries)

Plugins can be written to deal with specific bugzilla installations.

Additionally, some utilities are provided, like exporting the total number of bugs of a query to the Prometheus push gateway format.

Example (API)

Client API

require 'bicho'

server = Bicho::Client.new('http://bugzilla.gnome.org')
server.get_bugs(127043).each do |bug|
  puts bug.summary
  puts bug.url

  puts bug.history
end

You can give more than one bug or a named query, or both:

server.get_bugs(127043, 432423) => [....]
server.get_bugs("Named list") => [....]
server.get_bugs("Named list", 4423443) => [....]

ActiveRecord-like API

To use the ActiveRecord like interface over the +Bug+ class, you need first to set the Bicho common client:

require 'bicho'

Bicho.client = Bicho::Client.new('https://bugzilla.gnome.org')

Bicho::Bug.where(product: 'vala', status: 'resolved').each do |bug|
  # .. do something with bug
end

Or alternatively:

Bicho::Bug.where.product('vala').status('resolved').each do |bug|
  # .. do something with bug
end

Example (CLI)

bicho -b http://bugzilla.gnome.org show 127043

bicho -b gnome history 127043

bicho -b gnome search --summary "crash"

bicho -b gnome search --help

Authentication

For SUSE/Novell Bugzilla, a plugin loads the credentials from '~/.oscrc'.

Otherwise, use the 'username:password@' part of the API URL.

Customizing Bicho: the user.rb plugin.

Plugins are included that provide shortcuts for the most common bugzilla sites.

There is a "user" plugin that does some of these shortcuts from a configuration file.

The settings are read from '.config/bicho/config.yml'. There you can specify the default bugzilla site to use when none is specified and custom aliases.

aliases:
    mysite: http://bugzilla.site.com
default: mysite

Extending Bicho

Plugins

Plugins are classes in the module Bicho::Plugins. They can implement hooks that are called at different points of execution.

  • default_site_url_hook

    If no site url is provided the last one provided by a plugin will be used.

  • transform_site_url_hook

    This hook is called to modify the main site url (eg: http://bugzilla.suse.com). Use it when a plugin wants to provide an alternative url to a well-known bugzilla or a shortcut (eg: bnc) that will be expanded into a site url. Plugin order is not defined so make sure your plugin focuses in one type of shortcut as another plugin can also change your returned value in their hooks.

  • transform_api_url_hook

    The API url is derived from the site url, however some bugzilla installations may have different servers or endpoints.

  • transform_xmlrpc_client_hook

    This hook allows to modify the XMLRPC::Client object.

Commands

See the +Command+ class to implement more commands.

Known issues

Roadmap

  • Define the plugin hooks, right now there is one :-)
  • Shortcuts for the bugzilla URL (bicho -b bko search ..), a plugin?

Authors

License

Copyright (c) 2011-2015 SUSE LLC

Bicho is licensed under the MIT license. See MIT-LICENSE for details.

About

ruby Bugzilla access library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages