node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

grunt-heroku-branch

grunt-heroku-branch

Wrapper to add the appropriate heroku remotes to git via grunt config

Getting Started

Prerequisite

You must install the Heroku toolbelt locally:

https://toolbelt.heroku.com/

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-heroku-branch --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-heroku-branch');

The "herokuBranch" task

Overview

In your project's Gruntfile, add a section named herokuBranch to the data object passed into grunt.initConfig().

grunt.initConfig({
  herokuBranch: {
    options: {
      changeCase: 'camelCase'
    },
    production: 'your-production-app-name',
    development: 'your-development-app-name',
  }
});

Options

options.changeCase

Type: String Default value: 'param' Valid values: 'sentenceCase'|'camelCase'|'pascalCase'|'snakeCase'|'paramCase'|'constantCase'

How to convert the build target to a remote name. This option is directly passed to https://www.npmjs.com/package/change-case

Example:

grunt.initConfig({
  herokuBranch: {
    options: {
      changeCase: 'camelCase'
    },
    remote_one: 'your-production-app-name',
    remoteTwo: 'your-development-app-name',
  }
});

Would produce the following result for git remote -v:

remoteOne git@heroku.com:your-development-app-name.git (fetch)
remoteTwo git@heroku.com:your-development-app-name.git (push)

Usage Examples

Default Options

grunt.initConfig({
  herokuBranch: {
    production: 'your-production-app-name',
    development: 'your-development-app-name',
  }
});

Would produce the following result for git remote -v:

production https://git.heroku.com:your-development-app-name.git (fetch) 
development https://git.heroku.com:your-development-app-name.git (push) 

Custom Options

Customize the case used;

grunt.initConfig({
  options: {
    changeCase: 'constantCase'
  },
  target1: {
    name: 'production',
    url: 'your-production-app-name'
  },
  target2: {
    name: 'development',
    url: 'your-development-app-name'
  }
});

Running grunt herokuBranch:target1 and grunt herokuBranch:target2 will produce the following results for git remote -v:

PRODUCTION https://git.heroku.com:your-production-app-name.git (fetch) 
PRODUCTION https://git.heroku.com:your-production-app-name.git (push) 
DEVELOPMENT https://git.heroku.com:your-development-app-name.git (fetch) 
DEVELOPMENT https://git.heroku.com:your-development-app-name.git (push) 

Contributing

JSHint and JSBeautifier steps should pass.

Release History

0.2.2

Stable version with test coverage and docs.