Giter Club home page Giter Club logo

good-first-issue's Introduction

Good First Issue

A CLI for finding issues labeled with Good First Issue to help lower the barrier to contributing to open source projects.

Shields.io badge for the latest version of good-first-issue Greenkeeper badge

Table of Contents

Prerequisites

To use Good First Issue, you'll need to have a few things installed:

  • Node.js 8.0.0 or above:
  • npm 5.0.0 or above:
    • If you already have Node.js 8.0.0 or above, you will have npm 5.0.0 or above.
    • If you need to update your npm CLI, run npm i -g npm.

Usage

This module is an interactive CLI. If you're looking for a module to use in an application, check out libgfi.

Installation

The suggested usage is via npx:

npx good-first-issue [project] # temporarily install and run the module, optionally passing `project`

Alternatively, you could absolutely install good-first-issue as a global module:

npm i -g good-first-issue # install globally
good-first-issue # call the CLI

Commands

  • good-first-issue: open up the interactive project selection tool.
  • good-first-issue [project]: you can pass in a name from the list of projects which is a curated list of projects that have been verified to have good-first-issues.
  • good-first-issue [GitHub organization or user]: similar to [project] but will search any GitHub organization or user that exists for issues labeled with "Good First Issue".
  • good-first-issue [GitHub organization or user]/[repo]: similar to [project], but will search a specific repository on GitHub within the organization for issues labeled with "Good First Issue".

CLI Options

  • -o, --open - open in browser
  • -f, --first - Return first/top issue
  • -a, --auth <github personal access token> - Authenticate with the GitHub API (increased rate limits)

TODOs: What's coming up next

good-first-issue is still in an early state. I wanted to get good-first-issue node out the door, but have some other things I'm planning on implementing. Here's a list:

  • good-first-issue node command
  • Interactive selector when good-first-issue is run without a sub command
  • Add additional useful commands
  • Explore adding a secondary selector that shows paginated results from GitHub, allowing the user to select which Good First Issue to pick rather than returning a random one
  • Improve Feeling Lucky to be better about picking a random issue
  • Add more tests

If you'd like to help with any of these, feel free to submit a PR or ask how you can help 🤗

Projects

The table of projects which are currently supported.

