bugzyrb

A command-line bug/issue/feature tracking system using sqlite3 as a store. This is a port of bugzy.sh (bash-shell based tracker that uses tab delimited files).

This is not an extensive, full-fledged bug or issue tracker such a bugzilla. Its a simple tracker that maintains one sqlite file per directory. Thus, you could create one for each project.

Maintains priority, severity, status, fix, comments. All updates are logged.

A change in Sqlite3 not supporting arrayfields resulted in everything crashing. I’ve now fixed that – finally.

Purpose

There are already other command-line bug trackers, some ruby some not. I’ve had problems installing many. As far as ruby ones, some do not work on 1.9 and this bug has not been rectified for over a year. Others rely on gems that are broken and the maintainer has abandoned them.

So finally, for personal needs I wrote bugzy.sh. However, that’s bash shell based, and relies on GNU’s coreutils being installed with default_names options. I wish to get out of the mess of bash commands having different options across BSD and GNU ( I use a Mac, and use GNU coreutils ). So I am rewriting this simple issue tracker in ruby with sqlite3. The advantage over having data in a SQL database is that the user can query it easily. With having data in separate Yaml files, searching filtering etc is a big pain.

Features

  • “Easier than baking cookies”

  • “Leather Pants”

  • other features to come

Installation

sqlite3 itself has to be installed

sudo port install sqlite3

TODO Depends on :

  • subcommand (tiny wrapper over optionparser for subcommands)

  • sqlite3-ruby

  • highline - for accepting some input

  • terminal-table - for formatting output (this is optional) if you use list –bare, then you don’t need this gem

Install [Gemcutter](gemcutter.org) and execute:

$ sudo gem install bugzyrb

Example

TODO

init: Initialize a database with tables add: Add an issue – will prompt for fields qadd: Add an issue – will use defaults for all fields but title view: view given issue (or last entered)

bugzyrb help
bugzyrb help <command>
bugzyrb init
bugzyrb add  "Something does not work"
bugzyrb qadd "A new issue"
bugzyrb qadd --type "feature" --priority "P5" "Another issue"
bugzyrb view 1
bugzyrb list

# list without using terminal-table, for filtering purposes
bugzyrb list --bare
bugzyrb list --bare --delimited "|"

# list issues with title containing ruby but not containing python
bugzyrb list ruby -python

# list issues with title not containing python
bugzyrb list -- -python

bugzyrb list --short
bugzyrb list --long

Known Issues

TODO

  • Doesn’t make coffee (not yet)

  • Occassionally burns toast

Database

  • bugs table containing title, id, type, statuses, description, fix, start and due date, etc

  • comments table - any number of comments per issue

  • log - a log of whatever activity has happened per issue/bug.

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Rahul Kumar. See LICENSE for details.