• Stars
    star
    218
  • Rank 181,805 (Top 4 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 14 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Taskmapper provides a universal API to bug tracking and project management systems using Ruby

Taskmapper

Taskmapper is a Gem which eases communication with various project and ticket management systems by providing a consistent Ruby API.

Taskmapper let's you "remap" a system into the consistent Taskmapper API, easily. For instance the description of an issue/ticket, might be named description in one system, and problem-description somewhere else. Via Taskmapper, this would always be called description. The Taskmapper remaps makes it easy for you to integrate different kinds of ticket systems, into your own system. You don't have to take care of all the different kinds of systems, and their different APIs. Taskmapper handles all this for you, so you can focus on making your application awesome.

Installation

Taskmapper is a Gem, so we can easily install it by using RubyGems:

gem install taskmapper

Taskmapper depends on Hashie, which is an amazing library which makes converting objects to hashes, and the other way around, a joy. It should be installed automatically whenever installing taskmapper.

Finding and installing a provider

Taskmapper by itself won't do too much. You may want to install a provider, to retrieve a list of available providers issue the following command:

gem search taskmapper

You could then install for instance taskmapper-pivotal:

gem install taskmapper-pivotal

Usage

Note: The API may change, and the following may not be the final. Please keep yourself updated before you upgrade.

First, we instance a new class with the right set of options. In this example, we are authenticating with Pivotal Tracker.

pivotal = taskmapper.new(:pivotal, {:username => "john", :password => "seekrit"})

Grabbing a project

Now that we've got out Taskmapper instance, let's go ahead and grab "testproject":

project = pivotal.project["testproject"]
    #=> TaskMapper::Project<#name="testproject"..>

Project#[] is an alias to Project#find:

project = pivotal.project.find "testproject"
    #=> TaskMapper::Project<#name="testproject"..>

Which translates into:

project = pivotal.project.find :name => "testproject"
    #=> TaskMapper::Project<#name="testproject"..>

That means you can actually look up a project by something else than the title, like the owner:

project = pivotal.project.find :owner => "Sirupsen"
    #=> TaskMapper::Project<#owner="sirupsen"..>

To retrieve all projects, simply pass no argument to find:

project = pivotal.project.find
    #=> [TaskMapper::Project<#..>,TaskMapper::Project<#..>,..]

Creating a ticket

Now that we grabbed the right project. Let's go ahead and create a ticket at this project:

project.ticket!(:title => "Test", :description => "Hello World")

We create our ticket with three properties.

Finding tickets

Alright, let's play with the projects tickets! Here we grab the ticket with the id of 22:

ticket = project.tickets(:id => 22)
    #=> TaskMapper::Ticket<#id=22..>

Like with projects, we can also find tickets by other attributes, like title, priority and so on, with tickets we do not use a find method though. Also as with projects, if no argument is passed, all tickets are retrieved:

tickets = project.tickets
    #=> [TaskMapper::Ticket<#..>,TaskMapper::Ticket<#..>,..]

Changing ticket attributes

Let's say that we're working on this ticket right now, so let's go ahead and change the status to reflect that:

ticket.status = :in_progress

Other valid ticket statuses include:

:closed, :accepted, :resolved

For the sake of example, we'll change the description as well, and then save the ticket.

ticket.description = "Changed description to something else!"
ticket.save

Closing a ticket

The issue was solved, let's make that official by closing the ticket with the appropriate resolution:

ticket.close(:resolution => "fixed", :description => "Fixed issue by doing x")

Note that you could close the ticket by changing all the attributes manually, like so:

ticket.status = :closed
ticket.resolution = "fixed"
ticket.resolution_description = "Fixed issue by doing x"
ticket.save

However, as closing a ticket with a resolution is such a common task, the other method is included because it may be more convenient.

Support

Currently Taskmapper supports the following systems:

Pivotal Tracker

To use Pivotal Tracker with Taskmapper, install it: gem install taskmapper-pivotal

Then simply require it, and you are good to use Pivotal Tracker with Taskmapper!

require 'taskmapper'
require 'taskmapper-pivotal'
pivotal = taskmapper.new(:pivotal, {:username => "..", :password => ".."})

The source code is located at taskmapper-pivotal

Lighthouse

To use Lighthouse with Taskmapper, install it: gem install taskmapper-lighthouse

Then simply require it, and you are all set to use Lighthouse with Taskmapper!

require 'taskmapper'
require 'taskmapper-lighthouse'
lighthouse = taskmapper.new(:lighthouse, {:username => "..", :password => ".."})

The source code is located at taskmapper-lighthouse

Basecamp

To use Basecamp with Taskmapper, install it: gem install taskmapper-basecamp

Once you require it, then you are ready to use Basecamp with Taskmapper

require 'taskmapper'
require 'taskmapper-basecamp'
basecamp = taskmapper.new(:basecamp, :domain => 'yourdomain.basecamphq.com', :username => 'you', :password => 'pass')

The source code is located at taskmapper-basecamp

Github

To use Github Issue tracking with Taskmapper, install it: gem install taskmapper-github

Once you require it, then you are ready to use Github and Taskmapper

require 'taskmapper'
require 'taskmapper-github'
github = taskmapper.new(:github, :username => 'you', :password => 'pass')

The source code is located at taskmapper-github

Unfuddle

To use Unfuddle with Taskmapper, install it: gem install taskmapper-unfuddle

Then simply require it, and you are good to use Unfuddle with Taskmapper!

require 'taskmapper'
require 'taskmapper-unfuddle'
unfuddle = taskmapper.new(:unfuddle, {:username => "..", :password => "..", :account => ".."})

The source code is located at taskmapper-unfuddle

Kanbanpad

To use Kanbanpad with taskmapper, install it: gem install taskmapper-kanbanpad

Once you require it, you can connect to Kanbanpad using Taskmapper!

require 'taskmapper'
require 'taskmapper-kanbanpad'
kanbanpad = taskmapper.new(:kanbanpad, {:username => "xx", :password => "xx"})

The source code is located at taskmapper-kanbanpad

Redmine

To use Redmine with Taskmapper, install it: gem install taskmapper-redmine

Just require it, and you are ready to use Redmine with Taskmapper!

require 'taskmapper'
require 'taskmapper-redmine'
redmine = taskmapper.new(:redmine, {:username => "..", :password => "..", :server => ".."})

The source code is located at taskmapper-redmine

Trac

To use Trac with Taskmapper, install it: gem install taskmapper-trac

Require it, and you are happening to call Trac with Taskmapper!

require 'taskmapper'
require 'taskmapper-trac'
trac = taskmapper.new(:trac, {:username => "..", :password => "..", :url => ".."})

The source code is located at taskmapper-trac

Bugzilla

To use Bugzilla with Taskmapper, install it: gem install taskmapper-bugzilla

Require and you can talk to Bugzilla with Taskmapper!

require 'taskmapper'
require 'taskmapper-bugzilla'
codaset = taskmapper.new(:bugzilla, {:username => "foo", :password => "bar", :url => "https://bugzilla.mozilla.org"})

The source code is located at taskmapper-bugzilla

Taskmapper CLI

For the full documentation on the CLI taskmapper-cli

Installing the CLI

gem install taskmapper-cli

Creating a provider

Creating a provider consists of three steps:

  • Run the generator like this: tm generate --provider-name='myprovider'
  • Implement whatever is needed to connect to your desired backend
  • Release it to RubyGems

Create the Taskmapper provider

Thanks to a simple generator, it is easy to get started with a new provider. Run this from the command line: tm generate --provider-name='myprovider'

This will generate a new skeleton provider called taskmapper-myprovider in the current directory. Create a repo from that directory, and you can start implementing your provider.

Almost all APIs are different. And so are their Ruby providers. Taskmapper attempts to create an universal API for ticket and project management systems, and thus, we need to map the functionality to the Taskmapper API. This is the providers job. The provider is the glue between Taskmapper, and the task management system's API. Usually, your provider would rely on another library for the raw HTTP interaction. For instance, taskmapper-lighthouse relies on ActiveResource in order to interact with the Lighthouse API. Look at it like this:

Taskmapper -> Provider -> (Ruby library) -> Site's API

Provider being the glue between the site's API and Taskmapper. The Ruby library is "optional" (though highly recommended as mentioned), therefore it is in parantheses.

An example of a provider could be taskmapper-lighthouse, an example of a Ruby library could be ActiveResource.

For now, look at taskmapper-lighthouse as an example on how to create a provider. More detailed documentation will be available soon.

Release it

Simply release it to RubyGems.org, the name of the provider Gem should follow this simple naming rule:

taskmapper-<provider's name>

For instance if you set for a Github provider, it would be named:

taskmapper-github

This makes it easy for people to find providers, simply by issuing:

gem search -r taskmapper

They should be presented with a nice list of all available providers.

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so we 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 so we can ignore when we pull)
  • Send us a pull request. Bonus points for feature branches.