Order Name Project <project> Description
1. Apollo apollo A community building flexible open source tools for GraphQL.
2. Babel babel Babel is a compiler for writing next generation JavaScript.
3. Create React App create-react-app Set up a modern web app by running one command.
4. Firefox Debugger debugger The Firefox debugger that works anywhere.
5. Docusaurus docusaurus Easy to maintain open source documentation websites.
6. Docz docz It has never been so easy to document your things!
7. EasyGraphQL easygraphql EasyGraphQL is a group of open source tools, with the main focus to help developers that use GraphQL or just want to start using it.
8. Elasticsearch elasticsearch Open Source, Distributed, RESTful Search Engine
9. Elasticsearch Node.js Client elasticsearch-js Official Elasticsearch client library for Node.js
10. Electron electron Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS.
11. ESLint eslint A fully pluggable tool for identifying and reporting on patterns in JavaScript
12. Fastify fastify Fast and low overhead web framework, for Node.js
13. freeCodeCamp freeCodeCamp The https://www.freeCodeCamp.org open source codebase and curriculum. Learn to code for free together with millions of people.
14. I'm Feeling Lucky (Random Project) feeling-lucky Receive a good first issue from any eligible project
15. Homebrew homebrew The missing package manager for macOS
16. Hyper hyper A terminal built on web technologies
17. Gatsby gatsby Gatsby is a free and open source framework based on React that helps developers build blazing fast websites and apps.
18. Gutenberg gutenberg The Block Editor project for WordPress and beyond.
19. Good First Issue good-first-issue CLI for finding good first issues.
20. Jest jest Jest is a delightful JavaScript Testing Framework with a focus on simplicity
21. Material UI material-ui React components for faster and easier web development. Build your own design system, or start with Material Design
22. mermaid mermaid Generation of diagram and flowchart from text in a similar manner as markdown.
23. Mocha mocha Simple, flexible, fun javascript test framework for node.js & the browser.
24. NativeScript nativescript Build awesome cross-platform native mobile apps with JavaScript & TypeScript.
25. Neos neos Neos is a Content Application Platform with a CMS and an application framework at its core.
26. Netlify netlify Netlify builds, deploys and hosts your front-end.
27. Node.js node Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
28. PHPBignum phpbignum A bignum library for PHP
29. Quantum Development Kit quantum-development-kit Compiler, libraries, editor integration, runtime, samples, and tutorials for the Q# programming language.
30. React react A declarative, efficient, and flexible JavaScript library for building user interfaces.
31. React Admin react-admin A frontend Framework for building admin applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design.
32. React Native react-native A framework for building native apps with React.
33. React Navigation react-navigation Routing and navigation for your React Native apps.
34. Rebus rebus Take your first steps as an open source contributor
35. RichTextView richtextview iOS text view (UIView) that properly displays LaTeX, HTML, Markdown, and YouTube/Vimeo links
36. scikit-learn scikit-learn scikit-learn: machine learning in Python
37. Scrapy scrapy A fast high-level web crawling & scraping framework for Python.
38. Spring Cloud GCP spring-cloud-gcp Integration for Google Cloud Platform APIs with Spring
39. Strapi strapi Open source Node.js Headless CMS to easily build customisable APIs.
40. Storybook storybook Storybook is an open source tool for developing UI components in isolation for React, Vue, and Angular. It makes building stunning UIs organized and efficient.
41. Styled Components styled-components Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress.
42. TypeScript typescript TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
43. VS Code vscode VS Code is a type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle.
44. webpack CLI webpack-cli webpack CLI provides a flexible set of commands for developers to increase speed when setting up a custom webpack project.
45. wolkenkit wolkenkit wolkenkit is an open-source CQRS and event-sourcing framework for JavaScript and Node.js that perfectly matches DDD.
46. Verdaccio verdaccio A lightweight private npm proxy registry
47. Vue.js vuejs Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
48. Yarn yarn Fast, reliable, and secure dependency management.
49. Yarn Version Manager yvm YVM is a version manager for yarn that makes it easy to handle projects with differing yarn versions.

Adding New Projects

If you'd like to add a new project to good-first-issue, you're more than welcome to submit a PR! There are a few components you'll need to submit:

  • Update data/projects.json

    • Add your <project> as a property of projects in the correct alphabetical position with an object that includes a name, description, and a q (representing the GitHub search query).
  • Update README.md by running npm run markdown

    • This will automatically update README.md with the new project's data.

Adding New Projects: More Information

You can pull your queries directly from a standard GitHub search! If you want to build something a bit more complex, you can use the advanced search tool if you want to build more specific custom queries: https://github.com/search/advanced

As a CLI, good-first-issue uses the Commander.js CLI framework. If you want to better understand how our CLI is built, commander.js is pretty well documented. Also used are Chalk for terminal coloring and boxen to simplify the output container implementation.

Release Process

Good First Issue follows a relatively strict release process intended to ensure the spice flows.

Versioning

Semantic Version Type Reason
Major (x.x.x) Breaking changes and non-trivial upgrades Ensuring that end-users can rely on Good First Issue not breaking however they're consuming it
Minor (x.x.x) Project additions, other feature additions Following the SemVer standard, project additions and feature additions are backwards-compatible enhancements. We generally try to ship one addition per Minor.
Patch (x.x.x) Bug fixes, minor enhancements to metadata and content Tiny, hardly visible fixes to improve UX/DX or fix the module

Labels and Milestones

We use both GitHub Labels and Milestones to track releases. Since project additions count as a minor release, we prefer to space those out and ship them individually rather than shipping many at once. This pace may be revised later, but for now, it introduces the need for a release queue and setting things up to be released ahead of them actually being released.

We use the release queue label and milestone to queue up PRs that have been reviewed and are ready to be released.

Once a PR is ready to be released, a milestone will be added that correlates to the SemVer version it will be released in. Ideally this will eventually be used for changelog tracking but for now it's just a good way to keep organized. To keep things tidy, once a new version has shipped the milestone will be closed out.

Local Testing

