Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

The grunt source has moved to @gruntjs!

Please update your remotes and links to the new location: https://github.com/gruntjs/grunt
  • Loading branch information...
commit c5a59e9f575b7d89c916074090c1d3234097f843 1 parent d179f8b
Ben Alman authored
Showing with 1,241 additions and 23,337 deletions.
  1. +10 −2 .gitignore
  2. +10 −4 AUTHORS
  3. +7 −54 Gruntfile.js
  4. +7 −19 LICENSE-MIT
  5. +7 −74 README.md
  6. +7 −20 bin/grunt
  7. +7 −150 dev/init.exp
  8. +10 −1 docs/README.md
  9. +7 −379 docs/api.md
  10. +7 −112 docs/api_config.md
  11. +7 −51 docs/api_event.md
  12. +7 −32 docs/api_fail.md
  13. +7 −314 docs/api_file.md
  14. +7 −164 docs/api_log.md
  15. +7 −345 docs/api_task.md
  16. +7 −86 docs/api_template.md
  17. +7 −159 docs/api_util.md
  18. +8 −3 docs/api_utils.md
  19. +7 −48 docs/contributing.md
  20. +7 −10 docs/example_gruntfiles.md
  21. +7 −14 docs/exit_codes.md
  22. +7 −109 docs/faq.md
  23. +7 −132 docs/getting_started.md
  24. +7 −47 docs/plugins.md
  25. +7 −156 docs/task_concat.md
  26. +7 −161 docs/task_init.md
  27. +7 −235 docs/task_lint.md
  28. +7 −161 docs/task_min.md
  29. +7 −133 docs/task_qunit.md
  30. +7 −72 docs/task_server.md
  31. +7 −61 docs/task_test.md
  32. +7 −87 docs/task_watch.md
  33. +7 −31 docs/toc.md
  34. +8 −13 docs/todo.md
  35. +7 −249 docs/types_of_tasks.md
  36. +7 −154 lib/grunt.js
  37. +7 −123 lib/grunt/cli.js
  38. +7 −25 lib/grunt/completion.js
  39. +7 −109 lib/grunt/config.js
  40. +7 −13 lib/grunt/event.js
  41. +7 −85 lib/grunt/fail.js
  42. +7 −427 lib/grunt/file.js
  43. +7 −74 lib/grunt/help.js
  44. +7 −299 lib/grunt/log.js
  45. +7 −39 lib/grunt/option.js
  46. +7 −498 lib/grunt/task.js
  47. +7 −96 lib/grunt/template.js
  48. +7 −159 lib/grunt/util.js
  49. +7 −23 lib/util/exit.js
  50. +7 −29 lib/util/findup.js
  51. +7 −60 lib/util/namespace.js
  52. +7 −315 lib/util/task.js
  53. +7 −73 misc/completion/bash
  54. +10 −73 package.json
  55. +7 −64 tasks/concat.js
  56. +7 −463 tasks/init.js
  57. +7 −55 tasks/init/commonjs.js
  58. +10 −4 tasks/init/commonjs/rename.json
  59. +10 −1 tasks/init/commonjs/root/.gitignore
  60. +10 −15 tasks/init/commonjs/root/.jshintrc
  61. +7 −70 tasks/init/commonjs/root/Gruntfile.js
  62. +7 −54 tasks/init/commonjs/root/README.md
  63. +10 −13 tasks/init/commonjs/root/lib/.jshintrc
  64. +7 −14 tasks/init/commonjs/root/lib/name.js
  65. +7 −33 tasks/init/commonjs/root/test/name_test.js
  66. +7 −79 tasks/init/gruntfile.js
  67. +7 −84 tasks/init/gruntfile/root/Gruntfile.js
  68. +7 −65 tasks/init/gruntplugin.js
  69. +10 −4 tasks/init/gruntplugin/rename.json
  70. +10 −1 tasks/init/gruntplugin/root/.gitignore
  71. +7 −79 tasks/init/gruntplugin/root/Gruntfile.js
  72. +7 −89 tasks/init/gruntplugin/root/README.md
  73. +7 −48 tasks/init/gruntplugin/root/tasks/name.js
  74. +10 −1 tasks/init/gruntplugin/root/test/expected/custom_options
  75. +10 −1 tasks/init/gruntplugin/root/test/expected/default_options
  76. +10 −1 tasks/init/gruntplugin/root/test/fixtures/123
  77. +10 −1 tasks/init/gruntplugin/root/test/fixtures/testing
  78. +7 −45 tasks/init/gruntplugin/root/test/name_test.js
  79. +7 −80 tasks/init/jquery.js
  80. +10 −5 tasks/init/jquery/rename.json
  81. +10 −1 tasks/init/jquery/root/.gitignore
  82. +10 −15 tasks/init/jquery/root/.jshintrc
  83. +7 −73 tasks/init/jquery/root/Gruntfile.js
  84. +7 −61 tasks/init/jquery/root/README.md
  85. +10 −12 tasks/init/jquery/root/libs/jquery-loader.js
  86. +7 −9,401 tasks/init/jquery/root/libs/jquery/jquery.js
  87. +7 −229 tasks/init/jquery/root/libs/qunit/qunit.css
  88. +7 −1,656 tasks/init/jquery/root/libs/qunit/qunit.js
  89. +10 −15 tasks/init/jquery/root/src/.jshintrc
  90. +7 −35 tasks/init/jquery/root/src/name.js
  91. +10 −32 tasks/init/jquery/root/test/.jshintrc
  92. +10 −31 tasks/init/jquery/root/test/name.html
  93. +7 −57 tasks/init/jquery/root/test/name_test.js
  94. +7 −199 tasks/init/licenses/LICENSE-Apache-2.0
  95. +7 −275 tasks/init/licenses/LICENSE-GPL-2.0
  96. +7 −19 tasks/init/licenses/LICENSE-MIT
  97. +10 −1 tasks/init/misc/placeholder
  98. +7 −56 tasks/init/node.js
  99. +10 −4 tasks/init/node/rename.json
  100. +10 −1 tasks/init/node/root/.gitignore
  101. +10 −15 tasks/init/node/root/.jshintrc
  102. +7 −40 tasks/init/node/root/Gruntfile.js
  103. +7 −24 tasks/init/node/root/README.md
  104. +8 −11 tasks/init/node/root/lib/name.js
  105. +7 −33 tasks/init/node/root/test/name_test.js
  106. +7 −54 tasks/jshint.js
  107. +7 −32 tasks/lib/comment.js
  108. +7 −44 tasks/lib/git.js
  109. +7 −110 tasks/lib/jshint.js
  110. +7 −160 tasks/lib/phantomjs.js
  111. +7 −128 tasks/lib/phantomjs/bootstrap.js
  112. +7 −154 tasks/lib/prompt.js
  113. +7 −62 tasks/lib/uglify.js
  114. +7 −159 tasks/nodeunit.js
  115. +7 −186 tasks/qunit.js
  116. +10 −1 tasks/qunit/phantomjs.json
  117. +7 −55 tasks/qunit/qunit-phantomjs-bridge.js
  118. +7 −62 tasks/server.js
  119. +7 −52 tasks/uglify.js
  120. +7 −168 tasks/watch.js
  121. +10 −1 test/fixtures/BOM.txt
  122. +10 −1 test/fixtures/a.js
  123. +10 −1 test/fixtures/b.js
  124. +7 −8 test/fixtures/banner.js
  125. +7 −4 test/fixtures/banner2.js
  126. +7 −7 test/fixtures/banner3.js
  127. +10 −0 test/fixtures/expand/README.md
  128. +10 −0 test/fixtures/expand/css/baz.css
  129. +10 −0 test/fixtures/expand/css/qux.css
  130. +10 −0 test/fixtures/expand/deep/deep.txt
  131. +10 −0 test/fixtures/expand/deep/deeper/deeper.txt
  132. +10 −0 test/fixtures/expand/deep/deeper/deepest/deepest.txt
  133. +10 −0 test/fixtures/expand/js/bar.js
  134. +10 −0 test/fixtures/expand/js/foo.js
  135. +10 −4 test/fixtures/iso-8859-1.json
  136. +10 −1 test/fixtures/iso-8859-1.txt
  137. +10 −4 test/fixtures/iso-8859-1.yaml
  138. BIN  test/fixtures/lint.txt
  139. +10 −1 test/fixtures/no_BOM.txt
  140. BIN  test/fixtures/octocat.png
  141. +7 −6 test/fixtures/spawn.js
  142. +10 −1 test/fixtures/template.txt
  143. +10 −4 test/fixtures/test.json
  144. +10 −4 test/fixtures/utf8.json
  145. +10 −1 test/fixtures/utf8.txt
  146. +10 −4 test/fixtures/utf8.yaml
  147. +7 −96 test/grunt/config_test.js
  148. +8 −16 test/grunt/event_test.js
  149. +7 −626 test/grunt/file_test.js
  150. +7 −123 test/grunt/log_test.js
  151. +7 −84 test/grunt/task_test.js
  152. +7 −58 test/grunt/template_test.js
  153. +7 −182 test/grunt/util_test.js
  154. +7 −25 test/tasks/lib/comment_test.js
  155. +7 −44 test/tasks/lib/git_test.js
  156. +7 −19 test/tasks/lib/jshint_test.js
  157. +7 −31 test/tasks/lib/uglify_test.js
  158. +7 −48 test/util/namespace_test.js
  159. +7 −479 test/util/task_test.js