Copyright

Copyright (c) 2010-2013 The Hybrid Group. See LICENSE for details.

More Repositories

1

gobot

Golang framework for robotics, drones, and the Internet of Things (IoT)
Go
8,734
star
2

gocv

Go package for computer vision using OpenCV 4 and beyond. Includes support for DNN, CUDA, OpenCV Contrib, and OpenVINO.
Go
6,636
star
3

cylon

JavaScript framework for robotics, drones, and the Internet of Things (IoT)
JavaScript
3,979
star
4

artoo

Ruby framework for robotics, drones, and the Internet of Things (IoT)
Ruby
1,533
star
5

gabba

Simple way to send server-side notifications to Google Analytics
Ruby
464
star
6

gort

Command Line Interface (CLI) for RobotOps
Go
434
star
7

kidsruby

KidsRuby is a Ruby programming environment meant for kids to learn and have fun!
JavaScript
333
star
8

rubyserial

FFI Ruby library for RS-232 serial port communication
Ruby
154
star
9

mechanoid

Mechanoid is a framework for WebAssembly applications on embedded systems and IoT devices.
Go
145
star
10

node-bebop

A Node.js client for controlling Parrot Bebop & Bebop2 quadcopters.
JavaScript
144
star
11

robeaux

Universal dashboard to robotic devices based on React
CSS
125
star
12

