Repository: intuit/auto
Pull request #882 (2020-01-22 19:57:21)

add clearer docs around creating GH_TOKEN

<!-- GITHUB_RELEASE PR BODY: canary-version -->
Published PR with canary version: <details><summary>Published under canary scope @auto-canary</summary>
- `@auto-canary/auto@9.1.1-canary.882.11540.0`
- `@auto-canary/core@9.1.1-canary.882.11540.0`
- `@auto-canary/all-contributors@9.1.1-canary.882.11540.0`
- `@auto-canary/chrome@9.1.1-canary.882.11540.0`
- `@auto-canary/conventional-commits@9.1.1-canary.882.11540.0`
- `@auto-canary/crates@9.1.1-canary.882.11540.0`
- `@auto-canary/first-time-contributor@9.1.1-canary.882.11540.0`
- `@auto-canary/git-tag@9.1.1-canary.882.11540.0`
- `@auto-canary/jira@9.1.1-canary.882.11540.0`
- `@auto-canary/maven@9.1.1-canary.882.11540.0`
- `@auto-canary/npm@9.1.1-canary.882.11540.0`
- `@auto-canary/omit-commits@9.1.1-canary.882.11540.0`
- `@auto-canary/omit-release-notes@9.1.1-canary.882.11540.0`
- `@auto-canary/released@9.1.1-canary.882.11540.0`
- `@auto-canary/s3@9.1.1-canary.882.11540.0`
- `@auto-canary/slack@9.1.1-canary.882.11540.0`
- `@auto-canary/twitter@9.1.1-canary.882.11540.0`
- `@auto-canary/upload-assets@9.1.1-canary.882.11540.0`</details>
<!-- GITHUB_RELEASE PR BODY: canary-version -->


