Repository: intuit/auto
Pull request #701 (2019-11-17 09:31:30)

Modified packages/cli README
# What Changed
Added detailed installation steps and context to auto CLI commands along with documentation links.
# Why
addresses issue #666 
Todo:

- [ ] Add tests
- [x] Add docs

<!-- GITHUB_RELEASE PR BODY: canary-version -->
Published PR with canary version: `7.15.3-canary.701.9314.0`
<!-- GITHUB_RELEASE PR BODY: canary-version -->



Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b3ec919a..68a6ba37 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,46 +1,3 @@
-# v7.16.2 (Thu Nov 14 2019)
-
-#### 🐛  Bug Fix
-
-- `@auto-it/npm`
-  - More flexible monorepo publishing [#698](https://github.com/intuit/auto/pull/698) ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
-#### Authors: 1
-
-- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
----
-
-# v7.16.1 (Thu Nov 14 2019)
-
-#### 🐛  Bug Fix
-
-- `@auto-it/npm`
-  - match behavior between lerna and npm when pushing git tags [#697](https://github.com/intuit/auto/pull/697) ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
-#### Authors: 1
-
-- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
----
-
-# v7.16.0 (Thu Nov 14 2019)
-
-#### 🚀  Enhancement
-
-- automatically update brew formula [#694](https://github.com/intuit/auto/pull/694) ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
-#### 🐛  Bug Fix
-
-- correct grammar [#696](https://github.com/intuit/auto/pull/696) ([@hipstersmoothie](https://github.com/hipstersmoothie))
-- correct docs [#695](https://github.com/intuit/auto/pull/695) ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
-#### Authors: 1
-
-- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
-
----
-
 # v7.15.2 (Thu Nov 14 2019)
 
 #### 🐛  Bug Fix
diff --git a/Formula/auto.rb b/Formula/auto.rb
deleted file mode 100644
index aefaf227..00000000
--- a/Formula/auto.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-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/v7.16.2/auto-macos.gz"
-  sha256 "c15f9f1eba3b51d5be82d02ccd7e5c64866b41ffc70430d9a430d0153b50e735"
-
-  def install
-    libexec.install Dir["*"]
-    bin.install libexec/"auto-macos"
-    mv bin/"auto-macos", bin/"auto"
-  end
-
-  test do
-    system bin/"auto", "--version"
-  end
-end
\ No newline at end of file
diff --git a/docs/pages/non-npm.md b/docs/pages/non-npm.md
index f1452e2c..7eb86dbf 100644
--- a/docs/pages/non-npm.md
+++ b/docs/pages/non-npm.md
@@ -17,15 +17,6 @@ chmod a+x ~/auto
 
 This executable contains all of the official `auto` plugins so you do not have to download anything extra. This version of `auto` uses the [git-tag](../../plugins/git-tag/README.md) plugins as the default instead of [npm](../../plugins/npm/README.md). If you specify any plugins this will be overriden.
 
-### Installation via brew (OSX)
-
-If you are on OSX you can install `auto` with brew.
-
-```sh
-brew tap intuit/auto https://github.com/intuit/auto
-brew install auto
-```
-
 ## Configuration
 
 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.
diff --git a/docs/pages/writing-plugins.md b/docs/pages/writing-plugins.md
index a2cc97bf..b58699d5 100644
--- a/docs/pages/writing-plugins.md
+++ b/docs/pages/writing-plugins.md
@@ -54,7 +54,7 @@ Plugins work by hooking into various actions that `auto` has to do in order to f
 
 #### beforeRun
 
-Happens before anything is done. This is a great place to check for platform specific secrets such as a npm token.
+Happens before anything is done. This is a great place to check for platform specific secrets such as a NPM token.
 
 ```ts
 auto.hooks.beforeRun.tapPromise('NPM', async config => {
diff --git a/lerna.json b/lerna.json
index 205fe679..d483ff7e 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
 {
-  "version": "7.16.2",
+  "version": "7.15.2",
   "npmClient": "yarn",
   "useWorkspaces": true,
   "packages": [
diff --git a/package.json b/package.json
index 42bfd91d..3a770b4d 100644
--- a/package.json
+++ b/package.json
@@ -55,7 +55,7 @@
     "eslint-plugin-prettier": "^3.1.1",
     "graphql": "^14.2.1",
     "husky": "^3.0.3",
-    "ignite": "^1.10.8",
+    "ignite": "^1.10.7",
     "jest": "~24.9.0",
     "jest-serializer-path": "^0.1.15",
     "lerna": "^3.13.4",
@@ -143,7 +143,6 @@
           }
         }
       ],
-      "./scripts/update-tap.js",
       [
         "upload-assets",
         [
diff --git a/packages/cli/README.md b/packages/cli/README.md
index 9b3c0abd..1ef73b52 100644
--- a/packages/cli/README.md
+++ b/packages/cli/README.md
@@ -1,75 +1,170 @@
 # auto CLI
 
-`auto` is a tool designed to seamlessly automate the release workflow. It is powered by semantic version labels on pull requests, so does not require you to change your code or make drastic changes to your current workflow.
+`auto` is a tool designed to seamlessly automate the release workflow.
+It is powered by [semantic version](https://semver.org/) labels on pull requests.
+This approach does not require you to change your code or make any drastic changes to your current workflow.
 
 While intended to run in a continuous integration (CI) environment, all `auto` commands can run locally as well.
 
 ## Installation
 
+`auto` is distributed through npm, but you can use it with a variety of package management platforms.
+
 ```sh
 npm install auto
 ```
 
+For `auto` installation in `non-npm` environments follow these [instructions](https://intuit.github.io/auto/pages/non-npm.html#installation).
+
 ## Getting Started
 
-Interactive setup for most configurable options
+Getting started with `auto` is super easy.
 
-```sh
-auto init
-```
+### Prerequisites
 
-Create your project's labels on github. If labels already exist, it will update them.
+If your project is already published or has releases then you need to make sure that your last release is tagged and that it's the `Latest Release` on GitHub.
+
+To tag your last release find the last commit where you bumped the version and run the following commands with your version number.
 
 ```sh
-auto create-labels
+git tag v1.2.3
+git push --tags
 ```
 
-## Usage
+Then on GitHub go to your project's releases and click `Draft a new release`.
+In the `Tag version` field enter the version number you just tagged and click `Publish release`.
 
-```sh
+### Setup Steps
+
+1. **(OPTIONAL)** Initialize all options and configure label text.
+   If this is not run then `auto` will use the default configuration.
+   This command will produce an `.autorc`.
+   You can configure most flags and all labels/changelogTitles.
+
+   ```sh
+   auto init
+   ```
+
+   All options can also be configured via the `.autorc` file.
+   As CLI options you supply them in snake-case `(--foo-bar)`, but as `.autorc` options you supply them in camelCase `(fooBar)`,
+
+   [Exclusive options](https://intuit.github.io/auto/pages/autorc.html#exclusive) (extends, labels) can only be set in the `.autorc` and do not exist as CLI flags.
+
+   Any option in the `.autorc` will get overridden by the CLI flags if provided.
+   The following are options that might be more useful to set in the `.autorc` than with a flag:
+
+   ```txt
+     baseBranch           Configure what your repo considers the "master" branch.
+     plugins              Specify your plugins to load
+     githubApi            If you are using enterprise github, `auto` lets you configure the github API URL that it uses.
+     githubGraphqlApi     If you are using enterprise github and your company hosts the graphql at some other URL than the
+                          `githubApi`, you can use `githubGraphqlApi` to set the base path for `auto`. The `githubGraphqlApi` gets
+                          merged with `/graphql` to build the final URL.
+   ```
+
+2. Configure environment variables
+
+   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
+   - `NPM_TOKEN` - Used to publish to npm. (only with NPM plugin)
+
+   **Local `.env`:**
+
+   You can also store these values in a local file at the root of your project named `.env`.
+   Make sure to add this file to your `.gitignore` so you don't commit any keys!
+   These environment variables will override any variable already set on the process.
+   This enables you to have a per project configuration that isn't effected by your global setup.
+
+   `PROJECT_ROOT/.env`:
+
+   ```sh
+   GH_TOKEN=YOUR_TOKEN
+   NPM_TOKEN=PUBLISH_TOKEN
+   ```
+
+3. Create your project's labels on github. If a label already exist, it will be updated.
+
+   The types of labels that `auto` uses are:
+
+   - Versioning Labels - used to calculate version numbers and make releases.
+   - Changelog Labels - These labels do not effect the version calculation but they will change the section the PR displays in the changelog.
+     These are customizable too, and you can even add your own sections. Read more [here](https://intuit.github.io/auto/pages/autorc.html#changelog-titles).
+
+   To create the labels for your project on GitHub, run the following command with your `GH_TOKEN`.
+
+   ```sh
+   GH_TOKEN=YOUR_TOKEN auto create-labels
+   # or with .env file
+   auto create-labels
+   ```
+
+4. Set up script
+
+   `auto` is written so that each tool it exposes is useful in isolation. 
+   To version, changelog, publish and release your code all at the same time we've included the `shipit` tool.
+   This tool takes the default `auto` workflow and puts it into one command.
+
+   It will:
+
+   - Publish canary releases when run from a PR or locally on any branch other than the `baseBranch`
+   - Generate a changelog and publish a "latest" release to a package manager when run from the `baseBranch`
+
+   ```json
+   {
+     "scripts": {
+       "release": "auto shipit"
+     }
+   }
+   ```
+
+   For detailed setup instructions,refer [here](https://intuit.github.io/auto/pages/getting-started.html#detailed-setup)
+
+## Usage (`--help`)
+
+```txt
 $ auto --help
 
+auto
+
+  Generate releases based on semantic version labels on pull requests, and
+  other pull request automation tools.
+
 Synopsis
 
   $ auto <command> <options>
 
-Setup Commands
+Setup Command
 
   init            Interactive setup for most configurable options
   create-labels   Create your project's labels on github. If labels exist it will update them.
 
+Pull Request Interaction Commands
+
+  label       Get the labels for a pull request. Doesn't do much, but the return value lets you write you own scripts based off of the PR labels!
+  comment     Comment on a pull request with a markdown message. Each comment has a context, and each context only has one comment.
+  pr-check    Check that a pull request has a SemVer label
+  pr-status   Set the status on a PR commit
+  pr-body     Update the body of a PR with a message. Appends to PR and will not overwrite user content. Each comment has a context, and each context only has one comment.
+
 Release Commands
 
-  version     Get the semantic version bump for the given changes.
-  changelog   Prepend release notes to 'CHANGELOG.md'
+  version     Get the semantic version bump for the given changes. Requires all PRs to have labels for the change type. If a PR does not have a label associated with it, it will default to `patch`.
+  changelog   Prepend release notes to `CHANGELOG.md`, create one if it doesn't exist, and commit the changes.
   release     Auto-generate a github release
   shipit      Run the full `auto` release pipeline. Detects if in a lerna project.
 
               1. call from base branch -> latest version released
               2. call from PR in CI -> canary version released
               3. call locally when not on base branch -> canary version released
-  canary      Make a canary release of the project. Useful on PRs. If ran locally, `canary` will release
-              a canary version for your current git HEAD.
+  canary      Make a canary release of the project. Useful on PRs. If ran locally, `canary` will release a canary version for your current git HEAD.
 
               1. In PR: 1.2.3-canary.123.0 + add version to PR body
               2. Locally: 1.2.3-canary.1810cfd
 
-Pull Request Interaction Commands
+Global Options
 
-  label      Get the labels for a pull request
-  pr-check   Check that a pull request has a SemVer label
-  pr         Set the status on a PR commit
-  comment    Comment on a pull request with a markdown message. Each comment has a context, and each
-             context only has one comment.
-  pr-body    Update the body of a PR with a message. Appends to PR and will not overwrite user content.
-             Each comment has a context, and each context only has one comment.
-```
-
-## Available Global Options
-
-```
   -V, --version         Display auto's version
-  -h, --help            Display the help output for the command
   -v, --verbose         Show some more logs
   -w, --very-verbose    Show a lot more logs
   --repo string         The repo to set the status on. Defaults to looking in the package definition
@@ -77,5 +172,26 @@ Pull Request Interaction Commands
   --owner string        The owner of the GitHub repo. Defaults to reading from the package definition
                         for the platform
   --github-api string   GitHub API to use
-  --plugins string[]    Plugins to load auto with. (defaults to just `npm` or `git-tag`)
+  --plugins string[]    Plugins to load auto with. (defaults to just npm)
+  -h, --help            Display the help output
 ```
+
+## Merging Quickly
+
+One major caveat of `auto` is that you need to be mindful of merging multiple PRs at once. You must not merge two PRs at once or you will botch one of the releases.
+
+`auto` works by looking at the `git` tree to calculate the version bump then makes commits for the `CHANGELOG.md` and the new version. If you merge two PRs at once:
+
+1. one might pick up the others changes
+2. they might try to publish the same version number
+3. one will try to push over the other's changes and fail
+
+The one [exception](https://intuit.github.io/auto/pages/quick-merge.html#with-skip-release) to this rule with when merging a bunch of PRs with `skip-release` labels.
+
+You still can't merge a PR that triggers a release and then merge a PR with `skip-release`. This will result in problem 3 from above.
+But you can merge a bunch of PRs with `skip-release` then merge a PR that triggers a release.
+Because `skip-release` is present no commits are made and the release is fine!
+
+## Enterprise
+
+If you are using enterprise Github, `auto` lets you configure the Github API URL that it uses. You can configure this by using the CLI option --github-api, by setting the value in your `.autorc`, or during `auto init`.
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 2d9b28a3..508e47d0 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": "7.16.2",
+  "version": "7.15.2",
   "author": {
     "name": "Andrew Lisowski",
     "email": "lisowski54@gmail.com"
diff --git a/packages/core/package.json b/packages/core/package.json
index 8eb62846..c98e010b 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/core",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "description": "Node API for using auto.",
   "main": "dist/auto.js",
   "author": {
diff --git a/plugins/all-contributors/package.json b/plugins/all-contributors/package.json
index 32c60ec9..354a6529 100644
--- a/plugins/all-contributors/package.json
+++ b/plugins/all-contributors/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/all-contributors",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "Automatically add contributors as changelogs are produced.",
   "author": {
diff --git a/plugins/chrome/package.json b/plugins/chrome/package.json
index ab929e06..1d4b9ae7 100644
--- a/plugins/chrome/package.json
+++ b/plugins/chrome/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/chrome",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "Chrome publishing plugin for auto",
   "author": {
diff --git a/plugins/conventional-commits/package.json b/plugins/conventional-commits/package.json
index 2be0d26a..c78cf12d 100644
--- a/plugins/conventional-commits/package.json
+++ b/plugins/conventional-commits/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/conventional-commits",
-  "version": "7.16.2",
+  "version": "7.15.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 d38b339c..36b57c97 100644
--- a/plugins/crates/package.json
+++ b/plugins/crates/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/crates",
-  "version": "7.16.2",
+  "version": "7.15.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 191e7a1f..6c94cc00 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": "7.16.2",
+  "version": "7.15.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 8bc4c37e..810aa7a8 100644
--- a/plugins/git-tag/package.json
+++ b/plugins/git-tag/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/git-tag",
-  "version": "7.16.2",
+  "version": "7.15.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 510061d3..5e095650 100644
--- a/plugins/jira/package.json
+++ b/plugins/jira/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/jira",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "Jira plugin for auto",
   "author": {
diff --git a/plugins/maven/package.json b/plugins/maven/package.json
index 07200f47..0dcf2233 100644
--- a/plugins/maven/package.json
+++ b/plugins/maven/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/maven",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "Maven publishing plugin for auto",
   "author": {
diff --git a/plugins/npm/package.json b/plugins/npm/package.json
index 3e04ae52..81bec447 100644
--- a/plugins/npm/package.json
+++ b/plugins/npm/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/npm",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "NPM publishing plugin for auto",
   "author": {
diff --git a/plugins/npm/src/index.ts b/plugins/npm/src/index.ts
index d40ef04b..914fa645 100644
--- a/plugins/npm/src/index.ts
+++ b/plugins/npm/src/index.ts
@@ -444,7 +444,6 @@ export default class NPMPlugin implements IPlugin {
           !isIndependent && this.forcePublish && '--force-publish',
           '--no-commit-hooks',
           '--yes',
-          '--no-push',
           '-m',
           '"Bump version to: %v [skip ci]"',
           ...verboseArgs
@@ -564,24 +563,23 @@ export default class NPMPlugin implements IPlugin {
           'lerna',
           'publish',
           '--yes',
-          // Plugins can add as many commits as they want, lerna will still
-          // publish the changed package versions. from-git broke when HEAD
-          // didn't contain the tags
-          'from-package',
+          'from-git',
           ...verboseArgs
         ]);
-      } else {
-        const { private: isPrivate, name } = await loadPackageJson();
-        const isScopedPackage = name.match(/@\S+\/\S+/);
-
-        await execPromise(
-          'npm',
-          !isPrivate && isScopedPackage
-            ? ['publish', '--access', 'public', ...verboseArgs]
-            : ['publish', ...verboseArgs]
-        );
+
+        auto.logger.verbose.info('Successfully published repo');
+        return;
       }
 
+      const { private: isPrivate, name } = await loadPackageJson();
+      const isScopedPackage = name.match(/@\S+\/\S+/);
+
+      await execPromise(
+        'npm',
+        !isPrivate && isScopedPackage
+          ? ['publish', '--access', 'public', ...verboseArgs]
+          : ['publish', ...verboseArgs]
+      );
       await execPromise('git', [
         'push',
         '--follow-tags',
diff --git a/plugins/omit-commits/package.json b/plugins/omit-commits/package.json
index 04073a67..d44e60e9 100644
--- a/plugins/omit-commits/package.json
+++ b/plugins/omit-commits/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/omit-commits",
-  "version": "7.16.2",
+  "version": "7.15.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 e820ec1a..c7c0d875 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": "7.16.2",
+  "version": "7.15.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 effa0fd9..c0fc2463 100644
--- a/plugins/released/package.json
+++ b/plugins/released/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/released",
-  "version": "7.16.2",
+  "version": "7.15.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 236296df..ee5f8213 100644
--- a/plugins/s3/package.json
+++ b/plugins/s3/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/s3",
-  "version": "7.16.2",
+  "version": "7.15.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 eb65fea3..ef26f990 100644
--- a/plugins/slack/package.json
+++ b/plugins/slack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/slack",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "Slack plugin for auto",
   "author": {
diff --git a/plugins/twitter/package.json b/plugins/twitter/package.json
index 2bca02d0..89dc685b 100644
--- a/plugins/twitter/package.json
+++ b/plugins/twitter/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/twitter",
-  "version": "7.16.2",
+  "version": "7.15.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 1c5a79e5..e9f89e6e 100644
--- a/plugins/upload-assets/package.json
+++ b/plugins/upload-assets/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@auto-it/upload-assets",
-  "version": "7.16.2",
+  "version": "7.15.2",
   "main": "dist/index.js",
   "description": "Upload assets plugin for auto",
   "author": {
diff --git a/scripts/update-tap.js b/scripts/update-tap.js
deleted file mode 100644
index c701d86b..00000000
--- a/scripts/update-tap.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const dedent = require('dedent');
-const { execSync } = require('child_process');
-const fs = require('fs');
-const path = require('path');
-
-const createFormula = (version, sha) => dedent`
-  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/v${version}/auto-macos.gz"
-    sha256 "${sha}"
-
-    def install
-      libexec.install Dir["*"]
-      bin.install libexec/"auto-macos"
-      mv bin/"auto-macos", bin/"auto"
-    end
-
-    test do
-      system bin/"auto", "--version"
-    end
-  end
-`;
-
-module.exports = class {
-  constructor() {
-    this.name = 'brew';
-  }
-
-  apply(auto) {
-    auto.hooks.afterVersion.tap('Update brew', () => {
-      try {
-        const pathToExecutable = path.join(
-          __dirname,
-          '../packages/cli/binary/auto-macos.gz'
-        );
-        const sha = execSync(`shasum --algorithm 256 ${pathToExecutable}`, {
-          encoding: 'utf8'
-        }).split(' ')[0];
-        const version = JSON.parse(
-          fs.readFileSync(path.join(__dirname, '../lerna.json'))
-        ).version;
-
-        auto.logger.log.info(`Updating brew formula: v${version}#${sha}`);
-
-        const newFormula = createFormula(version, sha);
-        const output = './Formula/auto.rb';
-
-        fs.writeFileSync(output, newFormula);
-        auto.logger.verbose.info(`Wrote new formula to: ${output}`);
-
-        execSync(`git add ${output}`);
-        execSync('git commit -m "Bump brew formula [skip ci]" --no-verify');
-        auto.logger.verbose.info('Committed new formula');
-      } catch (error) {
-        auto.logger.log.error(error);
-      }
-    });
-  }
-};
diff --git a/yarn.lock b/yarn.lock
index 18cc52ef..060a05f4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8,7 +8,7 @@
   integrity sha512-m2OzlTDbhvzK4hgswH9Lx0cdpq1AntXu53Klz5RGkFfuoDvKsnlU7tmtVfNWtUiP0zZbGtrb/BZYH7aB6TRnMA==
 
 "@auto-it/core@link:packages/core":
-  version "7.16.1"
+  version "7.15.0"
   dependencies:
     "@octokit/graphql" "^4.0.0"
     "@octokit/plugin-enterprise-compatibility" "1.1.1"
@@ -36,7 +36,7 @@
     url-join "^4.0.0"
 
 "@auto-it/npm@link:plugins/npm":
-  version "7.16.1"
+  version "7.15.0"
   dependencies:
     "@auto-it/core" "link:packages/core"
     env-ci "^4.1.1"
@@ -51,7 +51,7 @@
     user-home "^2.0.0"
 
 "@auto-it/released@link:plugins/released":
-  version "7.16.1"
+  version "7.15.0"
   dependencies:
     "@auto-it/core" "link:packages/core"
     deepmerge "^4.0.0"
@@ -7880,10 +7880,10 @@ iferr@^0.1.5:
   resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
   integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
 
-ignite@^1.10.8:
-  version "1.10.8"
-  resolved "https://registry.yarnpkg.com/ignite/-/ignite-1.10.8.tgz#c045ae1f4b5b305389f1e35b72eca08182ab20ab"
-  integrity sha512-Pvem4/HyU8PGK/xPUWCOuTVPXMGpOSP1VLE98zmqmQjpuo9ut7Xx/qO4GJMcnZ7uWr9lVcTtqh4bz4foDszfNw==
+ignite@^1.10.7:
+  version "1.10.7"
+  resolved "https://registry.yarnpkg.com/ignite/-/ignite-1.10.7.tgz#5e466980c6b429ff57404addacba2b116e6f6c56"
+  integrity sha512-AI7UEYdbn4BS8sxKPRRFUVX8H+fYW4jF3bT+qC6cMhnBQ6eMRqSeEKZ9W+wCO0DaH3GVua63oiLGGFXF1R/tAQ==
   dependencies:
     "@babel/cli" "7.2.0"
     "@babel/core" "7.2.0"


Test patch:
diff --git a/plugins/npm/__tests__/npm.test.ts b/plugins/npm/__tests__/npm.test.ts
index 3625d439..4d567a44 100644
--- a/plugins/npm/__tests__/npm.test.ts
+++ b/plugins/npm/__tests__/npm.test.ts
@@ -394,7 +394,6 @@ describe('publish', () => {
       '--force-publish',
       '--no-commit-hooks',
       '--yes',
-      '--no-push',
       '-m',
       '"Bump version to: %v [skip ci]"'
     ]);
@@ -423,7 +422,6 @@ describe('publish', () => {
       false,
       '--no-commit-hooks',
       '--yes',
-      '--no-push',
       '-m',
       '"Bump version to: %v [skip ci]"'
     ]);
@@ -442,7 +440,7 @@ describe('publish', () => {
       'lerna',
       'publish',
       '--yes',
-      'from-package'
+      'from-git'
     ]);
   });
 
@@ -496,7 +494,6 @@ describe('publish', () => {
       '--force-publish',
       '--no-commit-hooks',
       '--yes',
-      '--no-push',
       '-m',
       '"Bump version to: %v [skip ci]"'
     ]);
@@ -685,7 +682,6 @@ describe('canary', () => {
       false,
       '--no-commit-hooks',
       '--yes',
-      '--no-push',
       '-m',
       '"Bump version to: %v [skip ci]"'
     ]);