bugzyrb

A command-line bug/issue/feature tracking system using sqlite3 as a store. This is a port of bugzy.txt (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.

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 (bugzy.txt). However, that is 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

  • Saves bugs with priority (P1-P5), description, comments, fix and other data

  • Various statuses: started/open/closed/canceled

  • Various reports

Changes

0.5.0

  • Removed dependence on ‘terminal-table` which gives errors with colored output.

  • Removed dependence on array_fields due to changes in sqlite3.

  • Takes columns of terminal thus listing takes entire available width.

0.4.0

0.4.0 has a backward-incompatible change.

“priority” took priority code first then item numbers. all other commands take item numbers first and then other information. So now priority also takes item numbers first.

Earlier you would do:

bu priority P5 3 4 5

Now you would do:

bu priority 3 4 5 P5

Installation

sqlite3 itself has to be installed

brew install sqlite3

Depends on :

  • subcommand (tiny wrapper over optionparser for subcommands)

  • sqlite3

  • highline - for accepting some input

    $ gem install bugzyrb
    

Example

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

I’ve also written a couple of shell-scripts for reporting from the sql tables

gist.github.com/1437194 gist.github.com/1437244

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.