Prior to each release, whoever is releasing should be testing the release locally to ensure that the code is working as expected. This would include either running npm i -g or npm link in the PR branch and then testing whatever the PR is adding. Ensuring the experience isn't broken is vital.

It is worth noting that we limit the file we publish to npm with the files property in package.json. This property prevents code that's not explicitly listed from being shipped. We have had a situation where local testing and the published module differed because a PR was merged that added needed code in a directory that wasn't included. So, what works on your machine may not work for the end user.

To test locally, using the modules tests with npm test and trying out a few different commands (like the selector, a specific project, a failed project, and so on) is reccomended. For example:

npm i -g # This assumes your current working directory is the module's directory
good-first-issue # run the interactive CLI
good-first-issue react # test the react project
good-first-issue node # test the Node.js project
good-first-issue github # test the GitHub organization, `github`
good-first-issue github/semantic # test the GitHub repo, `github/semantic`
good-first-issue thisisntarealprojectorgithuborg

Contributing

If you are interested in fixing issues and contributing directly to the code base, please see the document CONTRIBUTING.md.

good-first-issue's People

Contributors

ascorbic avatar bnb avatar boneskull avatar cgranade avatar ch264 avatar codebytere avatar delvedor avatar dschau avatar emmurillo avatar estrada9166 avatar greenkeeper[bot] avatar hemal7735 avatar hpez avatar iorlandoni avatar jamesgeorge007 avatar jasonetco avatar kennethvdberghe avatar lbhanuka avatar maddhruv avatar mannyluvstacos avatar markusguenther avatar maxdevjs avatar mcataford avatar mcollina avatar ollelauribostrom avatar robdel12 avatar rpremofficial avatar sis0k0 avatar thescientist13 avatar tiaguinho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

good-first-issue's Issues

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

add more cli options

we've set sort and order already in the module rather we can provide options to the cli+module

suggested options -

Option type default description
first boolean false return the first/top result
order enum [asc, desc] asc
sort enum[comments, created, updated] updated
open boolean false open the issue in browser

Add tests

The module is currently lacking tests. This is something that is 100% needed but also something I'm entirely unfamiliar with. Would 💚 some help on this!