12 .gitignore
View
@@ -1,2 +1,10 @@
-/node_modules/
-/foo/
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
+
+The grunt source has moved!
+
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
+
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/.gitignore
14 AUTHORS
View
@@ -1,4 +1,10 @@
-"Cowboy" Ben Alman (http://benalman.com/)
-Kyle Robinson Young (http://dontkry.com/)
-Tyler Kellen (http://goingslowly.com)
-Sindre Sorhus (http://sindresorhus.com)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
+
+The grunt source has moved!
+
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
+
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/AUTHORS
61 Gruntfile.js
View
@@ -1,57 +1,10 @@
-/*
- * grunt
- * http://gruntjs.com/
- *
- * Copyright (c) 2012 "Cowboy" Ben Alman
- * Licensed under the MIT license.
- * http://benalman.com/about/license/
- */
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-'use strict';
+The grunt source has moved!
-module.exports = function(grunt) {
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
- // Project configuration.
- grunt.initConfig({
- nodeunit: {
- all: ['test/{grunt,tasks,util}/**/*.js']
- },
- jshint: {
- all: [
- 'Gruntfile.js',
- 'lib/**/*.js',
- 'tasks/*.js',
- 'tasks/*/*.js',
- 'tasks/lib/**/*.js',
- '<%= nodeunit.all %>'
- ],
- options: {
- curly: true,
- eqeqeq: true,
- immed: true,
- latedef: true,
- newcap: true,
- noarg: true,
- sub: true,
- undef: true,
- unused: true,
- boss: true,
- eqnull: true,
- node: true,
- es5: true
- }
- },
- watch: {
- scripts: {
- files: ['<%= jshint.all %>'],
- tasks: ['jshint', 'nodeunit']
- }
- }
- });
-
- // Default task.
- grunt.registerTask('default', ['jshint', 'nodeunit']);
-
- // Unregister unused tasks.
- grunt.unregisterTasks('concat', 'uglify', 'init', 'server', 'qunit');
-};
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/Gruntfile.js
26 LICENSE-MIT
View
@@ -1,22 +1,10 @@
-Copyright (c) 2012 "Cowboy" Ben Alman
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
+The grunt source has moved!
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/LICENSE-MIT
81 README.md
View
@@ -1,77 +1,10 @@
-# grunt
-Grunt is a task-based command line build tool for JavaScript projects.
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-_Grunt is currently in beta. While I'm already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and [make suggestions][issues] or [report bugs][issues]!_
+The grunt source has moved!
-## Getting started
-Be sure to read the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project. In addition, check out the [example Gruntfiles](/cowboy/grunt/blob/master/docs/example_gruntfiles.md) which highlight a number of fairly common configurations.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-## Built-in tasks
-As of now, grunt has the following predefined tasks that you can use in your project:
-
-* [concat](/cowboy/grunt/blob/master/docs/task_concat.md) - Concatenate files.
-* [init](/cowboy/grunt/blob/master/docs/task_init.md) - Generate project scaffolding from a predefined template.
-* [lint](/cowboy/grunt/blob/master/docs/task_lint.md) - Validate files with [JSHint][jshint].
-* [min](/cowboy/grunt/blob/master/docs/task_min.md) - Minify files with [UglifyJS][uglify].
-* [qunit](/cowboy/grunt/blob/master/docs/task_qunit.md) - Run [QUnit][qunit] unit tests in a headless [PhantomJS][phantom] instance.
-* [server](/cowboy/grunt/blob/master/docs/task_server.md) - Start a static web server.
-* [test](/cowboy/grunt/blob/master/docs/task_test.md) - Run unit tests with [nodeunit][nodeunit].
-* [watch](/cowboy/grunt/blob/master/docs/task_watch.md) - Run predefined tasks whenever watched files change.
-
-_(More documentation forthcoming)_
-
-## Custom tasks
-In addition to the built-in tasks, you can create your own tasks. Don't like a built-in task's default behavior? Override it. Check out the [grunt API documentation](/cowboy/grunt/blob/master/docs/api.md) and the [built-in tasks source](/cowboy/grunt/blob/master/tasks) for everything you need to know about creating custom tasks.
-
-## Documentation
-Take a look at the [documentation table of contents][docs] for all the things.
-
-## Why does grunt exist?
-Doing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that's maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.
-
-Being primarily a JavaScript developer, I decided to use [Node.js][node] and [npm][npm] because the dependencies I most care about ([JSHint][jshint] and [UglifyJS][uglify]) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.
-
-## Installing grunt
-
-Grunt is available as an [npm][npm] module. If you install grunt globally via `npm install -g grunt`, it will be available for use in all of your projects. Once grunt has been installed, you can type `grunt --help` at the command line for more information. And if you want to see grunt "grunt" itself, cd into grunt's directory and type `grunt`
-
-_Note: in Windows, you may need to run grunt as `grunt.cmd`. See the [FAQ](/cowboy/grunt/blob/master/docs/faq.md) for more Windows-specific information._
-
-For projects already using grunt, you're done. Otherwise, if you're adding grunt to an existing project or starting from scratch, check out the [getting started guide](/cowboy/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project.
-
-## Release History
-_(Until v1.0.0, this will only be updated when major or breaking changes are made)_
-
-* 2012/06/25 - v0.3.10 - Updating a few dependencies to work with node 0.8.x (0.6.x should still work).
-* 2012/04/18 - v0.3.9 - The min task (via the uglify helper) now appends a semicolon to the end of the generated source.
-* 2012/04/06 - v0.3.8 - Init template tweaks. Anchor links added to docs, along with grunt-internal docs task to generate them. The watch task now supports multiple targets with separate wildcards and tasks. Locally-installed grunt will override global grunt even when run from global "grunt" script.
-* 2012/04/01 - v0.3.7 - Tweaked the behavior of the init template `exports.warnOn` property and added more init template documentation. Fixed duplicate PhantomJS debug output in qunit task. Added useful nodeunit and qunit comments into init template generated test .js files.
-* 2012/03/28 - v0.3.6 - Fixed a `--help` screen issue, a few grunt plugin related issues, and attempted to improve the overall grunt plugin docs and API.
-* 2012/03/27 - v0.3.5 - Fixed a handful of weird Windows issues. Changed default m/d/yyyy dates to yyyy-mm-dd ISO 8601. Fixed some init task bugs, docs errata, and added a lot more content to the init task docs.
-* 2012/03/26 - v0.3.3 - Added a "gruntfile" init template. Create a basic Gruntfile in seconds with `grunt init:gruntfile`. A few other minor fixes.
-* 2012/03/25 - v0.3.2 - Init tasks can now specify a file matching wildcard for the initial "files exist" warning. The jQuery init template now has jQuery 1.7.2. Fixed a bug in the `task.expand*` methods.
-* 2012/03/25 - v0.3.1 - Added a few methods. Substantially reworked the init task and templates.
-* 2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.
-* 2012/02/03 - v0.2.14 - Added a server task (which starts a static webserver for your tasks). The qunit task now uses PhantomJS instead of Zombie.js (4768 of 4971 jQuery unit test pass, neat), and supports both file wildcards as well as http:// or https:// urls. (static webserver, anyone?). Grunt should no longer "hang" when done.
-* 2012/01/29 - v0.2.5 - Added a "qunit" task as well as an init "jquery" template (as of now, there are also "node" and "commonjs" init templates).
-* 2012/01/22 - v0.2.1 - Removed handlebars, templates are universally handled by underscore now. Changed init task template tags from <% %> to {% %}. Banners beginning with /*! will no longer be stripped.
-* 2012/01/22 - v0.2.0 - Added "init" task with a sample template, reworked a lot of code. Hopefully it's backwards-compatible.
-* 2012/01/11 - v0.1.0 - Initial release.
-
-## License
-Copyright (c) 2012 "Cowboy" Ben Alman
-Licensed under the MIT license.
-<http://benalman.com/about/license/>
-
-
-[docs]: /cowboy/grunt/blob/master/docs/toc.md
-[docs-init]: /cowboy/grunt/blob/master/docs/task_init.md
-[issues]: /cowboy/grunt/issues
-
-[node]: http://nodejs.org/
-[npm]: http://npmjs.org/
-[jshint]: http://www.jshint.com/
-[uglify]: https://github.com/mishoo/UglifyJS/
-[nodeunit]: https://github.com/caolan/nodeunit
-[qunit]: http://docs.jquery.com/QUnit
-[phantom]: http://www.phantomjs.org/
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/README.md
27 bin/grunt
View
@@ -1,23 +1,10 @@
-#!/usr/bin/env node
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-// Nodejs libs.
-var fs = require('fs');
-var path = require('path');
-// In Nodejs 0.8.0, existsSync moved from path -> fs.
-var existsSync = fs.existsSync || path.existsSync;
+The grunt source has moved!
-// Badass internal grunt lib.
-var findup = require('../lib/util/findup');
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-// Search for Gruntfile.
-var gruntfile = findup(process.cwd(), '{G,g}runtfile.{js,coffee}');
-// Gruntfile not found, look for pre-0.4.0 grunt.js file. TODO: remove, someday.
-if (!gruntfile) { gruntfile = findup(process.cwd(), 'grunt.js'); }
-
-// Where might a locally-installed grunt live?
-var dir = path.resolve(gruntfile, '../node_modules/grunt');
-// If grunt is installed locally, use it. Otherwise use this grunt.
-if (!existsSync(dir)) { dir = '../lib/grunt'; }
-
-// Run grunt.
-require(dir).cli();
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/bin/grunt
157 dev/init.exp
View
@@ -1,153 +1,10 @@
-#!/usr/bin/expect -f
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# OMG THIS WAS A PAIN TO CREATE
+The grunt source has moved!
-if {$argc == 0} {
- # No template specified, iterate over all templates.
- set templates [list jquery commonjs node gruntplugin gruntfile]
-} else {
- # One or more templates were specified, iterate over those.
- set templates [lrange $argv 0 end]
-}
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-foreach template $templates {
-
-set project "grunt-$template-example"
-
-# Disable git pushing when debugging.
-set gitpush 1
-
-# Grunt version
-set version [exec grunt --version]
-
-# Stop any already-running logging.
-log_file
-
-# Start logging fresh, saving output for later use.
-log_file -noappend /tmp/grunt-expect-out
-
-# Spawn bash without all my crazy dotfiles stuff.
-set timeout -1
-spawn bash --noprofile --norc
-match_max 100000
-
-# Make the prompt look nice.
-expect "$ "
-send "PS1='\n$ '\r"
-expect "\r"
-
-# Cleanup any existing session.
-expect "$ "
-send "cd /tmp\r"
-expect "$ "
-send "rm -rf /tmp/$project\r"
-
-# Session logging starts here.
-expect "$ "
-send "mkdir $project && cd $project\r"
-
-# Initialize the current directory.
-expect "$ "
-send "git init\r"
-expect "$ "
-send "git remote add origin git@github.com:cowboy/$project.git\r"
-
-# Note that the "--no-color" will be stripped out later.
-expect "$ "
-send "grunt init:$template --no-color\r"
-
-# Don't start answering prompts until this line is encountered.
-expect "Please answer the following:"
-
-# Loop over all prompts.
-expect {
- "Do you need to make any changes to the above before continuing? (y/N)" {send "\r"}
- "Project name (jquery.grunt-jquery-example)" {send "jquery.grunt-example\r"; exp_continue}
- "Project title (jQuery Grunt Example)" {send "Grunt jQuery Example Plugin\r"; exp_continue}
- "Description" {send "This is example output generated by the \"grunt init:$template\" task."; exp_continue}
- ") " {send "\r"; exp_continue}
-}
-
-# Pre-grunt file structure.
-expect "$ "
-send "tree\r"
-
-# Let grunt grunt the newly-created file structure.
-expect "$ "
-send "grunt --no-color\r"
-
-# Post-grunt file structure. Any built files should appear here.
-expect "$ "
-send "tree\r"
-
-# Commit everything.
-expect "$ "
-send "git add .\r"
-expect "$ "
-send "git commit -m 'Committing example \"grunt init:$template\" task output.'\r"
-
-# Session logging stops here.
-expect "$ "
-send "# EOF\n"
-
-# Add meta-content to the README.
-expect "$ "
-send "echo -e '# Grunt \"init:$template\" example
-
-This is example output generated by the \"grunt init:$template\" task.
-
-_Note: this repository was generated dynamically using $version. Instead of
-reporting issues here, please report any issues with this repository as
-\[grunt issues\]\[issues\]. Instead of watching or forking this repository,
-watch \[grunt\]\[grunt\] and use the grunt \[init task\]\[init\]._
-
-## Project Creation Transcript
-The following is a transcript of the session in which this project and
-repository were created. This is not actually a part of the \[grunt\]\[grunt\]
-\"init:$template\" template, this session transcript was added afterwards. The
-text after the `$` are the commands that were executed, and everything else is
-program output. If you want to see the repository exactly as it was created by
-grunt, view \[the previous commit\]\[prev\].' > README.md\r"
-expect "$ "
-send "echo -e '
-Want to learn more? Check \[grunt\]\[grunt\] out.
-
-\[grunt\]: http://gruntjs.com/
-\[issues\]: https://github.com/cowboy/grunt/issues
-\[init\]: https://github.com/cowboy/grunt/blob/master/docs/task_init.md
-\[expect\]: https://github.com/cowboy/grunt/blob/master/dev/init.exp
-\[prev\]: https://github.com/cowboy/$project/tree/HEAD~1
-
-Note that this entire build process is automated by a rather complex \[expect
-script\]\[expect\], which is used to automate grunt in order to facilitate the
-creation of this and other \[init task\]\[init\] example repositories.
-
-```' >> README.md\r"
-expect "$ "
-# Strip out everything before the "mkdir" and after the "EOF". Also remove any "--no-color" bits.
-send "cat /tmp/grunt-expect-out | perl -ne's/ --no-color//;if(/^\\\$ mkdir/){\$x=1}elsif(/^\\\$ # EOF/){\$x=0}\$x&&print\$_' >> README.md\r"
-expect "$ "
-send "echo -e '```
-
-## License
-Copyright (c) 2012 \"Cowboy\" Ben Alman
-Licensed under the MIT license.' >> README.md\r"
-
-# Commit again.
-expect "$ "
-send "git add .\r"
-expect "$ "
-send "git commit -m 'Adding project creation transcript.'\r"
-
-# Push to GitHub.
-if {$gitpush} {
- expect "$ "
- send "git push -uf origin master\r"
-}
-
-expect "$ "
-send "exit\r"
-
-expect eof
-
-}
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/dev/init.exp
11 docs/README.md
View
@@ -1 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](/cowboy/grunt/blob/master/docs/toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
+
+The grunt source has moved!
+
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
+
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/README.md
386 docs/api.md
View
@@ -1,382 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# The grunt API
+The grunt source has moved!
-Grunt exposes all of its methods and properties on the `grunt` object that gets passed into the `module.exports` function exported in your [Gruntfile](getting_started.md) or in your [tasks file](types_of_tasks.md).
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-For example, your project's [Gruntfile](getting_started.md) might look like this:
-
-```javascript
-module.exports = function(grunt) {
-
- // Project configuration.
- grunt.initConfig({
- lint: {
- all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js']
- },
- jshint: {
- options: {
- browser: true
- }
- }
- });
-
- // Load tasks from "grunt-sample" grunt plugin installed via Npm.
- grunt.loadNpmTasks('grunt-sample');
-
- // Default task.
- grunt.registerTask('default', ['lint', 'sample']);
-
-};
-```
-
-And if you're creating a [grunt plugin](plugins.md) or just organizing tasks into a folder, a [custom tasks file](types_of_tasks.md) might look like this:
-
-```javascript
-module.exports = function(grunt) {
-
- // Create a new task.
- grunt.registerTask('awesome', 'Print out some awesome stuff.', function() {
- grunt.log.write('The ' + this.name + ' task is awesome...').ok();
- });
-
-};
-```
-
-But these are just examples. For more information, read on.
-
-## A Very Important Note
-Your Gruntfile or tasks file **must** contain this code, once and **only** once. If it doesn't, things won't work. For the sake of brevity, this "wrapper" code has been omitted from all future examples on this page, but it needs to be there. Like in the previous examples.
-
-```javascript
-module.exports = function(grunt) {
- // Your grunt code goes in here.
-};
-```
-
-## Libraries
-
-* [grunt.event](api_event.md) - Event emitting via the [EventEmitter2](https://github.com/hij1nx/EventEmitter2) library.
-* [grunt.util](api_util.md) - Miscellaneous utilities, including Lo-Dash, Async and Hooker.
-* [grunt.template](api_template.md) - Lo-Dash template processing and other template-related methods.
-* [grunt.task](api_task.md) - Register, run and load external tasks.
-* [grunt.file](api_file.md) - Wildcard expansion, file reading, writing, directory traversing.
-* [grunt.config](api_config.md) - Access project-specific configuration data defined in the [Gruntfile](getting_started.md).
-* [grunt.log](api_log.md), [grunt.verbose](api_log.md) - Output messages to the console.
-* [grunt.fail](api_fail.md) - For when something goes horribly wrong.
-
-## Config
-_Note that the method listed below is also available on the [grunt.config](api_config.md) object in addition to the `grunt` object._
-
-
-### grunt.initConfig
-Initialize a configuration object for the current project. The specified `configObject` is used by tasks and can be accessed using the [grunt.config](api_config.md) method. Nearly every project's [Gruntfile](getting_started.md) will call this method.
-
-Note that any specified `<% %>` [template strings](api_template.md) will only be processed when config data is retrieved via a [grunt.config](api_config.md) method.
-
-```javascript
-grunt.initConfig(configObject)
-```
-
-This example contains sample config data for the [lint task](task_lint.md):
-
-```javascript
-grunt.initConfig({
- lint: {
- all: ['lib/*.js', 'test/*.js', 'Gruntfile.js']
- }
-});
-```
-
-See the [configuring grunt](getting_started.md) page for more configuration examples.
-
-_This method is an alias for the [grunt.config.init](api_config.md) method._
-
-
-## Creating Tasks
-Tasks are grunt's bread and butter. The stuff you do most often, like `lint` or `test`. Every time grunt is run, you specify one or more tasks to run, which tells grunt what you'd like it to do.
-
-If you don't specify a task, but a task named "default" has been defined, that task will run (unsurprisingly) by default.
-
-_Note that the methods listed below are also available on the [grunt.task](api_task.md) object in addition to the `grunt` object._
-
-
-### grunt.registerTask
-Register an "alias task" or a task function. This method supports the following two signatures:
-
-**Alias task**
-
-If a task list is specified, the new task will be an alias for one or more other tasks. Whenever this "alias task" is run, every specified task in `taskList` will be run, in the order specified. The `taskList` argument must be an array of tasks.
-
-```javascript
-grunt.registerTask(taskName, taskList)
-```
-
-This example alias task defines a "default" task whereby the "lint", "qunit", "concat" and "min" tasks are run automatically if grunt is executed without any tasks specified:
-
-```javascript
-task.registerTask('default', ['lint', 'qunit', 'concat', 'min']);
-```
-
-Task arguments can be specified as well. In this example, the alias "dist" runs both the "concat" and "min" tasks, each with the "dist" argument:
-
-```javascript
-task.registerTask('dist', ['concat:dist', 'min:dist']);
-```
-
-**Function task**
-
-If a `description` and `taskFunction` are passed, the specified function will be executed whenever the task is run. In addition, the specified description will be shown when `grunt --help` is run. Task-specific properties and methods are available inside the task function as properties of the `this` object. The task function can return `false` to indicate that the task has failed.
-
-Note that the `grunt.registerMultiTask` method, explained below, can be used to define a special type of task known as a "multi task."
-
-```javascript
-grunt.registerTask(taskName, description, taskFunction)
-```
-
-This example task logs `foo, testing 123` if grunt is run via `grunt foo:testing:123`. If the task is run without arguments as `grunt foo` the task logs `foo, no args`.
-
-```javascript
-grunt.registerTask('foo', 'A sample task that logs stuff.', function(arg1, arg2) {
- if (arguments.length === 0) {
- grunt.log.writeln(this.name + ", no args");
- } else {
- grunt.log.writeln(this.name + ", " + arg1 + " " + arg2);
- }
-});
-```
-
-See the [creating tasks](types_of_tasks.md) documentation for more examples of tasks and alias tasks.
-
-_This method is an alias for the [grunt.task.registerTask](api_task.md) method._
-
-
-### grunt.registerMultiTask
-Register a "multi task." A multi task is a task that implicitly iterates over all of its named sub-properties (AKA targets) if no target was specified. In addition to the default properties and methods, extra multi task-specific properties are available inside the task function as properties of the `this` object.
-
-Many of the built-in tasks, including the [lint task](task_lint.md), [concat task](task_concat.md) and [min task](task_min.md) are multi tasks.
-
-```javascript
-grunt.registerMultiTask(taskName, description, taskFunction)
-```
-
-Given the specified configuration, this example multi task would log `foo: 1,2,3` if grunt was run via `grunt log:foo`, or it would log `bar: hello world` if grunt was run via `grunt log:bar`. If grunt was run as `grunt log` however, it would log `foo: 1,2,3` then `bar: hello world` then `baz: false`.
-
-```javascript
-grunt.initConfig({
- log: {
- foo: [1, 2, 3],
- bar: 'hello world',
- baz: false
- }
-});
-
-grunt.registerMultiTask('log', 'Log stuff.', function() {
- grunt.log.writeln(this.target + ': ' + this.data);
-});
-```
-
-See the [creating tasks](types_of_tasks.md) documentation for more examples of multi tasks.
-
-_This method is an alias for the [grunt.task.registerMultiTask](api_task.md) method._
-
-
-### grunt.registerInitTask
-Register an "init task." An init task is a task that doesn't require any configuration data, and as such will still run even if grunt can't find a [Gruntfile](getting_started.md). The included [init task](task_init.md) is an example of an "init task."
-
-```javascript
-grunt.registerInitTask(taskName, description, taskFunction)
-```
-
-For an init task example, see the [init task source](../tasks/init.js).
-
-_This method is an alias for the [grunt.task.registerInitTask](api_task.md) method._
-
-### grunt.renameTask
-Rename a task. This might be useful if you want to override the default behavior of a task, while retaining the old name.
-
-```javascript
-grunt.renameTask(oldname, newname)
-```
-
-_This method is an alias for the [grunt.task.renameTask](api_task.md) method._
-
-### grunt.unregisterTasks
-Unregister one or more tasks. This will de-list the specified tasks from the `--help` screen and make them no longer available for use. The task list can be an array of task names or individual task name arguments.
-
-```javascript
-grunt.unregisterTasks(taskList)
-```
-
-_This method is an alias for the [grunt.task.unregisterTasks](api_task.md) method._
-
-## Inside Tasks
-An object is made available as `this` inside each task function that contains a number of useful task-specific properties and methods. This same object is also exposed as `grunt.task.current` for use in [templates](api_template.md).
-
-### this.async / grunt.task.current.async
-If a task is asynchronous, this method must be invoked to instruct grunt to wait. It returns a handle to a "done" function that should be called when the task has completed. `false` can be passed to the done function to indicate that the task has failed. If this method isn't invoked, the task executes synchronously.
-
-```javascript
-// Tell grunt this task is asynchronous.
-var done = this.async();
-// Your async code.
-setTimeout(function() {
- // Let's simulate an error, sometimes.
- var success = Math.random() > 0.5;
- // All done!
- done(success);
-}, 1000);
-```
-
-### this.requires / grunt.task.current.requires
-If one task depends on the successful completion of another task (or tasks), this method can be used to force grunt to abort if the other task didn't run, or if the other task failed. The task list can be an array of task names or individual task name arguments.
-
-Note that this won't actually run the specified task(s), it will just fail the current task if they haven't already run successfully.
-
-```javascript
-this.requires(taskList)
-```
-
-### this.requiresConfig / grunt.task.current.requiresConfig
-Fail the current task if one or more required [config](api_config.md) properties is missing. One or more string or array config properties may be specified.
-
-```javascript
-this.requiresConfig(prop [, prop [, ...]])
-```
-
-See the [grunt.config documentation](api_config.md) for more information about config properties.
-
-_This method is an alias for the [grunt.config.requires](api_config.md) method._
-
-### this.name / grunt.task.current.name
-The name of the task, as defined in `grunt.registerTask`. For example, if a "sample" task was run as `grunt sample` or `grunt sample:foo`, inside the task function, `this.name` would be `"sample"`.
-
-### this.nameArgs / grunt.task.current.nameArgs
-The name of the task, as specified with any colon-separated arguments or flags on the command-line. For example, if a "sample" task was run as `grunt sample:foo`, inside the task function, `this.nameArgs` would be `"sample:foo"`.
-
-### this.args / grunt.task.current.args
-An array of arguments passed to the task. For example, if a "sample" task was run as `grunt sample:foo:bar`, inside the task function, `this.args` would be `["foo", "bar"]`. Note that in multi tasks, the target is removed from the `this.args` array and is not passed into the task function.
-
-### this.flags / grunt.task.current.flags
-An object generated from the arguments passed to the task. For example, if a "sample" task was run as `grunt sample:foo:bar`, inside the task function, `this.flags` would be `{foo: true, bar: true}`. In a multi task, the target name is not set as a flag.
-
-### this.errorCount / grunt.task.current.errorCount
-The number of [grunt.log.error](api_log.md) calls that occurred during this task. This can be used to fail a task if errors occurred during the task.
-
-### this.options / grunt.task.current.options
-Returns a task-specific options object. This object contains properties merged from the optional `defaultsObj` argument, which can be overridden by a task-specific `options` property (and for multi tasks, an additional target-specific `options` property) in the config data.
-
-```javascript
-this.options([defaultsObj])
-```
-
-## Inside Multi Tasks
-
-### this.target / grunt.task.current.target
-In a multi task, this is the name of the target currently being iterated over. For example, if a "sample" multi task was run as `grunt sample:foo` with the config data `{sample: {foo: "bar"}}`, inside the task function, `this.target` would be `"foo"`.
-
-### this.data / grunt.task.current.data
-In a multi task, this is the actual data stored in the grunt config object for the given target. For example, if a "sample" multi task was run as `grunt sample:foo` with the config data `{sample: {foo: "bar"}}`, inside the task function, `this.data` would be `"bar"`.
-
-### this.file / grunt.task.current.file
-In a multi task, target data can be stored in two different formats. A relatively basic "compact" format and a much more flexible "full" format. When the compact format is used, that key and value are made available as `this.file.dest` and `this.file.src`, respectively. When the full format is used, the specified `src` and `dest` values are used for `this.file.dest` and `this.file.src`.
-
-Note that while grunt supports expanding [templates](api_template.md) for both `src` and `dest`, they only work for the `dest` file path when the _full_ format is used.
-
-```javascript
-grunt.initConfig({
- concat: {
- // This is the "compact" format.
- 'dist/built.js': ['src/file1.js', 'src/file2.js'],
- // This is the "full" format.
- built: {
- src: ['src/file1.js', 'src/file2.js'],
- dest: 'dist/built.js'
- }
- }
-});
-```
-
-
-## Loading Externally-Defined Tasks
-For most projects, tasks will be defined in the [Gruntfile](getting_started.md). For larger projects, or in cases where tasks need to be shared across projects, tasks can be loaded from one or more external directories or Npm-installed grunt plugins.
-
-_Note that the methods listed below are also available on the [grunt.task](api_task.md) object in addition to the `grunt` object._
-
-### grunt.loadTasks
-Load task-related files from the specified directory, relative to the [Gruntfile](getting_started.md). This method can be used to load task-related files from a local grunt plugin by specifying the path to that plugin's "tasks" subdirectory.
-
-```javascript
-grunt.loadTasks(tasksPath)
-```
-
-_This method is an alias for the [grunt.task.loadTasks](api_task.md) method._
-
-
-### grunt.loadNpmTasks
-Load tasks from the specified grunt plugin. This plugin must be installed locally via npm, and must be relative to the [Gruntfile](getting_started.md). Grunt plugins can be created by using the [gruntplugin init template](task_init.md).
-
-```javascript
-grunt.loadNpmTasks(pluginName)
-```
-
-_This method is an alias for the [grunt.task.loadNpmTasks](api_task.md) method._
-
-
-## Warnings and Fatal Errors
-If something explodes (or is about to explode) inside a task, it can force grunt to abort. See the [exit codes documentation](exit_codes.md) for a list of all built-in grunt exit codes.
-
-### grunt.warn
-Display a warning and abort grunt immediately. Grunt will continue processing tasks if the `--force` command-line option was specified. The `error` argument can be a string message or an error object.
-
-```javascript
-grunt.warn(error [, errorcode])
-```
-
-If `--debug 9` is specified on the command-line and an error object was specified, a stack trace will be logged.
-
-_This method is an alias for the [grunt.fail.warn](api_fail.md) method._
-
-### grunt.fatal
-Display a warning and abort grunt immediately. The `error` argument can be a string message or an error object.
-
-```javascript
-grunt.fail(error [, errorcode])
-```
-
-If `--debug 9` is specified on the command-line and an error object was specified, a stack trace will be logged.
-
-_This method is an alias for the [grunt.fail.fatal](api_fail.md) method._
-
-
-## Command-line Options
-
-### grunt.option
-Retrieve the value of a command-line option, eg. `debug`. Note that for each command-line option, the inverse can be tested, eg. `no-debug`.
-
-```javascript
-grunt.option(optionName)
-```
-
-## Miscellaneous
-
-### grunt.package
-The current grunt `package.json` metadata, as an object.
-
-```javascript
-grunt.package
-```
-
-### grunt.version
-The current grunt version, as a string. This is just a shortcut to the `grunt.package.version` property.
-
-```javascript
-grunt.version
-```
-
-### grunt.npmTasks
-Inside a [grunt plugin](plugins.md) bin script, this method _must_ be called to inform grunt where to look for that plugin's tasks files. The `npmModuleName` must be the grunt plugin's Npm module name. The [gruntplugin init template](task_init.md), will automatically configure this for you.
-
-```javascript
-grunt.npmTasks(npmModuleName)
-```
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api.md
119 docs/api_config.md
View
@@ -1,115 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.config
+The grunt source has moved!
-Access project-specific configuration data defined in the [Gruntfile](getting_started.md).
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-See the [config lib source](../lib/grunt/config.js) for more information.
-
-## The config API
-
-Note that any method marked with a ☃ (unicode snowman) is also available directly on the `grunt` object, and any method marked with a ☆ (white star) is also available inside tasks on the `this` object. Just so you know. See the [API main page](api.md) for more usage information.
-
-## Initializing Config Data
-_Note that the method listed below is also available on the `grunt` object as [grunt.initConfig](api.md)._
-
-### grunt.config.init ☃
-Initialize a configuration object for the current project. The specified `configObject` is used by tasks and can be accessed using the `grunt.config` method. Nearly every project's [Gruntfile](getting_started.md) will call this method.
-
-```javascript
-grunt.config.init(configObject)
-```
-
-Note that any specified `<% %>` [template strings](api_template.md) will only be processed when config data is retrieved.
-
-This example contains sample config data for the [lint task](task_lint.md):
-
-```javascript
-grunt.config.init({
- lint: {
- all: ['lib/*.js', 'test/*.js', 'Gruntfile.js']
- }
-});
-```
-
-See the [configuring grunt](getting_started.md) page for more configuration examples.
-
-_This method is also available as [grunt.initConfig](api.md)._
-
-
-## Accessing Config Data
-The following methods allow grunt configuration data to be accessed either via dot-delimited string like `'pkg.author.name'` or via array of property name parts like `['pkg', 'author', 'name']`.
-
-Note that if a specified property name contains a `.` dot, it must be escaped with a literal backslash, eg. `'concat.dist/built\\.js'`. If an array of parts is specified, grunt will handle the escaping internally with the `grunt.config.escape` method.
-
-### grunt.config
-Get or set a value from the project's grunt configuration. This method serves as an alias to other methods; if two arguments are passed, `grunt.config.set` is called, otherwise `grunt.config.get` is called.
-
-```javascript
-grunt.config([prop [, value]])
-```
-
-### grunt.config.get
-Get a value from the project's grunt configuration. If `prop` is specified, that property's value is returned, or `null` if that property is not defined. If `prop` isn't specified, a copy of the entire config object is returned.
-
-```javascript
-grunt.config.get([prop])
-```
-
-#### Recursive template processing
-Note that any `<% %>` [template strings](api_template.md) will be recursively processed via the [grunt.template.process](api_template.md) method. Raw values can be accessed via the `grunt.config.getRaw` method.
-
-If any retrieved value is entirely a single `'<%= foo %>'` or `'<%= foo.bar %>'` template string, and the specified `foo` or `foo.bar` property is a non-string (and not `null` or `undefined`) value, it will be expanded to the _actual_ value. That, combined with the fact that the [grunt.file.expand](api_file.md) method will automatically flatten arrays, can be extremely useful.
-
-For example:
-
-```javascript
-grunt.initConfig({
- basename: 'foo',
- extension: 'txt',
- file: '<%= basename %>.<%= extension %>',
- files: ['<%= file %>', 'bar.txt'],
- files2: ['<%= files %>', 'baz.txt']
-});
-
-grunt.config.get('file') // 'foo.txt'
-grunt.config.get('files') // ['foo.txt', 'bar.txt']
-grunt.config.get('files2') // [['foo.txt', 'bar.txt'], 'baz.txt']
-```
-
-### grunt.config.getRaw
-Get a value from the project's grunt configuration. If `prop` is specified, that property's value is returned, or `null` if that property is not defined. If `prop` isn't specified, a copy of the entire config object is returned.
-
-```javascript
-grunt.config.getRaw([prop])
-```
-
-Note that any specified `<% %>` [template strings](api_template.md) will NOT be processed when config data is retrieved via this method.
-
-### grunt.config.set
-Set a value into the project's grunt configuration.
-
-```javascript
-grunt.config.set(prop, value)
-```
-
-Note that any specified `<% %>` [template strings](api_template.md) will only be processed when config data is retrieved.
-
-### grunt.config.escape
-Escape `.` dots in the given `propString`. This should be used for property names that contain dots.
-
-```javascript
-grunt.config.escape(propString)
-```
-
-## Requiring Config Data
-_Note that the method listed below is also available inside tasks on the `this` object as [this.requiresConfig](api.md)._
-
-### grunt.config.requires ☆
-Fail the current task if one or more required config properties is missing, `null` or `undefined`. One or more string or array config properties may be specified.
-
-```javascript
-grunt.config.requires(prop [, prop [, ...]])
-```
-
-_This method is also available inside tasks as [this.requiresConfig](api.md)._
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_config.md
58 docs/api_event.md
View
@@ -1,54 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.event
+The grunt source has moved!
-Event emitting via the [EventEmitter2][ee2] library.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-[ee2]: https://github.com/hij1nx/EventEmitter2
-
-See the [event lib source](../lib/grunt/event.js) and [EventEmitter2 docs][ee2] for more information.
-
-## The event API
-Even though only the most relevant methods are listed on this page, the full [EventEmitter2 API][ee2] is available on the `grunt.event` object. Event namespaces may be specified with the `.` (dot) separator, and namespace wildcards have been enabled.
-
-### grunt.event.on
-Adds a listener to the end of the listeners array for the specified event.
-
-```javascript
-grunt.event.on(event, listener)
-```
-
-### grunt.event.once
-Adds a **one time** listener for the event. The listener is invoked only the first time the event is fired, after which it is removed.
-
-```javascript
-grunt.event.once(event, listener)
-```
-
-### grunt.event.many
-Adds a listener that will execute **n times** for the event before being removed. The listener is invoked only the first time the event is fired, after which it is removed.
-
-```javascript
-grunt.event.many(event, timesToListen, listener)
-```
-
-### grunt.event.off
-Remove a listener from the listener array for the specified event.
-
-```javascript
-grunt.event.off(event, listener)
-```
-
-### grunt.event.removeAllListeners
-Removes all listeners, or those of the specified event.
-
-```javascript
-grunt.emitter.removeAllListeners([event])
-```
-
-### grunt.event.emit
-Execute each of the listeners that may be listening for the specified event name in order with the list of arguments.
-
-```javascript
-grunt.event.emit(event, [arg1], [arg2], [...])
-```
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_event.md
39 docs/api_fail.md
View
@@ -1,35 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.fail
+The grunt source has moved!
-For when something goes horribly wrong.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-See the [fail lib source](../lib/grunt/fail.js) for more information.
-
-## The fail API
-
-If something explodes (or is about to explode) inside a task, it can force grunt to abort. See the [exit codes documentation](exit_codes.md) for a list of all built-in grunt exit codes.
-
-Note that any method marked with a ☃ (unicode snowman) is also available directly on the `grunt` object. Just so you know. See the [API main page](api.md) for more usage information.
-
-### grunt.warn ☃
-Display a warning and abort grunt immediately. Grunt will continue processing tasks if the `--force` command-line option was specified. The `error` argument can be a string message or an error object.
-
-```javascript
-grunt.warn(error [, errorcode])
-```
-
-If `--debug 9` is specified on the command-line and an error object was specified, a stack trace will be logged.
-
-_This method is also available as [grunt.warn](api.md)._
-
-### grunt.fatal ☃
-Display a warning and abort grunt immediately. The `error` argument can be a string message or an error object.
-
-```javascript
-grunt.fail(error [, errorcode])
-```
-
-If `--debug 9` is specified on the command-line and an error object was specified, a stack trace will be logged.
-
-_This method is also available as [grunt.fatal](api.md)._
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_fail.md
321 docs/api_file.md
View
@@ -1,317 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.file
+The grunt source has moved!
-Wildcard expansion, file reading, writing, directory traversing.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-See the [file lib source](../lib/grunt/file.js) for more information.
-
-## The file API
-There are many provided methods for reading and writing files, as well as traversing the filesystem and finding files by wildcard patterns. Many of these methods are wrappers around core Node.js file functionality, but with additional error handling, logging and character encoding normalization.
-
-_Note: all file paths are relative to the [Gruntfile](getting_started.md) unless the current working directory is changed with `grunt.file.setBase` or the `--base` command-line option._
-
-### grunt.file.defaultEncoding
-Set this property to change the default encoding used by all `grunt.file` methods. Defaults to `'utf8'`. If you do have to change this value, it's recommended that you change it as early as possible inside your [Gruntfile](getting_started.md).
-
-```javascript
-grunt.file.defaultEncoding = 'utf8';
-```
-
-### grunt.file.read
-Read and return a file's contents. Returns a string, unless `options.encoding` is `null` in which case it returns a [Buffer](http://nodejs.org/docs/latest/api/buffer.html).
-
-```javascript
-grunt.file.read(filepath [, options])
-```
-
-The `options` object has these possible properties:
-
-```javascript
-var options = {
- // If an encoding is not specified, default to grunt.file.defaultEncoding.
- // If specified as null, returns a non-decoded Buffer instead of a string.
- encoding: encodingName
-};
-```
-
-### grunt.file.readJSON
-Read a file's contents, parsing the data as JSON and returning the result. See `grunt.file.read` for a list of supported options.
-
-```javascript
-grunt.file.readJSON(filepath [, options])
-```
-
-### grunt.file.readYAML
-Read a file's contents, parsing the data as YAML and returning the result. See `grunt.file.read` for a list of supported options.
-
-```javascript
-grunt.file.readYAML(filepath [, options])
-```
-
-### grunt.file.write
-Write the specified contents to a file, creating intermediate directories if necessary. Strings will be encoded using the specified character encoding, [Buffers](http://nodejs.org/docs/latest/api/buffer.html) will be written to disk as-specified.
-
-_If the `--no-write` command-line option is specified, the file won't actually be written._
-
-```javascript
-grunt.file.write(filepath, contents [, options])
-```
-
-The `options` object has these possible properties:
-
-```javascript
-var options = {
- // If an encoding is not specified, default to grunt.file.defaultEncoding.
- // If `contents` is a Buffer, encoding is ignored.
- encoding: encodingName
-};
-```
-
-### grunt.file.copy
-Copy a source file to a destination path, creating intermediate directories if necessary.
-
-_If the `--no-write` command-line option is specified, the file won't actually be written._
-
-```javascript
-grunt.file.copy(srcpath, destpath [, options])
-```
-
-The `options` object has these possible properties:
-
-```javascript
-var options = {
- // If an encoding is not specified, default to grunt.file.defaultEncoding.
- // If null, the `process` function will receive a Buffer instead of String.
- encoding: encodingName,
- // The source file contents are passed into this function, whose return
- // value will be used as the destination file's contents. If this function
- // returns `false`, the file copy will be aborted.
- process: processFunction,
- // These optional wildcard patterns will be matched against the filepath
- // (not the filename) using grunt.file.isMatch. If any specified wildcard
- // pattern matches, the file won't be processed via the `process` function.
- // If `true` is specified, processing will be prevented.
- noProcess: wildcardPatterns
-};
-```
-
-### grunt.file.delete
-Delete the specified filepath. Will delete files and folders recursively.
-
-_Will not delete the current working directory or files outside the current working directory unless the `--force` command-line option is specified._
-
-_If the `--no-write` command-line option is specified, the filepath won't actually be deleted._
-
-```javascript
-grunt.file.delete(filepath [, options])
-```
-
-The `options` object has one possible property:
-
-```javascript
-var options = {
- // Enable deleting outside the current working directory. This option may
- // be overridden by the --force command-line option.
- force: true
-};
-```
-
-### grunt.file.mkdir
-Works like `mkdir -p`. Create a directory along with any intermediate directories. If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-_If the `--no-write` command-line option is specified, directories won't actually be created._
-
-```javascript
-grunt.file.mkdir(dirpath [, mode])
-```
-
-### grunt.file.recurse
-Recurse into a directory, executing `callback` for each file.
-
-```javascript
-grunt.file.recurse(rootdir, callback)
-```
-
-The callback function receives the following arguments:
-
-```javascript
-function callback(abspath, rootdir, subdir, filename) {
- // The full path to the current file, which is nothing more than
- // the rootdir + subdir + filename arguments, joined.
- abspath
- // The root director, as originally specified.
- rootdir
- // The current file's directory, relative to rootdir.
- subdir
- // The filename of the current file, without any directory parts.
- filename
-}
-```
-
-### grunt.file.isPathAbsolute
-Is a given file path absolute? Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.isPathAbsolute(path1 [, path2 [, ...]])
-```
-
-### grunt.file.isPathCwd
-Is a given file path the CWD? Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.isPathCwd(path1 [, path2 [, ...]])
-```
-
-### grunt.file.isPathInCwd
-Is a given file path inside the CWD? Note: CWD is not _inside_ CWD. Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.isPathInCwd(path1 [, path2 [, ...]])
-```
-
-### grunt.file.userDir
-Return a file path relative to the user's `.grunt` directory, which is `%USERPROFILE%\.grunt\` on Windows, and `~/.grunt/` on OS X or Linux. If no file path is specified, the base user `.grunt` directory path will be returned. If the specified path is not found, `null` is returned.
-
-Windows users: `%USERPROFILE%` is generally your `Documents and Settings` directory.
-
-_Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path._
-
-```javascript
-grunt.file.userDir([path1, [, path2 [, ...]]])
-```
-
-### grunt.file.setBase
-Change grunt's current working directory (CWD). By default, all file paths are relative to the [Gruntfile](getting_started.md). This works just like the `--base` command-line option.
-
-```javascript
-grunt.file.setBase(path1 [, path2 [, ...]])
-```
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-
-## File Lists and Wildcards
-Wildcard patterns are resolved using the [glob library](https://github.com/isaacs/node-glob). See the [minimatch](https://github.com/isaacs/minimatch) module documentation for more details on supported wildcard patterns and matching options.
-
-There are also a number of [task-specific file listing methods](api_task.md) that find files inside grunt plugins and task directories.
-
-### grunt.file.expand
-Return a unique array of all file or directory paths that match the given wildcard pattern(s). This method accepts either comma separated wildcard patterns or an array of wildcard patterns. Paths matching patterns that begin with `!` will be excluded from the returned array. Patterns are processed in order, so inclusion and exclusion order is significant.
-
-```javascript
-grunt.file.expand([options, ] patterns)
-```
-
-File paths are relative to the [Gruntfile](getting_started.md) unless the current working directory is changed with `grunt.file.setBase` or the `--base` command-line option.
-
-The `options` object supports all [minimatch](https://github.com/isaacs/minimatch) options. Here are a few examples of where these options might be useful:
-
-* If `options.matchBase` is true, patterns without slashes will match against the basename of the path even if it contains slashes, eg. pattern `*.js` will match filepath `path/to/file.js`.
-* If `options.nonull` is true, patterns that fail to match anything will be returned in the result set. This allows further testing with `grunt.file.exists` to determine if any of the specified patterns were invalid.
-* If `options.cwd` is set, patterns will be matched relative to that path, and all returned filepaths will also be relative to that path.
-
-### grunt.file.expandDirs
-This method behaves the same as `grunt.file.expand` except it only returns directory paths.
-
-```javascript
-grunt.file.expandDirs([options, ] patterns)
-```
-
-### grunt.file.expandFiles
-This method behaves the same as `grunt.file.expand` except it only returns file paths.
-
-```javascript
-grunt.file.expandFiles([options, ] patterns)
-```
-
-This method is used by many built-in tasks to handle wildcard expansion of the specified source files. See the [concat task source](../tasks/concat.js) for an example.
-
-### grunt.file.expandFileURLs
-Return a unique array of all `file://` URLs for files that match the given wildcard pattern(s). Any absolute `file://`, `http://` or `https://` URLs specified will be passed through. This method accepts one or more comma separated wildcard patterns (or URLs), as well as an array of wildcard patterns (or URLs).
-
-```javascript
-grunt.file.expandFileURLs(patternsOrURLs)
-```
-
-File paths are relative to the [Gruntfile](getting_started.md) unless the current working directory is changed with `grunt.file.setBase` or the `--base` command-line option.
-
-See the [qunit task source](../tasks/qunit.js) for an example.
-
-### grunt.file.findup
-Search in the given directory followed by all parent directories for a file matching the given wildcard pattern(s). Returns the first matching filepath found, otherwise returns `null`. This method accepts either comma separated wildcard patterns or an array of wildcard patterns.
-
-```javascript
-grunt.file.findup(rootdir, patterns)
-```
-
-### grunt.file.match
-Match one or more wildcard patterns against one or more file paths. Returns a uniqued array of all file paths that match any of the specified wildcard patterns. Both the `patterns` and `filepaths` argument can be a single string or array of strings. Paths matching patterns that begin with `!` will be excluded from the returned array. Patterns are processed in order, so inclusion and exclusion order is significant.
-
-```javascript
-grunt.file.match([options, ] patterns, filepaths)
-```
-
-The `options` object supports all [minimatch](https://github.com/isaacs/minimatch) options. For example, if `options.matchBase` is true, patterns without slashes will match against the basename of the path even if it contains slashes, eg. pattern `*.js` will match filepath `path/to/file.js`.
-
-### grunt.file.isMatch
-This method behaves similarly to `grunt.file.match` except it simply returns `true` if any files were matched, otherwise `false`.
-
-### grunt.file.watchFiles
-An object with two properties, `grunt.file.watchFiles.changed` and `grunt.file.watchFiles.deleted` that each contain an array of files changed or deleted since the last time the [watch task](task_watch.md) was run. If the watch task hasn't run, both properties will be `null`.
-
-### grunt.file.exists
-Does the given path exist? Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.exists(path1 [, path2 [, ...]])
-```
-
-### grunt.file.isLink
-Is the given path a symbolic link? Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.isLink(path1 [, path2 [, ...]])
-```
-
-Returns false if the path doesn't exist.
-
-### grunt.file.isDir
-Is the given path a directory? Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.isDir(path1 [, path2 [, ...]])
-```
-
-Returns false if the path doesn't exist.
-
-### grunt.file.isFile
-Is the given path a file? Returns a boolean.
-
-Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path.
-
-```javascript
-grunt.file.isFile(path1 [, path2 [, ...]])
-```
-
-Returns false if the path doesn't exist.
-
-## External libraries
-
-### grunt.file.glob
-[glob](https://github.com/isaacs/node-glob) - File globbing utility.
-
-### grunt.file.minimatch
-[minimatch](https://github.com/isaacs/minimatch) - File pattern matching utility.
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_file.md
171 docs/api_log.md
View
@@ -1,167 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.log, grunt.verbose
+The grunt source has moved!
-Output messages to the console.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-See the [log lib source](../lib/grunt/log.js) for more information.
-
-## The log API
-Grunt output should look consistent, and maybe even pretty. As such, there is a plethora of logging methods, and a few useful patterns. All of the methods that actually log something are chainable.
-
-_Note: all methods available under `grunt.verbose` work exactly like `grunt.log` methods, but only log if the `--verbose` command-line option was specified._
-
-### grunt.log.write / grunt.verbose.write
-Log the specified `msg` string, with no trailing newline.
-
-```javascript
-grunt.log.write(msg)
-```
-
-### grunt.log.writeln / grunt.verbose.writeln
-Log the specified `msg` string, with trailing newline.
-
-```javascript
-grunt.log.writeln([msg])
-```
-
-### grunt.log.error / grunt.verbose.error
-If `msg` string is omitted, logs `ERROR` in red, otherwise logs `>> msg`, with trailing newline.
-
-```javascript
-grunt.log.error([msg])
-```
-
-### grunt.log.errorlns / grunt.verbose.errorlns
-Log an error with `grunt.log.error`, wrapping text to 80 columns using `grunt.log.wraptext`.
-
-```javascript
-grunt.log.errorlns(msg)
-```
-
-### grunt.log.ok / grunt.verbose.ok
-If `msg` string is omitted, logs `OK` in green, otherwise logs `>> msg`, with trailing newline.
-
-```javascript
-grunt.log.ok([msg])
-```
-
-### grunt.log.oklns / grunt.verbose.oklns
-Log an ok message with `grunt.log.ok`, wrapping text to 80 columns using `grunt.log.wraptext`.
-
-```javascript
-grunt.log.oklns(msg)
-```
-
-### grunt.log.subhead / grunt.verbose.subhead
-Log the specified `msg` string in **bold**, with trailing newline.
-
-```javascript
-grunt.log.subhead(msg)
-```
-
-### grunt.log.writeflags / grunt.verbose.writeflags
-Log a list of `obj` properties (good for debugging flags).
-
-```javascript
-grunt.log.writeflags(obj, prefix)
-```
-
-### grunt.log.debug / grunt.verbose.debug
-Logs a debugging message, but only if the `--debug` command-line option was specified.
-
-```javascript
-grunt.log.debug(msg)
-```
-
-## Verbose and Notverbose
-All logging methods available under `grunt.verbose` work exactly like their `grunt.log` counterparts, but only log if the `--verbose` command-line option was specified. There is also a "notverbose" counterpart available at both `grunt.log.notverbose` and `grunt.log.verbose.or`. In fact, the `.or` property can be used on both `verbose` and `notverbose` to effectively toggle between the two.
-
-### grunt.verbose / grunt.log.verbose
-This object contains all methods of `grunt.log` but only logs if the `--verbose` command-line option was specified.
-
-```javascript
-grunt.verbose
-```
-
-### grunt.verbose.or / grunt.log.notverbose
-This object contains all methods of `grunt.log` but only logs if the `--verbose` command-line option was _not_ specified.
-
-```javascript
-grunt.verbose.or
-```
-
-## Utility Methods
-These methods don't actually log, they just return strings that can be used in other methods.
-
-### grunt.log.wordlist
-Returns a comma-separated list of `arr` array items.
-
-```javascript
-grunt.log.wordlist(arr [, options])
-```
-
-The `options` object has these possible properties, and default values:
-
-```javascript
-var options = {
- // The separator string (can be colored).
- separator: ', ',
- // The array item color (specify false to not colorize).
- color: 'cyan',
-};
-```
-
-### grunt.log.uncolor
-Removes all color information from a string, making it suitable for testing `.length` or perhaps logging to a file.
-
-```javascript
-grunt.log.uncolor(str)
-```
-
-### grunt.log.wraptext
-Wrap `text` string to `width` characters with `\n`, ensuring that words are not split in the middle unless absolutely necessary.
-
-```javascript
-grunt.log.wraptext(width, text)
-```
-
-### grunt.log.table
-Wrap `texts` array of strings to columns `widths` characters wide. A wrapper for the `grunt.log.wraptext` method that can be used to generate output in columns.
-
-```javascript
-grunt.log.table(widths, texts)
-```
-
-
-## An Example
-
-A common pattern is to only log when in `--verbose` mode OR if an error occurs, like so:
-
-```javascript
-grunt.registerTask('something', 'Do something interesting.', function(arg) {
- var msg = 'Doing something...';
- grunt.verbose.write(msg);
- try {
- doSomethingThatThrowsAnExceptionOnError(arg);
- // Success!
- grunt.verbose.ok();
- } catch(e) {
- // Something went wrong.
- grunt.verbose.or.write(msg).error().error(e.message);
- grunt.fail.warn('Something went wrong.', 50);
- }
-});
-```
-
-An explanation of the above code:
-
-1. `grunt.verbose.write(msg);` logs the message (no newline), but only in `--verbose` mode.
-2. `grunt.verbose.ok();` logs OK in green, with a newline.
-3. `grunt.verbose.or.write(msg).error().error(e.message);` does a few things:
- 1. `grunt.verbose.or.write(msg)` logs the message (no newline) if not in `--verbose` mode, and returns the `notverbose` object.
- 2. `.error()` logs ERROR in red, with a newline, and returns the `notverbose` object.
- 3. `.error(e.message);` logs the actual error message (and returns the `notverbose` object).
-4. `grunt.fail.warn('Something went wrong.', 50);` logs a warning in bright yellow, exiting grunt with exit code 50, unless `--force` was specified.
-
-Take a look at the [built-in tasks source code](../tasks) for more examples.
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_log.md
352 docs/api_task.md
View
@@ -1,348 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.task
+The grunt source has moved!
-Register, run and load external tasks.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-See the [task lib source](../lib/grunt/task.js) and [task util lib source](../lib/util/task.js) for more information.
-
-## The task API
-
-Note that any method marked with a ☃ (unicode snowman) is also available directly on the `grunt` object. Just so you know. See the [API main page](api.md) for more usage information.
-
-
-## Creating Tasks
-Tasks are grunt's bread and butter. The stuff you do most often, like `lint` or `test`. Every time grunt is run, you specify one more more tasks to run, which tells grunt what you'd like it to do.
-
-If you don't specify a task, but a task named "default" has been defined, that task will run (unsurprisingly) by default.
-
-### grunt.task.registerTask ☃
-Register an "alias task" or a task function. This method supports the following two signatures:
-
-**Alias task**
-
-If a task list is specified, the new task will be an alias for one or more other tasks. Whenever this "alias task" is run, every specified task in `taskList` will be run, in the order specified. The `taskList` argument must be an array of tasks.
-
-```javascript
-grunt.task.registerTask(taskName, taskList)
-```
-
-This example alias task defines a "default" task whereby the "lint", "qunit", "concat" and "min" tasks are run automatically if grunt is executed without any tasks specified:
-
-```javascript
-task.registerTask('default', ['lint', 'qunit', 'concat', 'min']);
-```
-
-Task arguments can be specified as well. In this example, the alias "dist" runs both the "concat" and "min" tasks, each with the "dist" argument:
-
-```javascript
-task.registerTask('dist', ['concat:dist', 'min:dist']);
-```
-
-**Function task**
-
-If a `description` and `taskFunction` are passed, the specified function will be executed whenever the task is run. In addition, the specified description will be shown when `grunt --help` is run. Task-specific properties and methods are available inside the task function as properties of the `this` object. The task function can return `false` to indicate that the task has failed.
-
-Note that the `grunt.task.registerMultiTask` method, explained below, can be used to define a special type of task known as a "multi task."
-
-```javascript
-grunt.task.registerTask(taskName, description, taskFunction)
-```
-
-This example task logs `foo, testing 123` if grunt is run via `grunt foo:testing:123`. If the task is run without arguments as `grunt foo` the task logs `foo, no args`.
-
-```javascript
-grunt.task.registerTask('foo', 'A sample task that logs stuff.', function(arg1, arg2) {
- if (arguments.length === 0) {
- grunt.log.writeln(this.name + ", no args");
- } else {
- grunt.log.writeln(this.name + ", " + arg1 + " " + arg2);
- }
-});
-```
-
-See the [creating tasks](types_of_tasks.md) documentation for more examples of tasks and alias tasks.
-
-_This method is also available as [grunt.registerTask](api.md)._
-
-
-### grunt.task.registerMultiTask ☃
-Register a "multi task." A multi task is a task that implicitly iterates over all of its named sub-properties (AKA targets) if no target was specified. In addition to the default properties and methods, extra multi task-specific properties are available inside the task function as properties of the `this` object.
-
-Many of the built-in tasks, including the [lint task](task_lint.md), [concat task](task_concat.md) and [min task](task_min.md) are multi tasks.
-
-```javascript
-grunt.task.registerMultiTask(taskName, description, taskFunction)
-```
-
-Given the specified configuration, this example multi task would log `foo: 1,2,3` if grunt was run via `grunt log:foo`, or it would log `bar: hello world` if grunt was run via `grunt log:bar`. If grunt was run as `grunt log` however, it would log `foo: 1,2,3` then `bar: hello world` then `baz: false`.
-
-```javascript
-grunt.initConfig({
- log: {
- foo: [1, 2, 3],
- bar: 'hello world',
- baz: false
- }
-});
-
-grunt.task.registerMultiTask('log', 'Log stuff.', function() {
- grunt.log.writeln(this.target + ': ' + this.data);
-});
-```
-
-See the [creating tasks](types_of_tasks.md) documentation for more examples of multi tasks.
-
-_This method is also available as [grunt.registerMultiTask](api.md)._
-
-
-### grunt.task.registerInitTask ☃
-Register an "init task." An init task is a task that doesn't require any configuration data, and as such will still run even if grunt can't find a [Gruntfile](getting_started.md). The included [init task](task_init.md) is an example of an "init task."
-
-```javascript
-grunt.task.registerInitTask(taskName, description, taskFunction)
-```
-
-For an init task example, see the [init task source](../tasks/init.js).
-
-_This method is also available as [grunt.registerInitTask](api.md)._
-
-### grunt.task.renameTask ☃
-Rename a task. This might be useful if you want to override the default behavior of a task, while retaining the old name.
-
-```javascript
-grunt.task.renameTask(oldname, newname)
-```
-
-_This method is also available as [grunt.renameTask](api.md)._
-
-### grunt.task.unregisterTasks ☃
-Unregister one or more tasks. This will de-list the specified tasks from the `--help` screen and make them no longer available for use. The task list can be an array of task names or individual task name arguments.
-
-```javascript
-grunt.task.unregisterTasks(taskList)
-```
-
-_This method is also available as [grunt.unregisterTasks](api.md)._
-
-## Inside Tasks
-An object is made available as `this` inside each task function that contains a number of useful task-specific properties and methods. This same object is also exposed as `grunt.task.current` for use in [templates](api_template.md).
-
-### this.async / grunt.task.current.async
-If a task is asynchronous, this method must be invoked to instruct grunt to wait. It returns a handle to a "done" function that should be called when the task has completed. `false` can be passed to the done function to indicate that the task has failed. If this method isn't invoked, the task executes synchronously.
-
-```javascript
-// Tell grunt this task is asynchronous.
-var done = this.async();
-// Your async code.
-setTimeout(function() {
- // Let's simulate an error, sometimes.
- var success = Math.random() > 0.5;
- // All done!
- done(success);
-}, 1000);
-```
-
-### this.requires / grunt.task.current.requires
-If one task depends on the successful completion of another task (or tasks), this method can be used to force grunt to abort if the other task didn't run, or if the other task failed. The task list can be an array of task names or individual task name arguments.
-
-Note that this won't actually run the specified task(s), it will just fail the current task if they haven't already run successfully.
-
-```javascript
-this.requires(taskList)
-```
-
-### this.requiresConfig / grunt.task.current.requiresConfig
-Fail the current task if one or more required [config](api_config.md) properties is missing. One or more string or array config properties may be specified.
-
-```javascript
-this.requiresConfig(prop [, prop [, ...]])
-```
-
-See the [grunt.config documentation](api_config.md) for more information about config properties.
-
-_This method is an alias for the [grunt.config.requires](api_config.md) method._
-
-### this.name / grunt.task.current.name
-The name of the task, as defined in `grunt.registerTask`. For example, if a "sample" task was run as `grunt sample` or `grunt sample:foo`, inside the task function, `this.name` would be `"sample"`.
-
-### this.nameArgs / grunt.task.current.nameArgs
-The name of the task, as specified with any colon-separated arguments or flags on the command-line. For example, if a "sample" task was run as `grunt sample:foo`, inside the task function, `this.nameArgs` would be `"sample:foo"`.
-
-### this.args / grunt.task.current.args
-An array of arguments passed to the task. For example, if a "sample" task was run as `grunt sample:foo:bar`, inside the task function, `this.args` would be `["foo", "bar"]`. Note that in multi tasks, the target is removed from the `this.args` array and is not passed into the task function.
-
-### this.flags / grunt.task.current.flags
-An object generated from the arguments passed to the task. For example, if a "sample" task was run as `grunt sample:foo:bar`, inside the task function, `this.flags` would be `{foo: true, bar: true}`. In a multi task, the target name is not set as a flag.
-
-### this.errorCount / grunt.task.current.errorCount
-The number of [grunt.log.error](api_log.md) calls that occurred during this task. This can be used to fail a task if errors occurred during the task.
-
-### this.options / grunt.task.current.options
-Returns a task-specific options object. This object contains properties merged from the optional `defaultsObj` argument, which can be overridden by a task-specific `options` property (and for multi tasks, an additional target-specific `options` property) in the config data.
-
-```javascript
-this.options([defaultsObj])
-```
-
-## Inside Multi Tasks
-
-### this.target / grunt.task.current.target
-In a multi task, this is the name of the target currently being iterated over. For example, if a "sample" multi task was run as `grunt sample:foo` with the config data `{sample: {foo: "bar"}}`, inside the task function, `this.target` would be `"foo"`.
-
-### this.data / grunt.task.current.data
-In a multi task, this is the actual data stored in the grunt config object for the given target. For example, if a "sample" multi task was run as `grunt sample:foo` with the config data `{sample: {foo: "bar"}}`, inside the task function, `this.data` would be `"bar"`.
-
-### this.file / grunt.task.current.file
-In a multi task, target data can be stored in two different formats. A relatively basic "compact" format and a much more flexible "full" format. When the compact format is used, that key and value are made available as `this.file.dest` and `this.file.src`, respectively. When the full format is used, the specified `src` and `dest` values are used for `this.file.dest` and `this.file.src`.
-
-Note that while grunt supports expanding [templates](api_template.md) for both `src` and `dest`, they only work for the `dest` file path when the _full_ format is used.
-
-```javascript
-grunt.initConfig({
- concat: {
- // This is the "compact" format.
- 'dist/built.js': ['src/file1.js', 'src/file2.js'],
- // This is the "full" format.
- built: {
- src: ['src/file1.js', 'src/file2.js'],
- dest: 'dist/built.js'
- }
- }
-});
-```
-
-
-## Loading Externally-Defined Tasks
-For most projects, tasks will be defined in the [Gruntfile](getting_started.md). For larger projects, or in cases where tasks need to be shared across projects, tasks can be loaded from one or more external directories or Npm-installed grunt plugins.
-
-### grunt.task.loadTasks ☃
-Load task-related files from the specified directory, relative to the [Gruntfile](getting_started.md). This method can be used to load task-related files from a local grunt plugin by specifying the path to that plugin's "tasks" subdirectory.
-
-```javascript
-grunt.task.loadTasks(tasksPath)
-```
-
-_This method is also available as [grunt.loadTasks](api.md)._
-
-
-### grunt.task.loadNpmTasks ☃
-Load tasks from the specified grunt plugin. This plugin must be installed locally via npm, and must be relative to the [Gruntfile](getting_started.md). Grunt plugins can be created by using the [gruntplugin init template](task_init.md).
-
-```javascript
-grunt.task.loadNpmTasks(pluginName)
-```
-
-_This method is also available as [grunt.loadNpmTasks](api.md)._
-
-
-## Queueing Tasks
-Grunt automatically enqueues and runs all tasks specified on the command line, but individual tasks can enqueue additional tasks to be run.
-
-### grunt.task.run
-Enqueue one or more tasks. Every specified task in `taskList` will be run immediately after the current task completes, in the order specified. The task list can be an array of tasks or individual task arguments.
-
-```javascript
-grunt.task.run(taskList)
-```
-
-See the [watch task source](../tasks/watch.js) for an example.
-
-### grunt.task.clearQueue
-Empty the task queue completely. Unless additional tasks are enqueued, no more tasks will be run.
-
-```javascript
-grunt.task.clearQueue()
-```
-
-See the [watch task source](../tasks/watch.js) for an example.
-
-
-## Search Directories
-For a given tasks file or related task "extra" file, these paths will be searched in this order, aka "task path order," until the first matching file is found.
-
-1. The grunt user tasks directory, ie. `grunt.file.userDir('tasks')`.
-2. Npm-installed [grunt plugins](plugins.md) or tasks directories specified on the command-line via the `--tasks` option.
-3. Npm-installed grunt plugins, tasks directories or individual tasks specified in the [Gruntfile](getting_started.md).
-4. Task directories built-in to a Npm-installed grunt plugin run via its `grunt-` named binary.
-5. The [built-in grunt tasks directory](../tasks).
-
-This allows referenced Npm-installed grunt plugins, tasks directories, the [Gruntfile](getting_started.md) and even the user to override grunt functionality as needed.
-
-For example, a grunt plugin may add a new "foo" task in its `tasks/foo.js`, completely override an existing task like the [concat task](task_concat.md) in its `tasks/concat.js` or add a new "bar" [init task](task_init.md) template with its `tasks/init/bar.js` and "extra" files in its `tasks/init/bar/` directory. In your personal user tasks directory, you can create your own "baz" init task template with a `tasks/init/baz.js` file or even override individual init template "extra" files like `tasks/init/jquery/root/README.md` just by creating them.
-
-**When defining project-specific tasks or "extra" files, it's always a good idea to include those files in a grunt plugin or tasks directory referenced in the [Gruntfile](getting_started.md), and committed with the project when possible. This will help to guarantee consistent grunt behavior for all contributors to that project.**
-
-### grunt.task.searchDirs
-An array of directory paths that grunt uses to search for task-related files, in "task path order." This array is used by all task-specific file listing methods.
-
-```javascript
-grunt.task.searchDirs
-```
-
-
-## File Lists and Wildcards
-Wildcard patterns are resolved using the [glob library](https://github.com/isaacs/node-glob). See the [minimatch](https://github.com/isaacs/minimatch) module documentation for more details on supported wildcard patterns and matching options.
-
-There are also a number of [generic file listing methods](api_file.md) that list files relative to the [Gruntfile](getting_started.md).
-
-### grunt.task.getFile
-Search tasks directories in "task path order" (via `grunt.task.searchDirs`) for a given file path, returning the path of the first matching file.
-
-**This is the primary method used to locate tasks files and extras files.**
-
-_Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path._
-
-```javascript
-grunt.task.getFile(path1 [, path2 [, ...]])
-```
-
-### grunt.task.expand
-Search task "search directories" for the given wildcard pattern(s), returning a unique array of all matching file paths as "file objects" in `grunt.task.searchDirs` "task path order." This method accepts one or more comma separated wildcard patterns as well as an array of wildcard patterns. Paths matching patterns that begin with `!` will be excluded from the returned array.
-
-The `options` object supports all [minimatch](https://github.com/isaacs/minimatch) options.
-
-```javascript
-grunt.task.expand([options, ] patterns)
-```
-
-Each "file object" item in the returned array has the following properties, and if coerced to string via `String(fileobj)` or `fileObj.toString()` returns the absolute file path value. In this way, `.map(String)` can be called on the resulting array to return an array of absolute file path strings.
-
-```javascript
-var fileobj = {
- // The absolute path of the matched file or directory.
- abs: absolutePath,
- // The path of the matched file or directory, relative to the search
- // directory in which it was found.
- rel: relativePath,
- // The search directory in which this file was found.
- base: basePath
-}
-```
-
-### grunt.task.expandDirs
-This method behaves the same as `grunt.task.expand` except it only returns directory paths.
-
-```javascript
-grunt.task.expandDirs([options, ] patterns)
-```
-
-### grunt.task.expandFiles
-This method behaves the same as `grunt.task.expand` except it only returns file paths.
-
-```javascript
-grunt.task.expandFiles([options, ] patterns)
-```
-
-## JSON Defaults
-
-### grunt.task.readDefaults
-Search tasks directories for a given JSON file, merging the parsed data objects in "task path order" and returning the final merged object.
-
-**This is the primary method used to load task-related JSON default data.**
-
-_Like the Node.js [path.join](http://nodejs.org/docs/latest/api/path.html#path_path_join_path1_path2) method, this method will join all arguments together and normalize the resulting path._
-
-```javascript
-grunt.task.readDefaults(path1 [, path2 [, ...]])
-```
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_task.md
93 docs/api_template.md
View
@@ -1,89 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.template
+The grunt source has moved!
-Lo-Dash template processing and other template-related methods.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-Template strings can be processed manually using the provided template functions. In addition, the [config.get](api_config.md) method (used by many tasks) automatically expands `<% %>` style template strings specified as config data inside the [Gruntfile](getting_started.md).
-
-See the [template lib source](../lib/grunt/template.js) for more information.
-
-## The template API
-
-### grunt.template.process
-Process a [Lo-Dash template](http://lodash.com/docs/#template) string. The `template` argument will be processed recursively until there are no more templates to process.
-
-The default data object is the entire [config object](api_config.md), but if `options.data` is set, that object will be used instead. The default template delimiters are `<% %>` but if `options.delimiters` is set to a valid delimiter name, those template delimiters will be used instead.
-
-_See the `grunt.template.setDelimiters` method for a list of valid delimiter names._
-
-```javascript
-grunt.template.process(template [, options])
-```
-
-Inside templates, the `grunt` object is exposed so that you can do things like `<%= grunt.template.today('yyyy') %>`. _Note that if the data object already has a `grunt` property, the `grunt` API will not be accessible in templates._
-
-In this example, the `baz` property is processed recursively until there are no more `<% %>` templates to process.
-
-```javascript
-var obj = {
- foo: 'c',
- bar: 'b<%= foo %>d',
- baz: 'a<%= bar %>e'
-};
-grunt.template.process('<%= baz %>', {data: obj}) // 'abcde'
-```
-
-### grunt.template.setDelimiters
-Set the [Lo-Dash template](http://lodash.com/docs/#template) delimiters to a predefined set in case you `grunt.util._.template` needs to be called manually.
-
-_You probably won't need to use this method, because you'll be using `grunt.template.process` which uses this method internally._
-
-Valid names:
-
-* `config` - use `<% %>` style delimiters (default)
-* `init` - use `{% %}` style delimiters (used in [init task](task_init.md) templates)
-* `user` - use `[% %]` style delimiters (not used internally in grunt)
-
-```javascript
-grunt.template.setDelimiters(name)
-```
-
-### grunt.template.addDelimiters
-Add a named set of [Lo-Dash template](http://lodash.com/docs/#template) delimiters. A few sets have already been added for your convenience, see the `grunt.template.setDelimiters` method for a list.
-
-_You probably won't need to use this method, because the built-in delimiters should be sufficient._
-
-```javascript
-grunt.template.addDelimiters(name, opener, closer)
-```
-
-## Template Helpers
-
-### grunt.template.date
-Format a date using the [dateformat](https://github.com/felixge/node-dateformat) library.
-
-```javascript
-grunt.template.date(date, format)
-```
-
-In this example, a specific date is formatted as month/day/year.
-
-```javascript
-grunt.template.date(847602000000, 'yyyy-mm-dd') // '1996-11-10'
-```
-
-### grunt.template.today
-Format today's date using the [dateformat](https://github.com/felixge/node-dateformat) library.
-
-```javascript
-grunt.template.today(format)
-```
-
-In this example, today's date is formatted as a 4-digit year.
-
-```javascript
-grunt.template.today('yyyy') // '2012'
-```
-
-_(somebody remind me to update this date every year so the docs appear current)_
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_template.md
166 docs/api_util.md
View
@@ -1,162 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.util
+The grunt source has moved!
-Miscellaneous utilities, including Lo-Dash, Async and Hooker.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-_Note: `grunt.utils` was renamed to `grunt.util` and deprecated in grunt v0.4.0. Please ensure that your custom tasks are are up-to-date._
-
-See the [util lib source](../lib/grunt/util.js) for more information.
-
-## The util API
-
-### grunt.util.kindOf
-Return the "kind" of a value. Like `typeof` but returns the internal `[[Class]]` value. Possible results are `"number"`, `"string"`, `"boolean"`, `"function"`, `"regexp"`, `"array"`, `"date"`, `"error"`, `"null"`, `"undefined"` and the catch-all `"object"`.
-
-```javascript
-grunt.util.kindOf(value)
-```
-
-### grunt.util.error
-Return a new Error instance (that can be thrown) with the appropriate message. If an Error object is specified instead of `message` that object will be returned. Also, if an Error object is specified for `origError` and grunt was run with the `--debug 9` option, the original Error stack will be dumped.
-
-```javascript
-grunt.util.error(message [, origError])
-```
-
-### grunt.util.linefeed
-The linefeed character, normalized for the current operating system. (`\r\n` on Windows, `\n` otherwise)
-
-### grunt.util.normalizelf
-Given a string, return a new string with all the linefeeds normalized for the current operating system. (`\r\n` on Windows, `\n` otherwise)
-
-```javascript
-grunt.util.normalizelf(string)
-```
-
-### grunt.util.recurse
-Recurse through nested objects and arrays, executing `callbackFunction` for each non-object value. If `continueFunction` returns `false`, a given object or value will be skipped.
-
-```javascript
-grunt.util.recurse(object, callbackFunction, continueFunction)
-```
-
-See the [config lib source](../lib/grunt/config.js) for usage examples.
-
-### grunt.util.repeat
-Return string `str` repeated `n` times.
-
-```javascript
-grunt.util.repeat(n, str)
-```
-
-### grunt.util.pluralize
-Given `str` of `"a/b"`, If `n` is `1`, return `"a"` otherwise `"b"`. You can specify a custom separator if '/' doesn't work for you.
-
-```javascript
-grunt.util.pluralize(n, str, separator)
-```
-
-### grunt.util.spawn
-Spawn a child process, keeping track of its stdout, stderr and exit code. The method returns a reference to the spawned child. When the child exits, the done function is called.
-
-```javascript
-grunt.util.spawn(options, doneFunction)
-```
-
-The `options` object has these possible properties:
-
-```javascript
-var options = {
- // The command to execute. It should be in the system path.
- cmd: commandToExecute,
- // An array of arguments to pass to the command.
- args: arrayOfArguments,
- // Additional options for the Node.js child_process spawn method.
- opts: nodeSpawnOptions,
- // If this value is set and an error occurs, it will be used as the value
- // and null will be passed as the error value.
- fallback: fallbackValue
-};
-```
-
-The done function accepts these arguments:
-
-```javascript
-function doneFunction(error, result, code) {
- // If the exit code was non-zero and a fallback wasn't specified, the error
- // object is the same as the result object.
- error
- // The result object is an object with the properties .stdout, .stderr, and
- // .code (exit code).
- result
- // When result is coerced to a string, the value is stdout if the exit code
- // was zero, the fallback if the exit code was non-zero and a fallback was
- // specified, or stderr if the exit code was non-zero and a fallback was
- // not specified.
- String(result)
- // The numeric exit code.
- code
-}
-```
-
-See the [init task source](../tasks/init.js) and the [qunit task source](../tasks/qunit.js) for usage examples.
-
-
-### grunt.util.toArray
-Given an array or array-like object, return an array. Great for converting `arguments` objects into arrays.
-
-```javascript
-grunt.util.toArray(arrayLikeObject)
-```
-
-### grunt.util.callbackify
-Normalizes both "returns a value" and "passes result to a callback" functions to always pass a result to the specified callback. If the original function returns a value, that value will now be passed to the callback, which is specified as the last argument, after all other predefined arguments. If the original function passed a value to a callback, it will continue to do so.
-
-```javascript
-grunt.util.callbackify(syncOrAsyncFunction)
-```
-
-This example might better illustrate:
-
-```javascript
-function add1(a, b) {
- return a + b;
-}
-function add2(a, b, callback) {
- callback(a + b);
-}
-
-var fn1 = grunt.util.callbackify(add1);
-var fn2 = grunt.util.callbackify(add2);
-
-fn1(1, 2, function(result) {
- console.log('1 plus 2 equals ' + result);
-});
-fn2(1, 2, function(result) {
- console.log('1 plus 2 equals ' + result);
-});
-```
-
-## Internal libraries
-
-### grunt.util.namespace
-An internal library for resolving deeply-nested properties in objects.
-
-### grunt.util.task
-An internal library for task running.
-
-
-## External libraries
-
-### grunt.util._
-[Lo-Dash](http://lodash.com/) - Tons of super-useful array, function and object utility methods.
-[Underscore.string](https://github.com/epeli/underscore.string) - Tons of string utility methods.
-
-Note that Underscore.string is mixed into `grunt.util._` but is also available as `grunt.util._.str` for methods that conflict with existing Lo-Dash methods.
-
-### grunt.util.async
-[Async](https://github.com/caolan/async) - Async utilities for node and the browser.
-
-### grunt.util.hooker
-[JavaScript Hooker](https://github.com/cowboy/javascript-hooker) - Monkey-patch (hook) functions for debugging and stuff.
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_util.md
11 docs/api_utils.md
View
@@ -1,5 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# [The grunt API](api.md) / grunt.util
+The grunt source has moved!
-_Note: `grunt.utils` was renamed to `grunt.util` and deprecated in grunt v0.4.0. Please ensure that your custom tasks are are up-to-date, and update your links to refer to the [grunt.util documentation](api_util.md)._
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
+
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/api_utils.md
55 docs/contributing.md
View
@@ -1,51 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# Contributing to grunt
+The grunt source has moved!
-If you want to make contributions to grunt, by all means, please do so. "Patches welcome."
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-## Discussing grunt
-
-Join the [freenode](http://freenode.net/) #grunt IRC channel. We've got a bot and everything.
-
-## Filing issues
-
-If something isn't working like you think it should, read the [API documentation](api.md). If it still isn't working like you think it should, [file an issue](https://github.com/cowboy/grunt/issues). If you'd like to chat directly, pop into IRC.
-
-## Cloning grunt
-
-first, ensure that you have the latest [Node.js](http://nodejs.org/) and [npm](http://npmjs.org/) installed.
-
-Fork grunt in GitHub, and clone it locally:
-
-```bash
-git clone git://github.com/YOURUSERNAME/grunt.git && cd grunt
-```
-
-To download grunt dependencies and add the development `grunt` bin script to your path:
-
-```bash
-npm install && npm link
-```
-
-## Reverting back to the "live" grunt
-
-If, for some reason, you need to revert back to the current npm grunt release, just reinstall grunt globally via:
-
-```bash
-npm install -g grunt
-```
-
-## Actually contributing
-
-In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Fork, tweak, and make pull requests.. but `grunt` grunt first:
-
-```bash
-grunt
-```
-
-_(you shouldn't see any red or yellow when you do this)_
-
-## One final note about contributing
-
-I'll be completely up-front: while you know that your idea is well-reasoned and executed, I might need to be convinced of the value of incorporating it into grunt, because it might not be immediately apparent to me. Don't lose hope! All I ask is that you include, along with your pull request, an explanation of how your code is going to improve grunt. Thanks!
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/contributing.md
17 docs/example_gruntfiles.md
View
@@ -1,13 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# Example Gruntfiles
+The grunt source has moved!
-Take a look at these example Gruntfiles to see a few of the possible variations:
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-* [Sample jQuery plugin Gruntfile](https://github.com/cowboy/grunt-jquery-example/blob/master/Gruntfile.js) (as generated by the `init:jquery` task)
-* [Sample CommonJS module Gruntfile](https://github.com/cowboy/grunt-commonjs-example/blob/master/Gruntfile.js) (as generated by the `init:commonjs` task)
-* [Sample Node.js npm module Gruntfile](https://github.com/cowboy/grunt-node-example/blob/master/Gruntfile.js) (as generated by the `init:node` task)
-* [grunt's Gruntfile](../Gruntfile.js)
-* [javascript-hooker's Gruntfile](https://github.com/cowboy/javascript-hooker/blob/master/Gruntfile.js)
-
-_(Do you have a really crazy Gruntfile? Let me know by filing an issue, and I'll try to include it here._
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/example_gruntfiles.md
21 docs/exit_codes.md
View
@@ -1,17 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# Grunt exit codes
+The grunt source has moved!
-* `1` - Generic error
-* `2` - Config file not found
-* `3` - Task failure
-* `10` - [UglifyJS](https://github.com/mishoo/UglifyJS) error
-* `11` - Banner generation error
-* `12` - Shell auto-completion rules error
-* `20` - Init error
-* `90-99` - [Nodeunit](https://github.com/caolan/nodeunit) / [QUnit](http://docs.jquery.com/QUnit) error
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-## Nodeunit / QUnit specific
-
-* `90` - Non assertion-specific error, like a timeout or JavaScript error.
-* `91-99` - 91 = 1 assertion failed, 95 = 5 assertions failed, 99 = 9 or more assertions failed (you get the idea).
+This file (if it still exists) might live at:
+https://github.com/gruntjs/grunt/blob/devel/docs/exit_codes.md
116 docs/faq.md
View
@@ -1,112 +1,10 @@
-[Grunt homepage](http://gruntjs.com/) | [Documentation table of contents](toc.md)
+Grunt: a task-based command line build tool for JavaScript projects.
+http://gruntjs.com/
-# Frequently Asked Questions
+The grunt source has moved!
-## When will I be able to use in-development feature 'X'?
-While critical bug fixes are applied to both the latest stable release as well as the in-development version of grunt, new features are usually only added to the in-development version.
+Please update your remotes and links to the new location:
+https://github.com/gruntjs/grunt
-If you want to install the latest bleeding-edge, in-development version, you can npm install `grunt@devel`. _This is something you do not want to do in a project_, as the in-development version of grunt is constantly evolving and a feature you've come to depend on may have changed between installs of `grunt@devel`, thus breaking your build.