This project is no longer maintained
I can no longer work on fogbugz-mode unless I have an account to use or if I add more fake API calls to the included fake API server. I’m no longer employed at a workplace that uses FogBugz. If I get around to another place that uses FogBugz then I’ll continue work on this.
I think this is a good enough start for other FogBugz/Emacs users to get going with.
License and COPYING
See COPYING for license and copyright information.
What is fogbugz-emacs?
Fogbugz-emacs is an interface for interacting with the FogBugz bug tracking system. It lets you view, create, and update cases, projects, and whatever else the FogBugz API gives you access to.
The FogBugz website has a listing of all the functionality that their API provides. fogbugz-emacs aims to implement support for all of that functionality.
Org Mode Integration
fogbugz-emacs can be integrated with org-mode and that was the original intention for creating fogbugz-emacs. Using properties it can pull in more information about cases and construct a full list of cases for a project.
The Mock Server
fogbugz-emacs comes with a web server that simulates the FogBugz API. This was created due to a lack of Internet when moving into a new place. Another reason is that sometimes you can’t do things live. At work, it would be a problem to create multiple projects and cases while working on fogbugz-emacs. Other users would see this and think something is wrong.
A local mock server reduces latency to…basically no latency.
I tried to replicate as much functionality as possible. My reasoning is that an interface to a web API is incomplete, and very very optimistic, if it can only handle positive cases. It should be able to handle the cases where something goes wrong.
The mock server is written in Common Lisp and has been tested with SBCL on GNU/Linux. It uses the fantastic Hunchentoot web server library and the CXML library to generate the XML output.
Autologin when token is out of date
Need to store a token
List case filters, file:./fogbugz.el::fogbugz-list-filters
Set the current case filter, file:./fogbugz.el::fogbugz-set-current-filter
Get the current case filter, file:./fogbugz.el::fogbugz-get-current-filter
Set the current case filter and list cases for it
List cases for current case filter
Map lispy names back to fogbugz as an HTTP parameter, file:./fogbugz.el::fogbugz-convert-lispy-column-names
List projects, file:./fogbugz.el::fogbugz-list-projects
List areas for a project
List statuses, file:./fogbugz.el::fogbugz-list-statuses
List milestones (a.k.a fix-fors)
Mapping field names of fogbugz objects to lispy names
When a field name begins with “f” it’s a boolean value, should be converted “true” to T and the “false” to NIL. The lispy name should be suffixed with “-p”.
When a field name begins with “s” it’s a string value.
When it begins with “ix” it’s an ID of another object so “-id” should be the suffix of the lispy name.
The type notation should be dropped from the field name when converting to the lispy name.
Pull case from API
Create new case
Tags are listed beside the item.
Assumes that the TODO statuses are setup the same way.
Push case to API
Using a timestamp stored in the properties, Last-Updated or something like that. Need to be able to force updating with a prefix argument.
Create tags alist
Modify tags alist so that it makes categories a separate tag group, file:org-fogbugz.el::org-fogbugz-tag-alist
List DONE statuses
List TODO statuses
[#A] Implement view case command
[#B] Implement create case command
[#B] Implement edit case command
Implement login command
Implement log off command
Implement list filters command
Implement API version command
Example Project:The Farm (expected output from org-fogbugz)
This is the expected output from the org-fogbugz code.
Duck, Duck… but No Goose!
(The TODO status is set when the case is open, when it’s closed, the status is switched to DONE)
(This is the latest text summary) I searched the docs, but no goose!
(There is no due date for this case, but if there were, it’d be used for the DEADLINE)