Tasks:

  • good-first-issue -o exits appropriately
  • log returns a properly formatted output without any undefined (the repo name is especially tricky!)
  • `require('good-first-issue') operates and returns an object with the correct shape, as expected

Contributors: Feel free to add items to this list!

An in-range update of inquirer is breaking the build 🚨

The dependency inquirer was updated from 7.0.4 to 7.0.5.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

inquirer is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • build (macOS-latest, 12.x): null
  • build (macOS-latest, 10.x): null
  • build (macOS-latest, 8.x): null
  • build (windows-latest, 12.x): null
  • build (windows-latest, 10.x): null
  • build (windows-latest, 8.x): null
  • build (ubuntu-latest, 12.x): null
  • build (ubuntu-latest, 10.x): null
  • build (ubuntu-latest, 8.x): null

Commits

The new version differs by 4 commits.

  • 65a4d59 Publish
  • e2099ed Update dependencies
  • 8270551 Produce error on prompt in non-tty environment. (#891)
  • 6a883e6 Update lint-staged to the latest version 🚀 (#886)

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Add CI check for npm run markdown

With #60 being merged, we've got a new developer command: npm run markdown.

It would probably be wise to have a CI check to ensure this was run to lower maintenance burden on everyone ❤️

Handle rate limiting

Currently, if a user runs too many searches they hit a rate limit. It would be awesome if we could pretty print a message about this rather than logging the JSON :)

~/GitHub/good-first-issue on  master! ⌚ 16:23:45
$ good-first-issue

? Choose a project: EasyGraphQL - EasyGraphQL is a group of open source tools, with the main focus to help developers that use GraphQL or just want to sta
rt using it.
RequestError [HttpError]: API rate limit exceeded for 69.116.190.39. (But here's the good news: Authenticated requests get a higher rate limit. Check out 
the documentation for more details.)
    at /Users/cyren/GitHub/good-first-issue/node_modules/@octokit/request/dist-node/index.js:66:23
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async search (/Users/cyren/GitHub/good-first-issue/lib/search.js:18:20)
    at async Command.<anonymous> (/Users/cyren/GitHub/good-first-issue/bin/good-first-issue.js:30:22) {
  name: 'HttpError',
  status: 403,
  headers: {
    'access-control-allow-origin': '*',
    'access-control-expose-headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type',
    connection: 'close',
    'content-encoding': 'gzip',
    'content-security-policy': "default-src 'none'",
    'content-type': 'application/json; charset=utf-8',
    date: 'Sat, 03 Aug 2019 20:23:50 GMT',
    'referrer-policy': 'origin-when-cross-origin, strict-origin-when-cross-origin',
    server: 'GitHub.com',
    status: '403 Forbidden',
    'strict-transport-security': 'max-age=31536000; includeSubdomains; preload',
    'transfer-encoding': 'chunked',
    'x-content-type-options': 'nosniff',
    'x-frame-options': 'deny',
    'x-github-media-type': 'github.v3; format=json',
    'x-github-request-id': 'FE99:32E5:25E774:39DA78:5D45ED56',
    'x-ratelimit-limit': '10',
    'x-ratelimit-remaining': '0',
    'x-ratelimit-reset': '1564863842',
    'x-xss-protection': '1; mode=block'
  },
  request: {
    method: 'GET',
    url: 'https://api.github.com/search/issues?q=org%3Aeasygraphql%20is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22&sort=updated&order=desc&per_page=30&page=1',
    headers: {
      accept: 'application/vnd.github.v3+json',
      'user-agent': 'octokit.js/16.28.5 Node.js/12.7.0 (macOS Mojave; x64)'
    },
    request: { hook: [Function: bound bound register], validate: [Object] }
  },
  documentation_url: 'https://developer.github.com/v3/#rate-limiting'
}

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

Unexpected token

via npx

$ npx good-first-issue node                                              
Unexpected token (

via npm global install

/Users/shayneboyer/.npm-packages/lib/node_modules/good-first-issue/bin/good-first-issue.js:21
  .action(async (project, cmd) => {
                ^
SyntaxError: Unexpected token (
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

Enhance selector output

Currently we're just outputting the key for each project object in the project selector. You can see what we're currently doing here.

Ideally, we'd be outputting the project name a project description to select from.

[Documentation] Sugestion to Doc

follow parts of documentation:

To test locally, using the modules tests with npm test and trying out a few different commands (like the selector, a specific project, a failed project, and so on) is recommended. For example:

npm i -g # This assumes your current working directory is the module's directory
good-first-issue # run the interactive CLI
good-first-issue react # test the react project
good-first-issue node # test the Node.js project
good-first-issue github # test the GitHub organization, `github`
good-first-issue github/semantic # test the GitHub repo, `github/semantic`
good-first-issue thisisntarealprojectorgithuborg

If you run the code below, its install the repo in the path of the OS ( globally ), but don't install its dependencies, that is needed by test feature.

npm i -g #

I am working in improvement to the Doc in a separate fork.

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

An in-range update of open is breaking the build 🚨

The dependency open was updated from 7.0.1 to 7.0.2.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

open is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • build (macOS-latest, 12.x): null
  • build (macOS-latest, 10.x): null
  • build (macOS-latest, 8.x): null
  • build (windows-latest, 12.x): null
  • build (windows-latest, 10.x): null
  • build (windows-latest, 8.x): null
  • build (ubuntu-latest, 12.x): null
  • build (ubuntu-latest, 10.x): null
  • build (ubuntu-latest, 8.x): null

Release Notes for v7.0.2

v7.0.1...v7.0.2

Commits

The new version differs by 2 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of strip-ansi is breaking the build 🚨

The devDependency strip-ansi was updated from 5.0.0 to 5.1.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

strip-ansi is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v5.1.0
  • Add support for terminal link escape codes (#26) 41b0a8b

v5.0.0...v5.1.0

Commits

The new version differs by 3 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of @octokit/rest is breaking the build 🚨

The dependency @octokit/rest was updated from 16.16.5 to 16.17.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

@octokit/rest is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v16.17.0

16.17.0 (2019-03-07)

Features

Commits

The new version differs by 1 commits.

  • ca3ac5b feat: octokit.licenses.listCommonlyUsed() (#1268)

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

[Enhancement]: decouple lib/log.js

Currently, lib/log.js is iterating over issues and forms output array.
I see the oppurtunity of enhancement from both performance and modularity here.

If the log module just create the output from issue, and project objects then,

  1. We can avoid generating output for all issues --> perf boost, we can get some benchmark 😉
  2. We can test is easily --> modularity

@bnb @maddhruv your thoughts are welcome ! 💯

if possible I would like to work on that as well.

Add descriptions to projects in data/projects.json

We currently support including descriptions in projects.json and consuming them (at least in the CLI – not entirely sure about the module), but don't currently have any descriptions.

Before we get a tremendous amount of projects, it would be incredible to get descriptions and require them when adding new ones so we don't have to do a bunch retroactively 👍

Depreciation warnings given by octokit when running on npx

On running good-first-issue using npx and on selecting a package, @octokit/rest seems to give depreciation warnings on some of the modules used.

I have attached a screenshot below for your understanding.
Screenshot 2019-03-20 at 12 45 31 PM

I am also interested in working on this issue as my first contribution here. 🥇

Unhandled promise rejection

I've gotten this a couple times recently. If anyone wants to tackle, feel free ❤️

$ good-first-issue

? Choose a project: debugger.html
(node:89426) UnhandledPromiseRejectionWarning: HttpError: Validation Failed
    at /Users/cyren/GitHub/good-first-issue/node_modules/@octokit/request/dist-node/index.js:66:23
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
    at async search (/Users/cyren/GitHub/good-first-issue/lib/search.js:18:20)
    at async Command.<anonymous> (/Users/cyren/GitHub/good-first-issue/bin/good-first-issue.js:45:20)
(node:89426) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a
 catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:89426) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

An in-range update of @octokit/rest is breaking the build 🚨

The dependency @octokit/rest was updated from 16.8.0 to 16.8.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

@octokit/rest is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v16.8.1

16.8.1 (2019-01-12)

Bug Fixes

  • do not load the same plugin again (b4c38e2)
Commits

The new version differs by 1 commits.

  • b4c38e2 fix: do not load the same plugin again

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of commander is breaking the build 🚨

The dependency commander was updated from 4.1.0 to 4.1.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

commander is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • build (macOS-latest, 12.x): null
  • build (macOS-latest, 10.x): null
  • build (macOS-latest, 8.x): null
  • build (windows-latest, 12.x): There are 1 failures, 0 warnings, and 0 notices.
  • build (windows-latest, 10.x): null
  • build (windows-latest, 8.x): There are 1 failures, 0 warnings, and 0 notices.
  • build (ubuntu-latest, 12.x): null
  • build (ubuntu-latest, 10.x): null
  • build (ubuntu-latest, 8.x): null

Release Notes for v4.1.1

Fixed

  • TypeScript definition for .action() should include Promise for async ([#1157])
Commits

The new version differs by 14 commits.

  • d5186ba Bump version to 4.1.1
  • 37e9428 Add 4.1.1 to CHANGELOG
  • e5f316f Use npm ci with CI (#1164)
  • cb54d5f fix(ts): action can be an async function (#1157)
  • 6791884 Merge branch 'master' into develop
  • f31d757 Add FUNDING file for enabling GitHub Sponsor on repo
  • d9627f5 Merge pull request #1147 from shadowspawn/feature/changelog-lint
  • 32c26df Use consistent list character in markdown
  • 4092956 Merge branch 'master' into develop
  • 82f5157 Fix diff order for 4.1 link
  • 7a480a7 Add missing diff link for 4.1.0
  • e45ae5a Merge pull request #1136 from shadowspawn/feature/update-examples
  • d97aaaa Add missing diff link for 4.1.0
  • 4922fb8 Update examples

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

MISC - Improve the process for adding new project

What is the problem you are trying to solve?

Let's sit back for a moment and look back at how new project support is added.

  1. Add project in data.json
  2. run npm run markdown (Creates an Serial Number)
  3. commit data.json and README.md

Now, what happens when you have multiple PRs? The serial number in README.md will cause conflicts and rebase must be performed to avoid conflicts. This creates a friction while adding new projects.

What can we do about it?

  1. Remove the need of serial-numbers
  2. Setup a system so that README.md gets updated automatically whenever projects.json is updated (May be some bot).

Handle rate limiting gracefully

When testing to make sure nothing breaks, I semi-often get rate-limited by GitHub. This is because there are (IIRC) 50 queries accepted before 1-hour rate limiting kicks in.

Obviously this shouldn't be happening for a normal user (though I'd applaud a user that was working on dozens of good-first-issues), but it may happen for contributors.

Checklist:

  • Handle errors in the CLI gracefully
  • Allow consumers of the module to pass GitHub authentication, which we would then pass to @octokit/rest
  • Documentation for both of the above

Add > 50 stars criteria to feeling-lucky

In testing #57, I noticed that 5 of the first 7 runs of the good-first-issue feeling-lucky command were all repos with only a few issues and two of them were total spam issues created within the last day.

To help ensure that we're actually sending users to Good First Issues that they'll be able to make a meaningful contribution to, how do we feel about setting a filter for ⭐️s to 50?

If we want to ensure that there's still a way to pull from the full set of "Good First Issues" I'd not be opposed to adding an "All" command in the same release that the filter is shipped.

Handle failed queries

Just tried validating #122 again and got a very different kind of error:

$ good-first-issue debugger.html
RequestError [HttpError]: Validation Failed
    at /Users/cyren/GitHub/good-first-issue/node_modules/@octokit/request/dist-node/index.js:66:23
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async search (/Users/cyren/GitHub/good-first-issue/lib/search.js:18:20)
    at async Command.<anonymous> (/Users/cyren/GitHub/good-first-issue/bin/good-first-issue.js:30:22) {
  name: 'HttpError',
  status: 422,
  headers: {
    'access-control-allow-origin': '*',
    'access-control-expose-headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type',
    'cache-control': 'no-cache',
    connection: 'close',
    'content-length': '306',
    'content-security-policy': "default-src 'none'",
    'content-type': 'application/json; charset=utf-8',
    date: 'Sat, 03 Aug 2019 20:07:08 GMT',
    'referrer-policy': 'origin-when-cross-origin, strict-origin-when-cross-origin',
    server: 'GitHub.com',
    status: '422 Unprocessable Entity',
    'strict-transport-security': 'max-age=31536000; includeSubdomains; preload',
    'x-content-type-options': 'nosniff',
    'x-frame-options': 'deny',
    'x-github-media-type': 'github.v3; format=json',
    'x-github-request-id': 'FC8D:1808:23917AF:43744CB:5D45E96C',
    'x-ratelimit-limit': '10',
    'x-ratelimit-remaining': '9',
    'x-ratelimit-reset': '1564862888',
    'x-xss-protection': '1; mode=block'
  },
  request: {
    method: 'GET',
    url: 'https://api.github.com/search/issues?q=repo%3Adevtools-html%2Fdebugger.html%20is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22&sort=updated&order=desc&per_page=30&page=1',
    headers: {
      accept: 'application/vnd.github.v3+json',
      'user-agent': 'octokit.js/16.28.5 Node.js/12.7.0 (macOS Mojave; x64)'
    },
    request: { hook: [Function: bound bound register], validate: [Object] }
  },
  errors: [
    {
      message: 'The listed users and repositories cannot be searched either because the resources do not exist or you do not have permission to view them.',
      resource: 'Search',
      field: 'q',
      code: 'invalid'
    }
  ],
  documentation_url: 'https://developer.github.com/v3/search/'
}

Move to error interception rather than length checking

From #80 (comment):

If at this point we were to intercept an empty string literal from the response header rather than the results of a list, and this string literal was to be an error response in a short-circuit and no error was able to be parsed, edge of timeouts, parsing errors etc. This would still return as true, hence returning an empty string exposed.
It would be suitable at some point here validate the actual type integrity of the expected data formats being used, as side effects of this may lead to false positives.

Referring to bin/good-first-issue#32.

Handle errors better

My internet is pretty flaky right now and disconnected while I was trying out a PR. Connection was reset, and a pretty nasty error was output to the console:

image

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

Tests failing for unknown reason

Not sure why, but on my new machine the Jest tests are failing 🤔

 FAIL  lib/search.spec.js
  ● should return filtered issues if there is only one page

    Cannot find module '@octokit/rest' from 'search.spec.js'

       7 |   jest.resetAllMocks()
       8 |   issues = jest.fn()
    >  9 |   jest.doMock('@octokit/rest', () => () => {
         |        ^
      10 |     return {
      11 |       search: {
      12 |         issues

      at Resolver.resolveModule (../../.nvm/versions/node/v10.14.2/lib/node_modules/jest/node_modules/jest-resolve/build/index.js:221:17)
      at Object.doMock (lib/search.spec.js:9:8)

  ● should return filtered issues if there is only one page

    TypeError: search is not a function

      64 |   })
      65 |
    > 66 |   return search({}).then(result => {
         |          ^
      67 |     expect(issues).toHaveBeenCalledTimes(1)
      68 |     expect(result).toEqual([
      69 |       {

      at Object.search (lib/search.spec.js:66:10)

  ● should return filtered issues if there is more than one page

    Cannot find module '@octokit/rest' from 'search.spec.js'

       7 |   jest.resetAllMocks()
       8 |   issues = jest.fn()
    >  9 |   jest.doMock('@octokit/rest', () => () => {
         |        ^
      10 |     return {
      11 |       search: {
      12 |         issues

      at Resolver.resolveModule (../../.nvm/versions/node/v10.14.2/lib/node_modules/jest/node_modules/jest-resolve/build/index.js:221:17)
      at Object.doMock (lib/search.spec.js:9:8)

  ● should return filtered issues if there is more than one page

    TypeError: search is not a function

      172 |   })
      173 |
    > 174 |   return search({}).then(result => {
          |          ^
      175 |     expect(issues).toHaveBeenCalledTimes(2)
      176 |     const searchParams = issues.mock.calls[1][0]
      177 |     expect(searchParams["page"]).toBeLessThanOrEqual(2)

      at Object.search (lib/search.spec.js:174:10)

  ● should return filtered issues if there are more than allowed pages

    Cannot find module '@octokit/rest' from 'search.spec.js'

       7 |   jest.resetAllMocks()
       8 |   issues = jest.fn()
    >  9 |   jest.doMock('@octokit/rest', () => () => {
         |        ^
      10 |     return {
      11 |       search: {
      12 |         issues

      at Resolver.resolveModule (../../.nvm/versions/node/v10.14.2/lib/node_modules/jest/node_modules/jest-resolve/build/index.js:221:17)
      at Object.doMock (lib/search.spec.js:9:8)

  ● should return filtered issues if there are more than allowed pages

    TypeError: search is not a function

      282 |   })
      283 |
    > 284 |   return search({}).then(result =>{
          |          ^
      285 |     expect(issues).toHaveBeenCalledTimes(2)
      286 |     const searchParams = issues.mock.calls[1][0]
      287 |     expect(searchParams["page"]).toBeLessThanOrEqual(34)

      at Object.search (lib/search.spec.js:284:10)

  ● should throw

    Cannot find module '@octokit/rest' from 'search.spec.js'

       7 |   jest.resetAllMocks()
       8 |   issues = jest.fn()
    >  9 |   jest.doMock('@octokit/rest', () => () => {
         |        ^
      10 |     return {
      11 |       search: {
      12 |         issues

      at Resolver.resolveModule (../../.nvm/versions/node/v10.14.2/lib/node_modules/jest/node_modules/jest-resolve/build/index.js:221:17)
      at Object.doMock (lib/search.spec.js:9:8)

  ● should throw

    TypeError: search is not a function

      305 |   const error = new Error('myError')
      306 |   issues.mockRejectedValue(error)
    > 307 |   await expect(search()).rejects.toEqual(error)
          |                ^
      308 | })
      309 |

      at Object.search (lib/search.spec.js:307:16)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.