{ "name": "grunt-exec", "description": "Grunt task for executing shell commands.", "version": "0.4.5", "homepage": "https://github.com/jharding/grunt-exec", "author": { "name": "Jake Harding", "email": "jacob.s.harding@gmail.com" }, "repository": { "type": "git", "url": "git://github.com/jharding/grunt-exec.git" }, "bugs": { "url": "https://github.com/jharding/grunt-exec/issues" }, "licenses": [ { "type": "MIT", "url": "https://github.com/jharding/grunt-exec/blob/master/LICENSE-MIT" } ], "main": "Gruntfile.js", "engines": { "node": ">=0.8.0" }, "scripts": { "test": "/usr/bin/env node test/test.js" }, "peerDependencies": { "grunt": "~0.4" }, "devDependencies": { "grunt": "~0.4", "grunt-contrib-jshint": "~0.1" }, "keywords": [ "grunt", "gruntplugin", "shell" ], "readme": "[![build status](https://secure.travis-ci.org/jharding/grunt-exec.png?branch=master)](http://travis-ci.org/jharding/grunt-exec)\ngrunt-exec\n==========\n\nGrunt plugin for executing shell commands.\n\nInstallation\n------------\n\nInstall grunt-exec using npm:\n\n```\n$ npm install grunt-exec\n```\n\nThen add this line to your project's *Gruntfile.js*:\n\n```javascript\ngrunt.loadNpmTasks('grunt-exec');\n```\n\nUsage\n-----\n\nThis plugin is a [multi task][types_of_tasks], meaning that grunt will \nautomatically iterate over all exec targets if a target is not specified.\n\nIf the exit code generated by the specified shell command is greater than 0, \ngrunt-exec will assume an error has occurred and will abort grunt immediately.\n\n[types_of_tasks]: http://gruntjs.com/configuring-tasks#task-configuration-and-targets\n\n### Properties\n\n* __command__ (alias: __cmd__): The shell command to be executed. Must be a \n string or a function that returns a string.\n* __stdout__: If `true`, stdout will be printed. Defaults to `true`.\n* __stderr__: If `true`, stderr will be printed. Defaults to `true`.\n* __cwd__: Current working directory of the shell command. Defaults to the \n directory containing your Gruntfile.\n* __exitCode__ (alias: __exitCodes__): The expected exit code(s), task will \n fail if the actual exit code doesn't match. Defaults to `0`. Can be an array \n for multiple allowed exit codes.\n* __callback__: The callback function passed `child_process.exec`. Defaults to \n a noop.\n\nIf the configuration is instead a simple `string`, it will be\ninterpreted as a full command itself:\n\n```javascript\nexec: {\n echo_something: 'echo \"This is something\"'\n}\n```\n\n### Command Functions\n\nIf you plan on doing advanced stuff with grunt-exec, you'll most likely be using \nfunctions for the `command` property of your exec targets. This section details \na couple of helpful tips about command functions that could help make your life \neasier.\n\n#### Passing arguments from the command line\n\nCommand functions can be called with arbitrary arguments. Let's say we have the \nfollowing exec target that echoes a formatted name:\n\n```javascript\nexec: {\n echo_name: {\n cmd: function(firstName, lastName) {\n var formattedName = [\n lastName.toUpperCase(),\n firstName.toUpperCase()\n ].join(', ');\n\n return 'echo ' + formattedName;\n }\n }\n}\n```\n\nIn order to get `SIMPSON, HOMER` echoed, you'd run \n`grunt exec:echo_name:homer:simpson` from the command line.\n\n### Accessing `grunt` object\n\nAll command functions are called in the context of the `grunt` object that they \nare being ran with. This means you can access the `grunt` object through `this`.\n\n### Example\n\nThe following examples are available in grunt-exec's Gruntfile.\n\n```javascript\ngrunt.initConfig({\n exec: {\n remove_logs: {\n command: 'rm -f *.log',\n stdout: false,\n stderr: false\n },\n list_files: {\n cmd: 'ls -l **'\n },\n list_all_files: 'ls -la',\n echo_grunt_version: {\n cmd: function() { return 'echo ' + this.version; }\n },\n echo_name: {\n cmd: function(firstName, lastName) {\n var formattedName = [\n lastName.toUpperCase(),\n firstName.toUpperCase()\n ].join(', ');\n\n return 'echo ' + formattedName;\n }\n }\n }\n});\n```\n\nTesting\n-------\n\n```\n$ cd grunt-exec\n$ npm test\n```\n\nIssues\n------\n\nFound a bug? Create an issue on GitHub.\n\nhttps://github.com/jharding/grunt-exec/issues\n\nVersioning\n----------\n\nFor transparency and insight into the release cycle, releases will be numbered \nwith the follow format:\n\n`..`\n\nAnd constructed with the following guidelines:\n\n* Breaking backwards compatibility bumps the major\n* New additions without breaking backwards compatibility bumps the minor\n* Bug fixes and misc changes bump the patch\n\nFor more information on semantic versioning, please visit http://semver.org/.\n\nLicense\n-------\n\nCopyright (c) 2012 [Jake Harding](http://thejakeharding.com) \nLicensed under the MIT License.\n", "readmeFilename": "README.md", "_id": "grunt-exec@0.4.5", "dist": { "shasum": "2848b5f9ed0a096b459a637aad35cc89098b7958" }, "_from": "grunt-exec@0.4.5", "_resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.5.tgz" }