Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
130 lines (94 sloc) 5.72 KB

PushBot is an IRC bot that manages the topic in an IRC channel that has a push train.

USAGE

.join                      -- Join the queue for a normal push wherever its convenient
.join config               -- Join the queue for a config push
.join HOLD                 -- A HOLD that is queued and named
.join HOLD "message"       -- You can set a message when you join
.join askme                -- Join the queue and suggest that people ask you before joining along
.join before USER          -- Join before the given user
.join with USER            -- Join the queue at the first position with [username]
.join config with USER     -- You can string join commands together
.join last                 -- Join at the end of the queue
.at {commit,dev,...}       -- Set the state of your push to being at the given value
.in                        -- Mark yourself as having your code checked in
.good                      -- Mark yourself as all-good in the current push state
.uhoh                      -- Mark yourself as not-all-good in the current push state
.done                      -- Mark the head of the push queue as done
.nevermind                 -- Hop out of the queue
.pop                       -- Remove your last entry in the queue
.hold "message"            -- Set a hold with a message. Don't forget the quotes.
.unhold                    -- Release the hold
.message "message"         -- Set a message. Don't forget the quotes.
.message -                 -- Remove the message
.kick username             -- Punt someone from the queue
.drive                     -- Make yourself the leader of the first push group you're in
.config                    -- Get a link to the PushBot settings page
.help                      -- Show Help Information

Join #pushbot to play around with pushbot and see how it works.

An Example

Let's say you're in an IRC channel named #push and it has the initial topic "clear". PushBot can help organize a push queue.

                                       TOPIC: clear
  alice> .join                         TOPIC: alice
    bob> .join with alice              TOPIC: alice + bob
pushbot> alice, bob: You're up         TOPIC: alice + bob
    bob> .good                         TOPIC: alice + bob*
  alice> .good                         TOPIC: alice* + bob*
pushbot> alice, bob: Everyone is ready TOPIC: alice* + bob*
  carol> .join                         TOPIC: alice* + bob* | carol
  alice> .at preprod                   TOPIC: <preprod> alice + bob | carol
  alice> .good                         TOPIC: <preprod> alice* + bob | carol
    bob> .good                         TOPIC: <preprod> alice* + bob* | carol
pushbot> alice, bob: Everyone is ready TOPIC: <preprod> alice* + bob* | carol
  alice> .at prod                      TOPIC: <prod> alice + bob | carol
  alice> .good                         TOPIC: <prod> alice* + bob | carol
   dave> .join                         TOPIC: <prod> alice* + bob | carol + dave
    bob> .good                         TOPIC: <prod> alice* + bob* | carol + dave
pushbot> alice, bob: Everyone is ready TOPIC: <prod> alice* + bob* | carol + dave
  alice> .done                         TOPIC: carol + dave
pushbot> carol, dave: You're up        TOPIC: carol + dave

Configuring PushBot For Your Handle

You can modify a few settings within PushBot with respect to your IRC handle.

  • You can tell PushBot to try to be quiet when you're driving
  • You can have PushBot send you Notifo notifications when you're at the head of the queue

To configure PushBot, head to http://[pushbot-hostname]:8080/

Tricks For Suppressing Pushbot Topic Change Spam

Colloquy

Edit the CSS for your chosen style. If you're suing "DecafBland - Inverted", for instance, you should open the file

/Applications/Colloquy.app/Contents/Resources/Styles/DecafBland.colloquyStyle/Contents/Resources/Variants/Inverted.css

and add the line

.event { display: none; }

That'll get rid of all event messages (joins, parts, topic changes), and could be too much, so you might want to make a variant of your style just for #push.

Limechat

Edit the CSS for your chosen style, for instance

/Applications/LimeChat.app/Contents/Themes/Limelight.css

and add the lines

html[channelname="#push"] div[type=topic] {
    position: fixed;
    top: 0;
    left: 0;
    padding-left: 0 !important;
    background: #000;
    width: 100%;
}

That'll move all topics in the #push channel to a line on the top of the channel, with new topics covering up old topics.

IRSSI

/ignore -channels #push * TOPICS

WeeChat

/filter add hush_pushbot irc.host.#push irc_topic pushbot

Other Clients

If you have instructions for other clients, send them to me and I'll add them.

Hacking

To build and run PushBot, run

> cd PushBot
> mvn test
> mvn package
> java -jar target/PushBot.jar --name pushbot --channels "#push,#pushbot" --irc-host "irc.network.net" --irc-port 6667 --irc-pass "password"
Jump to Line
Something went wrong with that request. Please try again.