grunt-release-hg-bower
v1.3.2
Published
This plugin automates the release process for mercurial projects that are being packaged using bower.
Downloads
3
Readme
grunt-release-hg-bower
This plugin automates the release process for mercurial projects that are being packaged using bower.
Getting Started
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-release-hg-bower --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-release-hg-bower');
The "get_bower_version" task
This task retrieves the current version number of the project as calculated by the commit messages with the version
keyword. Can optionally supply a changeset identifier to find an old version or a branch version.
grunt get_bower_version --changeset=tip
The "get_hg_version_log" task
This task retrieves the Hg log of the project with calculated versions appended to the output. can also take a changeset argument.
grunt get_hg_version_log --changeset=mybranch
The "which_version" task
This task takes a semver string as the command line argument, and returns any matching mercurial commits.
grunt which_version:1.1.3
The "bower_release" task
Overview
In your project's Gruntfile, add a section named bower_release
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
bower_release: {
options: {
githubEndpoint: "https://github.com/<your_github_account_name>/<your_release_repo_name>.git"
},
your_target_here: {
files: [
//your specific files to be released here (supports globs)...
{
src:[
'**/*.js',
'README.md'
]
},
//you can also pass an object with a cwd property if you want to strip out folders from a path
{
src:['**/*.js', 'themes/default/templates/templatecache.js'] || "src/**/*.js",
cwd:'dist'
}
]
}
},
});
Options
options.githubEndpoint
Type: String
the github endpoint for your bower package.
options.stagingDirectoryName
Type: String
Default value: '__bowerGruntStaging'
the folder name where the plugin will clone the release github endpoint and copy your files before releasing them
options.pushToHg
Type: boolean
Default value: false
setting this to true will push the commit it makes into the local repo if it finds bower dependency changes and a release with the same version as the current changeset. ommitting this option will default to false
options.buildIgnoreFilename
Type: String
Default value: '.buildIgnore'
the plugin will create a file using the supplied name with build information when it finds an existing release and bower dependency changes.
options.buildCommands
Type: Array
of object
Default value: []
the commands you would like the plugin to run as part of your build process. these are executed in order, after the plugin checks for existing releases and dependency changes, but before releasing the package to the specified git endpoint.
a sample of the object parameters is shown in the default options example below. the command can be a string or object with the parameters shown for default and windows platforms. args
can be a string of options separated by spaces, or an array with a string for each command line option.
releaseVersion
you can also supply a semver string on the command line as shown below. the plugin will check for an existing release before doing anything. This allow you to jump to any specified version.
grunt bower_release --releaseVersion=1.1.3
Usage Examples
Default Options
Here are the default options (except for build commands which shows a couple of example command objects).
grunt.initConfig({
bower_release: {
options: {
githubEndpoint: "https://github.com/<your_github_account_name>/<your_release_repo_name>.git",
stagingDirectoryName: "__bowerGruntStaging",
ticketSystem: undefined,
pushToHg: false, //this pushes the buildIgnoreFile to Hg if the build was triggered by an upstream project
buildIgnoreFilename:".buildIgnore",
buildCommands:[
{
command:
{
default:'npm',
win32:'npm.cmd'
},
args: 'update',
workingdir:"./"
},
{
command:'hg',
args: ['log','-l 2'],
workingdir:"./"
}
]
},
your_target_here: {
src: [
//your specific files to be released here...
]
}
},
});
Fogbugz Integration
In this example, we are turning on the fogbugz integration. If you then specify case(s) in your commit message the bower release will contain links to those cases in its commit message. Here is the format used to match cases in the commit message '/case[s]?.{1}\s*(?:\W*([0-9]+))*/ig'
grunt.initConfig({
bower_release: {
options: {
githubEndpoint: "https://github.com/<your_github_account_name>/<your_release_repo_name>.git",
ticketSystem: 'fogbugz'
},
your_target_here: {
src: [
//your specific files to be released here...
]
}
},
});
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
Release History
####Version 1.2.0 added existing release checking and build commands for better CI system support. If the CI system triggers a build from an upstream project, the plugin will check for bower dependency updates and push a commit to Hg to keep Hg and Git versions in sync. It also updates the bower.json and package.json version strings, and writes the installed bower package versions into the bower.json file.
####Version 1.0.0 initial release supports releasing Hg repos to bower using the version information from the commit message. It also supports fogbugz case linking if specified in the commit message.