babel / babel-bot

🤖 A helpful bot to automate common tasks on Babel Issues/PRs
75 stars 18 forks source link

Move to Probot #43

Open hzoo opened 6 years ago

hzoo commented 6 years ago

https://github.com/probot/probot

Should use the framework instead of our own thing

DrewML commented 6 years ago

Works for me. I've clearly been terrible about maintaining this. You always assume something is going to be small and not need a framework, and then it grows 😆

aaronang commented 6 years ago

I would love to work on this but currently, I have to focus on graduating first 😞 I will check in again once I am done with my master's thesis.

ericduran commented 6 years ago

Is this still a want? I've been looking over at probot and the handlers currently in this repo.

I figure I could start with some of the most basic handlers and slowly start moving it over one by one instead of a big switch.

Thoughts? I was thinking of starting with the issues/opened.js handler since that one seems pretty straight forward.

If this seems cool, do let me know. I'm going to get started later in the day. If anyone has an alternative approach or maybe a better handler to start with, let me know :).

Thanks.

JasonEtco commented 6 years ago

Would love to help with this @hzoo! Will try to hack away at it this upcoming weekend, though my bandwidth this week is low; are the features in this repo's README up to date?

hzoo commented 6 years ago

I believe so other than the existing prs? Haven't updated it in so long

I'm sure a lot of the features are already probot apps too? wonder if you can just reuse like https://github.com/eslint/eslint-github-bot

JasonEtco commented 6 years ago

I'm sure a lot of the features are already probot apps too

Yep:

A couple of these are only kind of the right fit for the related feature - might be worth rewriting them into one app anyway, but its up to you.

hzoo commented 6 years ago

Yeah, possible that most of them are simple enough to do anyway - would be nice to be able to import it as a dep and then run it from one app

JasonEtco commented 6 years ago

You actually can, by npm install-ing the repo (since most of them aren't on NPM) then either calling the exported function with your own robot:

module.exports = robot => {
  someOtherProbotApp(robot)
  anotherProbotApp(robot)
}

robot is effictively an event emitter, so calling those apps' exported functions is adding a new event handler via robot.on, and it gets all the magical authentication bits from the over-arching app's robot.

Or, we also have some docs for "combining apps".

Only issue with doing this is that unless the app is exactly what you need, you can't configure or change it. That's typical for dependencies in general, but Probot doesn't have a way of passing options on an app level (there is context.config but thats per-repo).

hzoo commented 6 years ago

Ok sounds like what babel's presets were originally before: just an array of plugins. But then we added preset and plugin option to be able to configure