GitHub-Wikifier

A pre-commit Git Hook that will generate all the Table of Contents you will ever need. Just write your content, and let it take over.
Shell
100
star
13

gitnesse

Acceptance testing with Cucumber using a git-based wiki to store feature stories
Ruby
88
star
14

cppp-io

Common Protocol for Programming Physical Input and Output
72
star
15

cylon-raspi

Cylon adaptor for the Raspberry Pi
JavaScript
69
star
16

go-ncs

Go language bindings for the Intel Movidius Neural Compute Stick
Go
49
star
17

watchbot

Pebble watch app to control robotic devices
JavaScript
46
star
18

cylon-sphero

Cylon adaptor for Sphero robot
JavaScript
46
star
19

cylon-firmata

Cylon adaptor for the Firmata protocol
JavaScript
45
star
20

artoo-arduino

Artoo adaptor for the Arduino microcontroller.
Ruby
45
star
21

tinyglobo

A pico balloon floats into the great big world, towing a RP2040 Pico programmed with TinyGo
Go
42
star
22

kidsruby-class-1

Class notes for KidsRuby Class 1
Ruby
40
star
23

gophercon-2019

Go
37
star
24

cylon-intel-iot

Cylon adaptors for the Intel Edison & Galileo
JavaScript
36
star
25

cylon-leapmotion

Cylon adaptor for the Leap Motion
JavaScript
35
star
26

gophercar

Gophercar is a DIY platform for self-driving miniature cars using the Go programming language.
Go
34
star
27

artoo-raspi

Artoo adaptor for the Raspberry Pi
Ruby
32
star
28

commander

Mobile application to control robots
JavaScript
30
star
29

cylon-ble

Cylon.js adaptor/drivers for Bluetooth LE
JavaScript
29
star
30

cylon-neurosky

Cylon adaptor/driver for the Neurosky Mindwave
JavaScript
28
star
31

cylon-sphero-ble

Cylon.js driver for the Sphero BB-8 & Sphero Ollie robots
JavaScript
26
star
32

gophercon-2017

Hardware hack day support info for Gophercon 2017 and beyond!
Go
26
star
33

cvscope

Experimental CLI tool for visually exploring video image filters and algorithms that are part of OpenCV. Written in Go using GoCV.
Go
25
star
34

artoo-sphero

Artoo adaptor for the Sphero robot.
Ruby
24
star
35

cylon-spark

Cylon adaptor for the Spark core device
JavaScript
24
star
36

cylon-octoblu

Cylon adaptor/driver for the Octoblu machine to machine messaging system
JavaScript
23
star
37

gophercon-2018

Gophercon hardware hackday
Go
22
star
38

cylon-opencv

Cylon adaptor and driver for OpenCV
JavaScript
20
star
39

cylon-beaglebone

Cylon adaptor for the Beaglebone Black single board computer
JavaScript
20
star
40

artoo-ardrone

Artoo adaptor for the ARDrone 2.0 quadcopter
Ruby
20
star
41

cylon-bebop

Cylon.js driver/adaptor for Parrot Bebop drone
JavaScript
19
star
42

cylon-gpio

Cylon drivers for GPIO devices
JavaScript
19
star
43

cylon-crazyflie

Cylon adaptor/driver for the Crazyflie nanocopter
JavaScript
18
star
44

cylon-ardrone

Cylon adaptor and drivers for the Parrot ARDrone 2.0
JavaScript
17
star
45

gopherbot

A robotic gopher plushie that you can code using TinyGo.
Go
17
star
46

kidsrubyinstaller-osx

KidsRuby installer for OSX
Shell
16
star
47

cylon-api-socketio

Cylon.js API plugin for Socket.io
JavaScript
15
star
48

gobot-firmata

Gobot adaptor for the Firmata protocol
Go
14
star
49

cylon-tessel

Cylon adaptor for the Tessel
JavaScript
13
star
50

cylon-mip

Cylon.js driver for MIP
JavaScript
13
star
51

