node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

grunt-upcoming

grunt-upcoming

Write upcoming release info to a JSON file

Version Coverage Status Downloads Version License

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-upcoming --save-dev

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

grunt.loadNpmTasks('grunt-upcoming');

The "upcoming" task

Overview

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

upcoming: {
  default: {
    files: [
      { src: 'package.json', dest: [ 'version%s-info.json','product%s-info.json' ] }
    ]
  },
  patch: {
    files: [ 
      { src: 'package.json', dest: ['patch-info.json'] }
    ]
  }
},

Configuration Options

default.files

Run the following from the command line:

$ grunt upcoming

For the example above, that command will generate two files:

  • version-info.json
  • product-info.json

The contents will simply be:

{
    "name":"(package-name)",
    "version":"(version)"
}

The package-name and version will be what is currently in package.json (the src in the default config).

For example:

{
    "name":"grunt-upcoming",
    "version":"0.1.0"
}

Now run this:

$ grunt upcoming:major

That will generate:

  • version-major-info.json
  • product-major-info.json

Because there was no config defined for major, the default was run by applying the major release argument. The files listed in the default section contain '%s'. That was replaced in the filename with '-major'.

The output will look something like this:

{
    "name":"(package-name)",
    "version":"(version)",
    "upcoming": {
        "release":"major",
        "version":"(next-major-version)"
    }
}

For example:

{
    "name":"grunt-upcoming",
    "version":"0.1.0",
    "upcoming": {
        "release":"major",
        "version":"1.0.0"
    }
}

(release).files

Valid releases are: major, minor, patch, premajor, preminor, prepatch, or prerelease.

If no section is defined in the config for a release, the default will be used. To define a section for a release, create one named after the release (patch, minor, major, etc.).

The example contains a configuration for patch.

    upcoming: {
      default: { ... },
      patch: {
        files: [ 
          { src: 'package.json', dest: ['patch-info.json'] }
        ]
      }
    },

Run this at the command line:

$ grunt upcoming:patch

This will result in the patch-info.json file being created.


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.


Version History

Version 0.2.2

  • updated documentation

Version 0.2.1

  • updated documentation for new config

Version 0.2.0

  • implemented version 0.2.0 which requires a more standard configuration
  • maintained backward compatibility and tests cases for deprecated version

Version 0.1.9

  • refactored test cases

Version 0.1.8

  • removed result file from repo

Version 0.1.7

  • added local install of mocha, needed by travis-ci

Version 0.1.6

  • added test cases
  • added test coverage
  • added integration with travis-ci and codecov.io

Version 0.1.5

  • fixed repo url in package.json

Version 0.1.4

  • updated description

Version 0.1.3

  • cleaned up test folder

Version 0.1.2

  • added badges to readme
  • added .travis.yml
  • renamed license file
  • fixed license listing in package.json

Version 0.1.1

  • if no config info will echo warning to console

Version 0.1.0

  • initial release