hubot-pr-fu
hubot-pr-fu is a chat bot built on the Hubot framework. It was
initially generated by generator-hubot. The npm
module name is hubot-pr-fu
.
Installing the script
Integrating with exisiting bot
Install the script via npm
:
npm install hubot-pr-fu --save
Add the script to your external-scripts.json
file:
[ "hubot-pr-fu" ]
And start your bot
Running hubot-pr-fu Locally
You can test your hubot by running the following, however some plugins will not
behave as expected unless the environment variables they rely
upon have been set.
You can start hubot-pr-fu locally by running:
% bin/hubot -a slack
Notes
- There might be some inconsistency with determining the conflict of
PRs. GitHub's API returns a
mergeable
key in the response that has
three possible states: true
, false
and nil
. nil
state means
that the mergeability of that PR has not yet been determined, and a
background job has been scheduled. For reasons of making the logic
simpler, we don't display information about these nil
state PRs. So
there might be a rare case where the total number of PRs in status all
command doesn't match with the sum of mergeable PRs and
non-mergeable PRs in the same command's response.
Commands/Features
User specific commands
status all
This command returns the PR stats for the repo. This information would
include:
- Total open PRs
- Total PRs which are mergeable and those which are not
- List of users who have open PRs and links to each of those
status conflicts
This command returns all the PRs which have merge conflicts. This has
more detailed information for those compared to status all
command.
The title, PR number, link to that PR, assignee and the username who
opened this PR is included in the information.
status <username>
This command returns all the PRs opened by this user. This includes all
open PRs which are mergeable and non-mergeable. The username
is
assumed to be a valid Github username. For now, there is no
authorization or authentication built-in. Another assumption is that a
username in lowercase is same as capitalized or camelcased. That is, for
a username bootstrap
, the users Bootstrap
, bootStrap
are the same.
One caveat is that the robot will treat every string after status
other than all
and conflicts
as a username. So, don't abuse this.
Adding a way to make this better is in the works.
Configuration
Some env vars are assumed to exist:
The org
and repo
are the username or organization name and the
repository's name respectively. These have to be added to the
environment based on which project you want to configure the robot to
work with.
Getting a Slack Token
- Signin into Slack via https://slack.com/signin
- Head to https://.slack.com/services/new/bot
- Register a new bot with whatever name you want
- Save the service, and you'll be shown the API key. Grab this key and
k set it to
HUBOT_SLACK_TOKEN
Contribution
An example script is included at scripts/example.coffee
, so check it out to
get started, along with the Scripting Guide.