npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

poppins-pr-vote

v0.0.3

Published

btford/mary-poppins plugin for keeping track of votes in PRs.

Downloads

6

Readme

poppins-pr-vote

NPM version Apache License NPM downloads

Mary Poppins plugin for keeping track of votes in PRs.

poppins-pr-vote in action

When Mary Poppins is started on a repository with poppins-pr-vote as a properly configured plugin, it will automatically:

  • add a post as soon as a PR is submitted on that repo (see upper image)
  • listen for issue and diff comments on that PR and any commit in it
  • look for strings that represent positive or negative votes
  • update the first post with an updated "yes" and "no" counts, enriched with an entropy measure
  • optionally update the PR by assigning labels (see the Configure section) according to both votes and entropy

Of course, "yes" and "no" measures represent the number of positive and negative votes, while the entropy gives you a compact idea of how "messy" the PR is if related to people's votes:

Entropy for dummies LOL

Prerequisites (aka Get Poppin')

You need a Mary Poppins instance already configured on your repository. We will quickly cover the main aspect of the initial setup, for further information please refer to the official README.

Install mary-poppins as a global npm package:

npm install -g mary-poppins

Then, create a basic config.js file in any directory you like by running:

mary-poppins init

At this point, you need to configure the config file that was just created by editing the appropriate attributes of the poppins.config object, e.g.:

poppins.config = {
  // Github repo to watch
  // https://github.com/target-organization/target-repo
  target: {
    user: 'target-organization',
    repo: 'target-repo'
  },

  // Credentials for user who leaves comments, etc.
  // You may want to load these from a seperate file like `config-credentials.js`, and
  // add this file to your `.gitignore` list
  login: {
    username: 'awesome-bot',
    password: 'password123ofcourse'
  },

  // GitHub will send WebHooks events here
  hook: {
    url: 'http://my-mary-poppins-url.com',
    port: '4567'
  }
}

Mary Poppins is now able to automatically install the WebHook by running:

mary-poppins install config.js

Install

In the same directory of your config.js file, run:

npm install poppins-pr-vote

run to mary oh sweet mary

Configure

Before setting up the plugin, you need to edit the Webhook previously created by mary-poppins by enabling the pull_request_review_comment, named "Pull Request review comment - Pull Request diff commented on".

To use this plugin, you need to load it in your config file with couldYouPlease:

// config.js
module.exports = function (poppins) {
  
  // we already took care of this
  poppins.config = { /*...*/ };

  // load the pr-vote plugin
  poppins.couldYouPlease('pr-vote');

  // pr vote main settings
  poppins.plugins.prVote.greeting = 'Thanks for the PR!';
  poppins.plugins.prVote.responseBody: 'Yays: <%= yays %>\nNays: <%= nays %>\nEntropy: <%= entropy %>';
  poppins.plugins.prVote.closing = 'Farewell.';

  // pr vote configuration
  poppins.plugins.prVote.voteYay = ':+1:';
  poppins.plugins.prVote.VoteNay = ':x:';

  // pr vote labels
  poppins.plugins.prVote.labelEntropyLow: 'pr:nice';
  poppins.plugins.prVote.labelEntropyHigh: 'pr:mess';
  poppins.plugins.prVote.labelYay: 'pr:yay';
  poppins.plugins.prVote.labelNay: 'pr:nay';

  // pr vote thresholds
  poppins.plugins.prVote.thresholdMaxLowEntropy: 0.45;
  poppins.plugins.prVote.thresholdMinHighEntropy: 0.65;
  poppins.plugins.prVote.thresholdAcceptableVote: 0.65;
};

By default, Mary Poppins will automatically count votes and respond or edit her (its?) first comment with updated counts and entropy. If labels are set, they will be automatically updated.

The following is the complete list of every configuration you might want to set.

poppins.plugins.prVote.greeting

String to start the response with. Defaults to "Thanks for the PR!".

poppins.plugins.prVote.closing

String to start the response with. Defaults to "Farewell.".

poppins.plugins.prVote.responseBody

String to be interpolated with yays, nays and entropy values. Defaults to "Yays: <%= yays %>\nNays: <%= nays %>\nEntropy: <%= entropy %>".

poppins.plugins.prVote.voteYay

String that will be matched for a positive vote. Defaults to ":+1:".

poppins.plugins.prVote.VoteNay

String that will be matched for a negative vote. Defaults to ":x:".

poppins.plugins.prVote.labelEntropyLow

Label added to a PR if the votes entropy is lower than poppins.plugins.prVote.thresholdMaxLowEntropy. Defaults to "pr:nice". Optional, if undefined, such label won't be added/removed.

poppins.plugins.prVote.labelEntropyHigh

Label added to a PR if the votes entropy is higher than poppins.plugins.prVote.thresholdMinHighEntropy. Defaults to "pr:mess". Optional, if undefined, such label won't be added/removed.

poppins.plugins.prVote.labelYay

Label added to a PR if the voting proportion outcome is positive (higher than poppins.plugins.prVote.thresholdAcceptableVote). Defaults to "pr:yay". Optional, if undefined, such label won't be added/removed.

poppins.plugins.prVote.labelNay

Label added to a PR if the voting outcome is negative (lower than poppins.plugins.prVote.thresholdAcceptableVote). Defaults to "pr:nay". Optional, if undefined, such label won't be added/removed.

poppins.plugins.prVote.thresholdMaxLowEntropy

Maximum entropy value for a "good" PR. Defaults to 0.45.

poppins.plugins.prVote.thresholdMinHighEntropy

Minimum entropy value for a "bad" PR. Defaults to 0.65.

poppins.plugins.prVote.thresholdAcceptableVote

Minimum positive votes rate for a "positive" PR. Defaults to 0.65.

Start!

All you need to do now is to start mary-poppins by pointing at the config.js:

mary-poppins start config.js

License

   Copyright 2014 Francesco Pontillo

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.