cylon-site

Website for Cylon.js - JavaScript robotics framework using Node.js
HTML
13
star
52

kidsruby-os

KidsRuby helps kids learn to program using the awesome language Ruby anywhere they go, just bring their own USB drive, plug in, and reboot.
Ruby
13
star
53

artoo-opencv

Artoo drivers for OpenCV computer vision library
Ruby
12
star
54

artoo-leapmotion

Artoo adaptor for the Leap Motion controller
Ruby
11
star
55

taskmapper-redmine

Ticketmaster provider for Redmine API
Ruby
11
star
56

cylon-api-http

Cylon.js API plugin for http/https
JavaScript
11
star
57

cylon-i2c

Cylon.js drivers for i2c devices
JavaScript
11
star
58

kidsrubyinstaller-windows

KidsRuby installer for Windows
Ruby
10
star
59

mechanoid-examples

Examples written using Mechanoid framework for WASM-based embedded development.
Go
10
star
60

kidsruby-examples

KidsRuby examples
Ruby
10
star
61

gobot-site

Website for Gobot - Golang framework/set of libraries for robotics and physical computing
Haml
9
star
62

gobot-gpio

Gobot drivers for GPIO devices
Go
9
star
63

gobot-spark

Gobot adaptor for the spark core
Go
9
star
64

kidsruby-site

Have fun and learn Ruby programming for free! Works on any computer.
CSS
9
star
65

gopherboat

Robotic boat programmed using TinyGo
Go
8
star
66

cylon-speech

Cylon adaptor/driver for the eSpeak Text To Speech software
JavaScript
8
star
67

gobot-beaglebone

Gobot adaptor for the Beaglebone Black development board
Go
8
star
68

cylon-joystick

Cylon adaptor and driver for HID joysticks/controllers
JavaScript
8
star
69

artoo-roomba

Artoo adaptor for the Roomba robot.
Ruby
8
star
70

artoo-pebble

Artoo adaptor for the Pebble smart watch
Ruby
8
star
71

artoo-spark

Artoo adaptor for the Spark core device
Ruby
8
star
72

kidsruby-cookbooks

KidsRuby Chef recipes used for build server
Ruby
7
star
73

cylon-hue

Cylon.js adaptor/driver for Phillips Hue
JavaScript
7
star
74

gophercon-2024

Go
7
star
75

hacklab-2019

GoLab 2019 "HackLab" for hardware hacking using Go
Go
7
star
76

cylon-mqtt

Cylon.js adaptor/driver for MQTT protocol
JavaScript
7
star
77

cylon-audio

Cylon.js adaptor/driver for audio
JavaScript
6
star
78

cylon-rapiro

Cylon adaptor/driver for the Rapiro bipedal robot
JavaScript
6
star
79

hashcode

Just a little fun project to chart the results of #code2014
Ruby
6
star
80

taskmapper-github

Ticketmaster provider for Github ticket system
Ruby
6
star
81

taskmapper-unfuddle

Ticketmaster provider for Unfuddle
Ruby
6
star
82

artoo-joystick

Artoo adaptor and driver for any SDL joystick
Ruby
6
star
83

artoo-gpio

Artoo standard drivers for GPIO devices
Ruby
6
star
84

gopherconeu-2024

Go
5
star
85

gobot-sphero

Gobot adaptor for Sphero robot
Go
5
star
86

gobot-dotgo-2017

Gobot workshop for dotGo
Go
5
star
87

artoo-neurosky

Artoo adaptor/drivers for the Neurosky Mindwave Mobile
Ruby
5
star
88

gobot-opencv

Go
5
star
89

artoo-keyboard

Artoo adaptor/driver for keyboard interaction
Ruby
5
star
90

taskmapper-lighthouse

Ticketmaster provider for Lighthouse
Ruby
5
star
91

gophercon-2022

Hardware hack session at Gophercon 2022
Go
5
star
92

gobot-ardrone

Gobot adaptor and drivers for the Parrot ARDrone 2.0
Go
5
star
93

taskmapper-basecamp

Ticketmaster provider for 37 Signals' Basecamp
Ruby
5
star
94

cylon-chip

Cylon.js adaptor for the C.H.I.P. $9 computer
JavaScript
5
star
95

cylon-wiced-sense

Cylon.js driver for WICED Sense
JavaScript
5
star
96

phonegap-cylon-spark

An phonegap app to control spark with cylon
CSS
5
star
97

gdg-2019

Hardware hack session at the GDG Leads Summit 2019
Go
5
star
98

cylon-keyboard

Cylon adaptor and driver for keyboard input
JavaScript
5
star
99

taskmapper-assembla

Ticketmaster provider for Assembla API
Ruby
4
star
100

gopherconeu-2022

Go
4
star