codecov[bot]: # [Codecov](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=h1) Report
> Merging [#882](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=desc) into [master](https://codecov.io/gh/intuit/auto/commit/5768cef9b887615fee888f99416dacfa9d1e9c97?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/intuit/auto/pull/882/graphs/tree.svg?width=650&token=oRXDKLtVyu&height=150&src=pr)](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master     #882   +/-   ##
=======================================
  Coverage   85.36%   85.36%           
=======================================
  Files          36       36           
  Lines        2412     2412           
  Branches      337      337           
=======================================
  Hits         2059     2059           
  Misses        275      275           
  Partials       78       78
```


| [Impacted Files](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [plugins/maven/src/index.ts](https://codecov.io/gh/intuit/auto/pull/882/diff?src=pr&el=tree#diff-cGx1Z2lucy9tYXZlbi9zcmMvaW5kZXgudHM=) | `82.19% <ø> (ø)` | :arrow_up: |
| [plugins/chrome/src/index.ts](https://codecov.io/gh/intuit/auto/pull/882/diff?src=pr&el=tree#diff-cGx1Z2lucy9jaHJvbWUvc3JjL2luZGV4LnRz) | `0% <ø> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=footer). Last update [5768cef...38c0f7d](https://codecov.io/gh/intuit/auto/pull/882?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8d912df3..5c877507 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,33 +1,3 @@
-# v9.1.0 (Tue Jan 21 2020)
-
-#### 🚀  Enhancement
-
-- `@auto-it/core`
-  - canary: try to match commit to PR if not found in env [#812](https://github.com/intuit/auto/pull/812) ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
-#### 🔩 Dependency Updates
-
-- Bump file-type from 13.0.3 to 13.1.1 [#879](https://github.com/intuit/auto/pull/879) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump eslint-plugin-import from 2.19.1 to 2.20.0 [#878](https://github.com/intuit/auto/pull/878) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump enquirer from 2.3.2 to 2.3.4 [#876](https://github.com/intuit/auto/pull/876) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump @typescript-eslint/parser from 2.15.0 to 2.16.0 [#875](https://github.com/intuit/auto/pull/875) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump eslint-plugin-jsdoc from 20.3.0 to 20.3.1 [#874](https://github.com/intuit/auto/pull/874) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump typescript from 3.7.4 to 3.7.5 [#873](https://github.com/intuit/auto/pull/873) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump husky from 4.0.7 to 4.0.10 [#872](https://github.com/intuit/auto/pull/872) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- `@auto-it/core`
-  - Bump @types/node from 12.12.21 to 13.1.8 [#881](https://github.com/intuit/auto/pull/881) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]) [@hipstersmoothie](https://github.com/hipstersmoothie))
-- `@auto-it/all-contributors`
-  - Bump all-contributors-cli from 6.12.0 to 6.13.0 [#880](https://github.com/intuit/auto/pull/880) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- `@auto-it/core`
-  - Bump @octokit/rest from 16.36.0 to 16.37.0 [#877](https://github.com/intuit/auto/pull/877) ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-
-#### Authors: 2
-
-- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
-- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
----
-
 # v9.0.2 (Tue Jan 14 2020)
 
 #### 🐛  Bug Fix
diff --git a/Formula/auto.rb b/Formula/auto.rb
index cb96f2ba..65cb3a90 100644
--- a/Formula/auto.rb
+++ b/Formula/auto.rb
@@ -1,8 +1,8 @@
 class Auto < Formula
   desc "Generate releases based on semantic version labels on pull requests."
   homepage "https://intuit.github.io/auto/home.html"
-  url "https://github.com/intuit/auto/releases/download/v9.1.0/auto-macos.gz"
-  sha256 "500e1e5b8f605ba4f862a1983a0ed21a52d6bebdbe40c89754a7bbe9f54ca463"
+  url "https://github.com/intuit/auto/releases/download/v9.0.2/auto-macos.gz"
+  sha256 "6ad8b7fbeb2a59b30fba09eeba46f095f84964478ebf7c5a03953ee858d924bc"
 
   def install
     libexec.install Dir["*"]
diff --git a/docs/pages/getting-started.md b/docs/pages/getting-started.md
index 1f27ecbd..61a9dedc 100644
--- a/docs/pages/getting-started.md
+++ b/docs/pages/getting-started.md
@@ -54,7 +54,7 @@ Initialize all options and configure label text. If this is not run then `auto`
 
 You must configure some environment variables for publishing and releasing to work properly.
 
-- `GH_TOKEN` - Used for updating the changelog and publishing the GitHub release
+- `GH_TOKEN` - Used for updating the changelog and publishing the GitHub release ([create one here](https://github.com/settings/tokens))
 - `NPM_TOKEN` - Used to publish to npm. (only with NPM plugin)
 
 #### Local `.env`
diff --git a/docs/pages/non-npm.md b/docs/pages/non-npm.md
index f1452e2c..5868857f 100644
--- a/docs/pages/non-npm.md
+++ b/docs/pages/non-npm.md
@@ -28,6 +28,13 @@ brew install auto
 
 ## Configuration
 
+To configure `auto` to work with your project you will need to do two things
+
+1. Create and configure a [`GH_TOKEN`](https://github.com/settings/tokens) environment variable
+2. Create an `.autorc` for your project
+
+### Making an `.autorc`
+
 Using `auto` with any other package manager than [npm](https://npmjs.com) requires that you create an [`.autorc`](./autorc.md) at the root of your project.
 
 1. `.autorc` - No plugins, `shipit` doesn't work. Enables [advanced setup](https://intuit.github.io/auto/pages/getting-started.html#detailed-setup)
diff --git a/docs/pages/troubleshooting.md b/docs/pages/troubleshooting.md
index d026ab99..88bea083 100644
--- a/docs/pages/troubleshooting.md
+++ b/docs/pages/troubleshooting.md
@@ -2,7 +2,7 @@
 
 ## Error: Can't find a GitHub token to use
 
-You must set a `GH_TOKEN` for `auto` to work. Make sure to add your `NPM_TOKEN` while you're at it.
+You must set a [`GH_TOKEN`](https://github.com/settings/tokens) for `auto` to work. If you publish to npm make sure to add your `NPM_TOKEN` while you're at it as well.
 
 ## npm ERR! Git working directory not clean
 
diff --git a/lerna.json b/lerna.json
index 1e090472..9ba5d343 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
 {
-  "version": "9.1.0",
+  "version": "9.0.2",
   "npmClient": "yarn",
   "useWorkspaces": true,
   "packages": [
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 2b937a5c..b872bfda 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -2,7 +2,7 @@
   "name": "auto",
   "bin": "dist/bin/auto.js",
   "description": "CLI tools to help facilitate semantic versioning based on GitHub PR labels",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "author": {
     "name": "Andrew Lisowski",
     "email": "lisowski54@gmail.com"
diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md
index faafb6f2..e1507e0c 100644
--- a/packages/core/CHANGELOG.md
+++ b/packages/core/CHANGELOG.md
@@ -1,31 +1,3 @@
-# v9.1.0 (Tue Jan 21 2020)
-
-#### 🐛  Bug Fix
-
-- upgrade enquirer  ([@hipstersmoothie](https://github.com/hipstersmoothie))
-- canary: try to match commit to PR if not found in env  ([@hipstersmoothie](https://github.com/hipstersmoothie))
-- Bump @types/node from 12.12.21 to 13.1.8
-
-Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.21 to 13.1.8.
-- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
-- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
-
-Signed-off-by: dependabot-preview[bot] <support@dependabot.com>  ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-- Bump @octokit/rest from 16.36.0 to 16.37.0
-
-Bumps [@octokit/rest](https://github.com/octokit/rest.js) from 16.36.0 to 16.37.0.
-- [Release notes](https://github.com/octokit/rest.js/releases)
-- [Commits](https://github.com/octokit/rest.js/compare/v16.36.0...v16.37.0)
-
-Signed-off-by: dependabot-preview[bot] <support@dependabot.com>  ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-
-#### Authors: 2
-
-- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
-- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
----
-
 # v9.0.1 (Mon Jan 13 2020)
 
 #### 🐛  Bug Fix
diff --git a/packages/core/package.json b/packages/core/package.json
index dea870c6..3a375739 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/core",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "description": "Node API for using auto.",
   "main": "dist/auto.js",
   "author": {
@@ -40,7 +40,7 @@
     "@octokit/plugin-enterprise-compatibility": "1.1.1",
     "@octokit/plugin-retry": "^2.2.0",
     "@octokit/plugin-throttling": "^2.6.0",
-    "@octokit/rest": "16.37.0",
+    "@octokit/rest": "16.36.0",
     "await-to-js": "^2.1.1",
     "cosmiconfig": "6.0.0",
     "deepmerge": "^4.0.0",
diff --git a/packages/core/src/auto.ts b/packages/core/src/auto.ts
index 0ceb35c0..5f133002 100644
--- a/packages/core/src/auto.ts
+++ b/packages/core/src/auto.ts
@@ -1,5 +1,3 @@
-/* eslint-disable complexity */
-
 import { ReposCreateReleaseResponse, Response } from '@octokit/rest';
 import dotenv from 'dotenv';
 import envCi from 'env-ci';
@@ -50,7 +48,6 @@ import createLog, { ILogger, setLogLevel } from './utils/logger';
 import { makeHooks } from './utils/make-hooks';
 import { IAuthorOptions, IRepoOptions } from './auto-args';
 import { execSync } from 'child_process';
-import { buildSearchQuery, ISearchResult } from './match-sha-to-pr';
 
 const proxyUrl = process.env.https_proxy || process.env.http_proxy;
 const env = envCi();
@@ -729,9 +726,20 @@ export default class Auto {
       process.exit(1);
     }
 
-    // await this.checkClean();
+    await this.checkClean();
+
+    // SailEnv falls back to commit SHA
+    let pr: string | undefined;
+    let build: string | undefined;
+
+    if ('pr' in env && 'build' in env) {
+      ({ pr } = env);
+      ({ build } = env);
+    } else if ('pr' in env && 'commit' in env) {
+      ({ pr } = env);
+      build = env.commit;
+    }
 
-    let { pr, build } = await this.getPrEnvInfo();
     pr = options.pr ? String(options.pr) : pr;
     build = options.build ? String(options.build) : build;
 
@@ -872,10 +880,9 @@ export default class Auto {
       `Published next version${result.length > 1 ? `s` : ''}: ${newVersion}`
     );
 
-    const { pr } = await this.getPrEnvInfo();
-
-    if (pr) {
+    if ('isPr' in env && env.isPr) {
       const message = options.message || 'Published prerelease version: %v';
+      const pr = 'pr' in env && env.pr;
 
       if (pr) {
         await this.prBody({
@@ -1384,44 +1391,6 @@ If a command fails manually run:
         plugin.apply(this);
       });
   }
-
-  /** Get the branch and build number when in CI environment */
-  private async getPrEnvInfo() {
-    // SailEnv falls back to commit SHA
-    let pr: string | undefined;
-    let build: string | undefined;
-
-    if ('pr' in env && 'build' in env) {
-      ({ pr } = env);
-      ({ build } = env);
-    } else if ('pr' in env && 'commit' in env) {
-      ({ pr } = env);
-      build = env.commit;
-    }
-
-    // If we haven't detected the PR from the env vars try to match
-    // the commit to a PR
-    if (env.isCi && !pr && this.git?.options.owner && this.git?.options.repo) {
-      const commit = await this.git.getSha();
-      const query = buildSearchQuery(
-        this.git?.options.owner,
-        this.git?.options.repo,
-        [commit]
-      );
-
-      if (query) {
-        const result = await this.git.graphql(query);
-
-        if (result && result[`hash_${commit}`]) {
-          pr = String(
-            (result[`hash_${commit}`] as ISearchResult).edges[0]?.node?.number
-          );
-        }
-      }
-    }
-
-    return { pr, build };
-  }
 }
 
 // Plugin Utils
diff --git a/packages/core/src/match-sha-to-pr.ts b/packages/core/src/match-sha-to-pr.ts
deleted file mode 100644
index 8e9aaaeb..00000000
--- a/packages/core/src/match-sha-to-pr.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import endent from 'endent';
-
-import { IExtendedCommit } from './log-parse';
-
-interface ISearchEdge {
-  /** Graphql search node */
-  node: {
-    /** PR number */
-    number: number;
-    /** State of the PR */
-    state: 'MERGED' | 'CLOSED' | 'OPEN';
-    /** Body of the PR */
-    body: string;
-    /** Labels attached to the PR */
-    labels: {
-      /** Edges of the Query */
-      edges: [
-        {
-          /** Graphql search node */
-          node: {
-            /** Name of the label */
-            name: string;
-          };
-        }
-      ];
-    };
-  };
-}
-
-export interface ISearchResult {
-  /** Results in the search */
-  edges: ISearchEdge[];
-}
-
-/**
- * Generate a GitHub graphql query to find all the commits related
- * to a PR.
- */
-export function buildSearchQuery(
-  owner: string,
-  project: string,
-  commits: string[]
-) {
-  const repo = `${owner}/${project}`;
-  const query = commits.reduce((q, commit) => {
-    const subQuery = `repo:${repo} ${commit}`;
-
-    return endent`
-      ${q}
-
-      hash_${commit}: search(query: "${subQuery}", type: ISSUE, first: 1) {
-        edges {
-          node {
-            ... on PullRequest {
-              number
-              state
-              body
-              labels(first: 10) {
-                edges {
-                  node {
-                    name
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    `;
-  }, '');
-
-  if (!query) {
-    return;
-  }
-
-  return `{
-    ${query}
-    rateLimit {
-      limit
-      cost
-      remaining
-      resetAt
-    }
-  }`;
-}
-
-/** Use the graphql query result to fill in more information about a commit */
-export function processQueryResult(
-  key: string,
-  result: ISearchResult,
-  commitsWithoutPR: IExtendedCommit[]
-) {
-  const hash = key.split('hash_')[1];
-  const commit = commitsWithoutPR.find(
-    commitWithoutPR => commitWithoutPR.hash === hash
-  );
-
-  if (!commit) {
-    return;
-  }
-
-  if (result.edges.length > 0) {
-    if (result.edges[0].node.state === 'CLOSED') {
-      return;
-    }
-
-    const labels: {
-      /** The label */
-      name: string;
-    }[] = result.edges[0].node.labels
-      ? result.edges[0].node.labels.edges.map(edge => edge.node)
-      : [];
-    commit.pullRequest = {
-      number: result.edges[0].node.number,
-      body: result.edges[0].node.body
-    };
-    commit.labels = [...labels.map(label => label.name), ...commit.labels];
-  } else {
-    commit.labels = ['pushToBaseBranch', ...commit.labels];
-  }
-
-  commit.subject = commit.subject.split('\n')[0];
-
-  return commit;
-}
diff --git a/packages/core/src/release.ts b/packages/core/src/release.ts
index 7465e099..02917e5d 100644
--- a/packages/core/src/release.ts
+++ b/packages/core/src/release.ts
@@ -1,6 +1,7 @@
 import { GraphQlQueryResponse } from '@octokit/graphql/dist-types/types';
 import GHub from '@octokit/rest';
 import on from 'await-to-js';
+import endent from 'endent';
 import * as fs from 'fs';
 import chunk from 'lodash.chunk';
 import { inc, ReleaseType } from 'semver';
@@ -21,11 +22,6 @@ import execPromise from './utils/exec-promise';
 import { dummyLog, ILogger } from './utils/logger';
 import { makeReleaseHooks } from './utils/make-hooks';
 import { execSync } from 'child_process';
-import {
-  buildSearchQuery,
-  ISearchResult,
-  processQueryResult
-} from './match-sha-to-pr';
 
 export type VersionLabel =
   | SEMVER.major
@@ -69,6 +65,36 @@ export type IAutoConfig = IAuthorOptions &
     versionBranches?: true | string;
   };
 
+interface ISearchEdge {
+  /** Graphql search node */
+  node: {
+    /** PR number */
+    number: number;
+    /** State of the PR */
+    state: 'MERGED' | 'CLOSED' | 'OPEN';
+    /** Body of the PR */
+    body: string;
+    /** Labels attached to the PR */
+    labels: {
+      /** Edges of the Query */
+      edges: [
+        {
+          /** Graphql search node */
+          node: {
+            /** Name of the label */
+            name: string;
+          };
+        }
+      ];
+    };
+  };
+}
+
+interface ISearchResult {
+  /** Results in the search */
+  edges: ISearchEdge[];
+}
+
 export interface ILabelDefinition {
   /** The label text */
   name: string;
@@ -150,6 +176,98 @@ export interface IReleaseHooks {
   onCreateLogParse: SyncHook<[LogParse]>;
 }
 
+/**
+ * Generate a GitHub graphql query to find all the commits related
+ * to a PR.
+ */
+export function buildSearchQuery(
+  owner: string,
+  project: string,
+  commits: IExtendedCommit[]
+) {
+  const repo = `${owner}/${project}`;
+  const query = commits.reduce((q, commit) => {
+    const subQuery = `repo:${repo} ${commit.hash}`;
+
+    return endent`
+      ${q}
+
+      hash_${commit.hash}: search(query: "${subQuery}", type: ISSUE, first: 1) {
+        edges {
+          node {
+            ... on PullRequest {
+              number
+              state
+              body
+              labels(first: 10) {
+                edges {
+                  node {
+                    name
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    `;
+  }, '');
+
+  if (!query) {
+    return;
+  }
+
+  return `{
+    ${query}
+    rateLimit {
+      limit
+      cost
+      remaining
+      resetAt
+    }
+  }`;
+}
+
+/** Use the graphql query result to fill in more information about a commit */
+function processQueryResult(
+  key: string,
+  result: ISearchResult,
+  commitsWithoutPR: IExtendedCommit[]
+) {
+  const hash = key.split('hash_')[1];
+  const commit = commitsWithoutPR.find(
+    commitWithoutPR => commitWithoutPR.hash === hash
+  );
+
+  if (!commit) {
+    return;
+  }
+
+  if (result.edges.length > 0) {
+    if (result.edges[0].node.state === 'CLOSED') {
+      return;
+    }
+
+    const labels: {
+      /** The label */
+      name: string;
+    }[] = result.edges[0].node.labels
+      ? result.edges[0].node.labels.edges.map(edge => edge.node)
+      : [];
+    commit.pullRequest = {
+      number: result.edges[0].node.number,
+      body: result.edges[0].node.body
+    };
+    commit.labels = [...labels.map(label => label.name), ...commit.labels];
+  } else {
+    commit.labels = ['pushToBaseBranch', ...commit.labels];
+  }
+
+  commit.subject = commit.subject.split('\n')[0];
+
+  return commit;
+}
+
 /**
  * A class for interacting with the git remote
  */
@@ -253,11 +371,7 @@ export default class Release {
     const queries = await Promise.all(
       batches
         .map(batch =>
-          buildSearchQuery(
-            this.git.options.owner,
-            this.git.options.repo,
-            batch.map(c => c.hash)
-          )
+          buildSearchQuery(this.git.options.owner, this.git.options.repo, batch)
         )
         .filter((q): q is string => Boolean(q))
         .map(q => this.git.graphql(q))
diff --git a/plugins/all-contributors/CHANGELOG.md b/plugins/all-contributors/CHANGELOG.md
index 1ebe3abf..e8a01582 100644
--- a/plugins/all-contributors/CHANGELOG.md
+++ b/plugins/all-contributors/CHANGELOG.md
@@ -1,21 +1,3 @@
-# v9.1.0 (Tue Jan 21 2020)
-
-#### 🐛  Bug Fix
-
-- Bump all-contributors-cli from 6.12.0 to 6.13.0
-
-Bumps [all-contributors-cli](https://github.com/all-contributors/all-contributors-cli) from 6.12.0 to 6.13.0.
-- [Release notes](https://github.com/all-contributors/all-contributors-cli/releases)
-- [Commits](https://github.com/all-contributors/all-contributors-cli/compare/v6.12.0...v6.13.0)
-
-Signed-off-by: dependabot-preview[bot] <support@dependabot.com>  ([@dependabot-preview[bot]](https://github.com/dependabot-preview[bot]))
-
-#### Authors: 1
-
-- [@dependabot-preview[bot]](https://github.com/dependabot-preview[bot])
-
----
-
 # v9.0.2 (Tue Jan 14 2020)
 
 #### 🐛  Bug Fix
diff --git a/plugins/all-contributors/package.json b/plugins/all-contributors/package.json
index 3b54c089..d93f7bfc 100644
--- a/plugins/all-contributors/package.json
+++ b/plugins/all-contributors/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/all-contributors",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Automatically add contributors as changelogs are produced.",
   "author": {
@@ -41,7 +41,7 @@
     "tslib": "1.10.0"
   },
   "devDependencies": {
-    "all-contributors-cli": "6.13.0"
+    "all-contributors-cli": "6.12.0"
   },
   "peerDependencies": {
     "all-contributors-cli": ">= 6.x"
diff --git a/plugins/chrome/package.json b/plugins/chrome/package.json
index e3481a31..45db1692 100644
--- a/plugins/chrome/package.json
+++ b/plugins/chrome/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/chrome",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Chrome publishing plugin for auto",
   "author": {
diff --git a/plugins/chrome/src/index.ts b/plugins/chrome/src/index.ts
index 6700961b..2bffcf16 100644
--- a/plugins/chrome/src/index.ts
+++ b/plugins/chrome/src/index.ts
@@ -91,7 +91,7 @@ export default class ChromeWebStorePlugin implements IPlugin {
 
     auto.hooks.getAuthor.tapPromise(this.name, async () => {
       auto.logger.verbose.info(
-        `${this.name}: Getting author information from package.json`
+        `${this.name}: Getting author information from manifest.json`
       );
 
       const manifest = await getManifest(this.options.manifest);
@@ -116,7 +116,7 @@ export default class ChromeWebStorePlugin implements IPlugin {
       const version = auto.prefixRelease(manifest.version);
 
       auto.logger.verbose.info(
-        `${this.name}: Got previous version from package.json`,
+        `${this.name}: Got previous version from manifest.json`,
         version
       );
 
diff --git a/plugins/conventional-commits/package.json b/plugins/conventional-commits/package.json
index 459fd6dd..b04ef701 100644
--- a/plugins/conventional-commits/package.json
+++ b/plugins/conventional-commits/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/conventional-commits",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Conventional commit plugin for auto",
   "author": {
diff --git a/plugins/crates/package.json b/plugins/crates/package.json
index c90d59e9..72c9c1ff 100644
--- a/plugins/crates/package.json
+++ b/plugins/crates/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/crates",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Deploy Rust crates to crates.io",
   "author": {
diff --git a/plugins/first-time-contributor/package.json b/plugins/first-time-contributor/package.json
index 22c724e0..22c539ac 100644
--- a/plugins/first-time-contributor/package.json
+++ b/plugins/first-time-contributor/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/first-time-contributor",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Thank first time contributors for their work right in your release notes.",
   "author": {
diff --git a/plugins/git-tag/package.json b/plugins/git-tag/package.json
index 0695255d..f6fc21b3 100644
--- a/plugins/git-tag/package.json
+++ b/plugins/git-tag/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/git-tag",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Manage your projects version through just a git tag",
   "author": {
diff --git a/plugins/jira/package.json b/plugins/jira/package.json
index 59508473..43632be7 100644
--- a/plugins/jira/package.json
+++ b/plugins/jira/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/jira",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Jira plugin for auto",
   "author": {
diff --git a/plugins/maven/package.json b/plugins/maven/package.json
index c5ab9846..2b901aae 100644
--- a/plugins/maven/package.json
+++ b/plugins/maven/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/maven",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Maven publishing plugin for auto",
   "author": {
diff --git a/plugins/maven/src/index.ts b/plugins/maven/src/index.ts
index b5dc7688..74f4eef7 100644
--- a/plugins/maven/src/index.ts
+++ b/plugins/maven/src/index.ts
@@ -24,7 +24,7 @@ async function getPreviousVersion(auto: Auto): Promise<string> {
   }
 
   auto.logger.verbose.info(
-    'Maven: Got previous version from package.json',
+    'Maven: Got previous version from pom.xml',
     previousVersion
   );
 
diff --git a/plugins/npm/package.json b/plugins/npm/package.json
index a4f5b7ee..6fb8a59b 100644
--- a/plugins/npm/package.json
+++ b/plugins/npm/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/npm",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "NPM publishing plugin for auto",
   "author": {
diff --git a/plugins/omit-commits/package.json b/plugins/omit-commits/package.json
index 5b2006f4..2da1721c 100644
--- a/plugins/omit-commits/package.json
+++ b/plugins/omit-commits/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/omit-commits",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Omit commits plugin for auto",
   "author": {
diff --git a/plugins/omit-release-notes/package.json b/plugins/omit-release-notes/package.json
index 4d7d96d3..131723c3 100644
--- a/plugins/omit-release-notes/package.json
+++ b/plugins/omit-release-notes/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/omit-release-notes",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Omit release notes plugin for auto",
   "author": {
diff --git a/plugins/released/package.json b/plugins/released/package.json
index f0297791..15735e34 100644
--- a/plugins/released/package.json
+++ b/plugins/released/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/released",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Released plugin for auto. Comments with version + extra",
   "author": {
diff --git a/plugins/s3/package.json b/plugins/s3/package.json
index 590ffa4d..7a990c22 100644
--- a/plugins/s3/package.json
+++ b/plugins/s3/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/s3",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Post your built artifacts to s3",
   "author": {
diff --git a/plugins/slack/package.json b/plugins/slack/package.json
index 57137f86..589f8fc4 100644
--- a/plugins/slack/package.json
+++ b/plugins/slack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/slack",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Slack plugin for auto",
   "author": {
diff --git a/plugins/twitter/package.json b/plugins/twitter/package.json
index b43d356f..d5ac0db3 100644
--- a/plugins/twitter/package.json
+++ b/plugins/twitter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/twitter",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Twitter plugin for auto",
   "author": {
diff --git a/plugins/upload-assets/package.json b/plugins/upload-assets/package.json
index 3cf1147e..60f90c93 100644
--- a/plugins/upload-assets/package.json
+++ b/plugins/upload-assets/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/upload-assets",
-  "version": "9.1.0",
+  "version": "9.0.2",
   "main": "dist/index.js",
   "description": "Upload assets plugin for auto",
   "author": {
diff --git a/yarn.lock b/yarn.lock
index d489598c..92e169e2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -14,7 +14,7 @@
     "@octokit/plugin-enterprise-compatibility" "1.1.1"
     "@octokit/plugin-retry" "^2.2.0"
     "@octokit/plugin-throttling" "^2.6.0"
-    "@octokit/rest" "16.37.0"
+    "@octokit/rest" "16.36.0"
     await-to-js "^2.1.1"
     cosmiconfig "6.0.0"
     deepmerge "^4.0.0"
@@ -2189,10 +2189,10 @@
     once "^1.4.0"
     universal-user-agent "^4.0.0"
 
-"@octokit/rest@16.37.0", "@octokit/rest@^16.28.1", "@octokit/rest@^16.28.4":
-  version "16.37.0"
-  resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.37.0.tgz#e08501c471199cb4942587f2425a7990b34a49eb"
-  integrity sha512-qLPK9FOCK4iVpn6ghknNuv/gDDxXQG6+JBQvoCwWjQESyis9uemakjzN36nvvp8SCny7JuzHI2RV8ChbV5mYdQ==
+"@octokit/rest@16.36.0", "@octokit/rest@^16.28.1", "@octokit/rest@^16.28.4":
+  version "16.36.0"
+  resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.36.0.tgz#99892c57ba632c2a7b21845584004387b56c2cb7"
+  integrity sha512-zoZj7Ya4vWBK4fjTwK2Cnmu7XBB1p9ygSvTk2TthN6DVJXM4hQZQoAiknWFLJWSTix4dnA3vuHtjPZbExYoCZA==
   dependencies:
     "@octokit/request" "^5.2.0"
     "@octokit/request-error" "^1.0.2"
@@ -2251,7 +2251,7 @@
   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
   integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
 
-"@tokenizer/token@^0.1.0", "@tokenizer/token@^0.1.1":
+"@tokenizer/token@^0.1.0":
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3"
   integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==
@@ -2555,13 +2555,13 @@
     "@typescript-eslint/typescript-estree" "2.12.0"
     eslint-scope "^5.0.0"
 
-"@typescript-eslint/experimental-utils@2.16.0", "@typescript-eslint/experimental-utils@^2.5.0":
-  version "2.16.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.16.0.tgz#bba65685728c532e0ddc811a0376e8d38e671f77"
-  integrity sha512-bXTmAztXpqxliDKZgvWkl+5dHeRN+jqXVZ16peKKFzSXVzT6mz8kgBpHiVzEKO2NZ8OCU7dG61K9sRS/SkUUFQ==
+"@typescript-eslint/experimental-utils@2.15.0", "@typescript-eslint/experimental-utils@^2.5.0":
+  version "2.15.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.15.0.tgz#41e35313bfaef91650ddb5380846d1c78a780070"
+  integrity sha512-Qkxu5zndY5hqlcQkmA88gfLvqQulMpX/TN91XC7OuXsRf4XG5xLGie0sbpX97o/oeccjeZYRMipIsjKk/tjDHA==
   dependencies:
     "@types/json-schema" "^7.0.3"
-    "@typescript-eslint/typescript-estree" "2.16.0"
+    "@typescript-eslint/typescript-estree" "2.15.0"
     eslint-scope "^5.0.0"
 
 "@typescript-eslint/experimental-utils@^1.13.0":
@@ -2574,13 +2574,13 @@
     eslint-scope "^4.0.0"
 
 "@typescript-eslint/parser@^2.7.0":
-  version "2.16.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.16.0.tgz#d0c0135a8fdb915f670802ddd7c1ba457c1b4f9d"
-  integrity sha512-+w8dMaYETM9v6il1yYYkApMSiwgnqXWJbXrA94LAWN603vXHACsZTirJduyeBOJjA9wT6xuXe5zZ1iCUzoxCfw==
+  version "2.15.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.15.0.tgz#379a71a51b0429bc3bc55c5f8aab831bf607e411"
+  integrity sha512-6iSgQsqAYTaHw59t0tdjzZJluRAjswdGltzKEdLtcJOxR2UVTPHYvZRqkAVGCkaMVb6Fpa60NnuozNCvsSpA9g==
   dependencies:
     "@types/eslint-visitor-keys" "^1.0.0"
-    "@typescript-eslint/experimental-utils" "2.16.0"
-    "@typescript-eslint/typescript-estree" "2.16.0"
+    "@typescript-eslint/experimental-utils" "2.15.0"
+    "@typescript-eslint/typescript-estree" "2.15.0"
     eslint-visitor-keys "^1.1.0"
 
 "@typescript-eslint/typescript-estree@1.13.0":
@@ -2604,16 +2604,16 @@
     semver "^6.3.0"
     tsutils "^3.17.1"
 
-"@typescript-eslint/typescript-estree@2.16.0":
-  version "2.16.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.16.0.tgz#b444943a76c716ed32abd08cbe96172d2ca0ab75"
-  integrity sha512-hyrCYjFHISos68Bk5KjUAXw0pP/455qq9nxqB1KkT67Pxjcfw+r6Yhcmqnp8etFL45UexCHUMrADHH7dI/m2WQ==
+"@typescript-eslint/typescript-estree@2.15.0":
+  version "2.15.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.15.0.tgz#79ae52eed8701b164d91e968a65d85a9105e76d3"
+  integrity sha512-L6Pog+w3VZzXkAdyqA0VlwybF8WcwZX+mufso86CMxSdWmcizJ38lgBdpqTbc9bo92iyi0rOvmATKiwl+amjxg==
   dependencies:
     debug "^4.1.1"
     eslint-visitor-keys "^1.1.0"
     glob "^7.1.6"
     is-glob "^4.0.1"
-    lodash "^4.17.15"
+    lodash.unescape "4.0.1"
     semver "^6.3.0"
     tsutils "^3.17.1"
 
@@ -2947,10 +2947,10 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
     json-schema-traverse "^0.4.1"
     uri-js "^4.2.2"
 
-all-contributors-cli@6.13.0, all-contributors-cli@^6.4.0:
-  version "6.13.0"
-  resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-6.13.0.tgz#59378d70810d29fb287c5a9486273490b21f61fa"
-  integrity sha512-rYLVMaXnkHLn2XrCBCCC+nsjBjC+c4/6YTPqipMDyDGKgFX8/tU7Q1D0l0MJnHIhu8s6g7qvpLMqxwjBmR5RHA==
+all-contributors-cli@6.12.0, all-contributors-cli@^6.4.0:
+  version "6.12.0"
+  resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-6.12.0.tgz#2fe6a3dc08721ba96124e62ebdaefb8e62023f25"
+  integrity sha512-ENkZIWmJgU4v/gGpuJTGtYypX4qXd8oLXkeCtfDd6+yjrOIGzxyvB/iFCPAkZTltb4O5tgBw3p1ikNNBR3RUeA==
   dependencies:
     "@babel/runtime" "^7.2.0"
     async "^3.0.1"
@@ -5837,9 +5837,9 @@ enhanced-resolve@~0.9.0:
     tapable "^0.1.8"
 
 enquirer@^2.3.0:
-  version "2.3.4"
-  resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9"
-  integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw==
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.2.tgz#1c30284907cadff5ed2404bd8396036dd3da070e"
+  integrity sha512-PLhTMPUXlnaIv9D3Cq3/Zr1xb7soeDDgunobyCmYLUG19n24dvC8i+ZZgm2DekGpDnx7JvFSHV7lxfM58PMtbA==
   dependencies:
     ansi-colors "^3.2.1"
 
@@ -6090,9 +6090,9 @@ eslint-plugin-babel@^5.3.0:
     eslint-rule-composer "^0.3.0"
 
 eslint-plugin-import@^2.17.1, eslint-plugin-import@^2.18.2:
-  version "2.20.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz#d749a7263fb6c29980def8e960d380a6aa6aecaa"
-  integrity sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==
+  version "2.19.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448"
+  integrity sha512-x68131aKoCZlCae7rDXKSAQmbT5DQuManyXo2sK6fJJ0aK5CWAkv6A6HJZGgqC8IhjQxYPgo6/IY4Oz8AFsbBw==
   dependencies:
     array-includes "^3.0.3"
     array.prototype.flat "^1.2.1"
@@ -6123,9 +6123,9 @@ eslint-plugin-jest@^23.0.1:
     micromatch "^4.0.2"
 
 eslint-plugin-jsdoc@^20.0.0:
-  version "20.3.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-20.3.1.tgz#919366d1ab3342f90321975249833db1ff751472"
-  integrity sha512-JQ25OXvseVm84pX2mcVvKtGwrZDeAxgFUkq11f/pJpbGJMANYcLaMAUuW7U3cGhapWh+Gj04At/enAt26dpOeg==
+  version "20.3.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-20.3.0.tgz#1ec066b1719c22d336d06e98df41d4399dd6531c"
+  integrity sha512-7tBrLcN02smsQsl8hOKZZx6sGM9qlkN6AmAf7ggpZjsAD/Qi4RsPK+JFzQkA4RysyyDnPZfrJhV19vrQut2dLA==
   dependencies:
     comment-parser "^0.7.2"
     debug "^4.1.1"
@@ -6757,12 +6757,12 @@ file-type@^10.4.0:
   integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==
 
 file-type@^13.0.3:
-  version "13.1.1"
-  resolved "https://registry.yarnpkg.com/file-type/-/file-type-13.1.1.tgz#439ceea3a50a3929b21d18d9c1c77fd7f2a63aa8"
-  integrity sha512-HEb3tepyq8KzKSFEGMJSIxqn8uC1n3AM8OKME5+BIgq0bErRzcDPOdmnyPKtfjStSpIvuk0Rle8mvuG4824caQ==
+  version "13.0.3"
+  resolved "https://registry.yarnpkg.com/file-type/-/file-type-13.0.3.tgz#38ec631acda18103da09d4f1750836932e6711c4"
+  integrity sha512-fe3+9mnMLbpP8nRQm/cJgehypv375SOFOXFdLYyYe7hWxdWgS5hkDpWnld5At/vvfVEN6rVqKA3EOKMP03tJGg==
   dependencies:
     readable-web-to-node-stream "^2.0.0"
-    strtok3 "^5.0.2"
+    strtok3 "^5.0.1"
     token-types "^2.0.0"
     typedarray-to-buffer "^3.1.5"
 
@@ -7170,6 +7170,11 @@ get-stdin@^6.0.0:
   resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
   integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
 
+get-stdin@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
+  integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
+
 get-stream@3.0.0, get-stream@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@@ -7860,13 +7865,14 @@ humanize-url@^1.0.0:
     strip-url-auth "^1.0.0"
 
 husky@^4.0.7:
-  version "4.0.10"
-  resolved "https://registry.yarnpkg.com/husky/-/husky-4.0.10.tgz#659b52c404d3163b943a73f6c1d454708c0226d8"
-  integrity sha512-Ptm4k2DqOwxeK/kzu5RaJmNRoGvESrgDXObFcZ8aJZcyXyMBHhM2FqZj6zYKdetadmP3wCwxEHCBuB9xGlRp8A==
+  version "4.0.7"
+  resolved "https://registry.yarnpkg.com/husky/-/husky-4.0.7.tgz#cee4301d1db1d731be9c2aa2ac72b46439d30c91"
+  integrity sha512-ULivTOe0k+nNjZKIojoHxXjybtEycaba0EDuk1G8iNGD8wZgo8Sr3YiN8bKitXNpI1RvVKTJwRnh2GLysLbxMQ==
   dependencies:
     chalk "^3.0.0"
     ci-info "^2.0.0"
     cosmiconfig "^6.0.0"
+    get-stdin "^7.0.0"
     opencollective-postinstall "^2.0.2"
     pkg-dir "^4.2.0"
     please-upgrade-node "^3.2.0"
@@ -14279,12 +14285,12 @@ strong-log-transformer@^2.0.0:
     minimist "^1.2.0"
     through "^2.3.4"
 
-strtok3@^5.0.2:
-  version "5.0.2"
-  resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-5.0.2.tgz#bb81f1f56742e16f1a30ccce5dc3d9498aa5475a"
-  integrity sha512-EFeVpFC5qDsqPEJSrIYyS/ueFBknGhgSK9cW+YAJF/cgJG/KSjoK7X6rK5xnpcLe7y1LVkVFCXWbAb+ClNKzKQ==
+strtok3@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-5.0.1.tgz#f89e09fa024dff82e39c160faf8d8706c24e7d21"
+  integrity sha512-AWliiIjyb87onqO8pM+1Hozm+PPcR4YYIWbFUT5OKQ+tOMwgdT8HwJd/IS8v3/gKdAtE5aE2p3FhcWqryuZPLQ==
   dependencies:
-    "@tokenizer/token" "^0.1.1"
+    "@tokenizer/token" "^0.1.0"
     debug "^4.1.1"
     peek-readable "^3.1.0"
 
@@ -14903,9 +14909,9 @@ typescript-memoize@^1.0.0-alpha.3:
     core-js "2.4.1"
 
 typescript@~3.7.2:
-  version "3.7.5"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae"
-  integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==
+  version "3.7.4"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.4.tgz#1743a5ec5fef6a1fa9f3e4708e33c81c73876c19"
+  integrity sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==
 
 typical@^2.6.1:
   version "2.6.1"


Test patch:
diff --git a/packages/core/src/__tests__/__snapshots__/match-sha-to-pr.test.ts.snap b/packages/core/src/__tests__/__snapshots__/match-sha-to-pr.test.ts.snap
deleted file mode 100644
index 236e32e3..00000000
--- a/packages/core/src/__tests__/__snapshots__/match-sha-to-pr.test.ts.snap
+++ /dev/null
@@ -1,49 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`buildSearchQuery generates a valid query 1`] = `
-"{
-    hash_abc123: search(query: \\"repo:Andrew/test abc123\\", type: ISSUE, first: 1) {
-  edges {
-    node {
-      ... on PullRequest {
-        number
-        state
-        body
-        labels(first: 10) {
-          edges {
-            node {
-              name
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-hash_3def78: search(query: \\"repo:Andrew/test 3def78\\", type: ISSUE, first: 1) {
-  edges {
-    node {
-      ... on PullRequest {
-        number
-        state
-        body
-        labels(first: 10) {
-          edges {
-            node {
-              name
-            }
-          }
-        }
-      }
-    }
-  }
-}
-    rateLimit {
-      limit
-      cost
-      remaining
-      resetAt
-    }
-  }"
-`;
diff --git a/packages/core/src/__tests__/__snapshots__/release.test.ts.snap b/packages/core/src/__tests__/__snapshots__/release.test.ts.snap
index 2cb7f9e7..15b09531 100644
--- a/packages/core/src/__tests__/__snapshots__/release.test.ts.snap
+++ b/packages/core/src/__tests__/__snapshots__/release.test.ts.snap
@@ -1,5 +1,53 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`Release buildSearchQuery generates a valid query 1`] = `
+"{
+    hash_abc123: search(query: \\"repo:Andrew/test abc123\\", type: ISSUE, first: 1) {
+  edges {
+    node {
+      ... on PullRequest {
+        number
+        state
+        body
+        labels(first: 10) {
+          edges {
+            node {
+              name
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+hash_3def78: search(query: \\"repo:Andrew/test 3def78\\", type: ISSUE, first: 1) {
+  edges {
+    node {
+      ... on PullRequest {
+        number
+        state
+        body
+        labels(first: 10) {
+          edges {
+            node {
+              name
+            }
+          }
+        }
+      }
+    }
+  }
+}
+    rateLimit {
+      limit
+      cost
+      remaining
+      resetAt
+    }
+  }"
+`;
+
 exports[`Release generateReleaseNotes should allow user to configure section headings 1`] = `
 "#### 💥  Breaking Change
 
diff --git a/packages/core/src/__tests__/match-sha-to-pr.test.ts b/packages/core/src/__tests__/match-sha-to-pr.test.ts
deleted file mode 100644
index 3fa562d8..00000000
--- a/packages/core/src/__tests__/match-sha-to-pr.test.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { parse } from 'graphql';
-
-import { buildSearchQuery } from '../match-sha-to-pr';
-
-describe('buildSearchQuery', () => {
-  test('generates a valid query', () => {
-    const query = buildSearchQuery('Andrew', 'test', ['abc123', '3def78']);
-    expect(() => parse(query!)).not.toThrow();
-    expect(query).toMatchSnapshot();
-  });
-
-  test("doesn't generate a query without commits", () => {
-    const query = buildSearchQuery('Andrew', 'test', []);
-    expect(query).toBeUndefined();
-  });
-});
diff --git a/packages/core/src/__tests__/release.test.ts b/packages/core/src/__tests__/release.test.ts
index 9a39da32..98db1813 100644
--- a/packages/core/src/__tests__/release.test.ts
+++ b/packages/core/src/__tests__/release.test.ts
@@ -1,6 +1,8 @@
+import { parse } from 'graphql';
 import Git from '../git';
 import LogParse from '../log-parse';
 import Release, {
+  buildSearchQuery,
   defaultLabels,
   getVersionMap,
   ILabelDefinition
@@ -775,6 +777,22 @@ describe('Release', () => {
     });
   });
 
+  describe('buildSearchQuery', () => {
+    test('generates a valid query', () => {
+      const query = buildSearchQuery('Andrew', 'test', [
+        makeCommitFromMsg('first', { hash: 'abc123' }),
+        makeCommitFromMsg('second', { hash: '3def78' })
+      ]);
+      expect(() => parse(query!)).not.toThrow();
+      expect(query).toMatchSnapshot();
+    });
+
+    test("doesn't generate a query without commits", () => {
+      const query = buildSearchQuery('Andrew', 'test', []);
+      expect(query).toBeUndefined();
+    });
+  });
+
   describe('getSemverBump', () => {
     test('default to patch', async () => {
       const gh = new Release(git);