Browse files

updated to latest grunt removed build info from zlib

  • Loading branch information...
1 parent 60b9c27 commit 7cd2e5f5b5dfd350a51fd746d540c854aaf50dfe @tbranyen tbranyen committed Jan 8, 2012
Showing with 296 additions and 483 deletions.
  1. +2 −1 .gitignore
  2. +6 −1 build/config.js
  3. +1 −1 build/index.js
  4. +0 −1 build/node_modules/grunt/.gitignore
  5. +0 −278 build/node_modules/grunt/LICENSE-GPL
  6. +8 −0 build/node_modules/grunt/README.md
  7. +6 −6 build/node_modules/grunt/grunt.js
  8. +43 −9 build/node_modules/grunt/lib/grunt.js
  9. +4 −0 build/node_modules/grunt/lib/grunt/cli.js
  10. +21 −1 build/node_modules/grunt/lib/grunt/config.js
  11. +18 −9 build/node_modules/grunt/lib/grunt/fail.js
  12. +2 −2 build/node_modules/grunt/lib/grunt/file.js
  13. +12 −5 build/node_modules/grunt/lib/grunt/help.js
  14. +9 −1 build/node_modules/grunt/lib/grunt/log.js
  15. +13 −5 build/node_modules/grunt/lib/grunt/task.js
  16. +1 −1 build/node_modules/grunt/lib/grunt/tasks/concat.js
  17. +2 −2 build/node_modules/grunt/lib/grunt/tasks/init.js
  18. +1 −1 build/node_modules/grunt/lib/grunt/tasks/lint.js
  19. +2 −2 build/node_modules/grunt/lib/grunt/tasks/min.js
  20. +2 −2 build/node_modules/grunt/lib/grunt/tasks/misc.js
  21. +127 −30 build/node_modules/grunt/lib/grunt/tasks/test.js
  22. +6 −0 build/node_modules/grunt/lib/util/task.js
  23. +0 −9 build/node_modules/grunt/node_modules/zlib.sync/.lock-wscript
  24. +0 −4 build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/test.cpp
  25. BIN build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/.wafpickle-7
  26. BIN build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/Release/test_1.o
  27. BIN build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/Release/testprog
  28. BIN build/node_modules/grunt/node_modules/zlib.sync/build/.wafpickle-7
  29. BIN build/node_modules/grunt/node_modules/zlib.sync/build/Release/src/node-zlib_1.o
  30. BIN build/node_modules/grunt/node_modules/zlib.sync/build/Release/zlib_bindings.node
  31. +0 −51 build/node_modules/grunt/node_modules/zlib.sync/build/c4che/Release.cache.py
  32. +0 −2 build/node_modules/grunt/node_modules/zlib.sync/build/c4che/build.config.py
  33. +0 −59 build/node_modules/grunt/node_modules/zlib.sync/build/config.log
  34. BIN build/node_modules/grunt/node_modules/zlib.sync/lib/zlib_bindings.node
  35. +10 −0 build/node_modules/grunt/test/util/task_test.js
View
3 .gitignore
@@ -1,4 +1,5 @@
dist/
npm-debug.log
node_modules/**/out
-node_modules/**/build
+.lock-wscript
+build/node_modules
View
7 build/config.js
@@ -2,7 +2,7 @@
config.init({
lint: {
- files: ["build/config.js"]
+ files: ["build/config.js", "app/modules/*.js"]
},
concat: {
@@ -22,6 +22,11 @@ config.init({
mincss: {
"dist/release/style.css": ["assets/css/style.css"]
+ },
+
+ watch: {
+ files: ["assets/**/*", "app/**/*"],
+ tasks: "lint:files concat jst"
}
});
View
2 build/index.js
@@ -7,4 +7,4 @@ grunt.tasks([], {
tasks: ["build/tasks"]
-});
+k);
View
1 build/node_modules/grunt/.gitignore
@@ -1 +0,0 @@
-/example/
View
278 build/node_modules/grunt/LICENSE-GPL
@@ -1,278 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
View
8 build/node_modules/grunt/README.md
@@ -219,3 +219,11 @@ _(more documentation coming soon)_
[configs]: https://github.com/cowboy/grunt/tree/master/template
[tasks]: https://github.com/cowboy/grunt/tree/master/lib/grunt/tasks
+
+## Release History
+Nothing official yet...
+
+## License
+Copyright (c) 2012 "Cowboy" Ben Alman
+Licensed under the MIT license.
+<http://benalman.com/about/license/>
View
12 build/node_modules/grunt/grunt.js
@@ -3,11 +3,11 @@ config.init({
meta: {
name: 'grunt',
version: '0.1.0',
- description: 'A command line build tool for JavaScript projects..',
- homepage: 'http://github.com/cowboy/grunt',
+ description: 'A command line build tool for JavaScript projects.',
+ homepage: 'https://github.com/cowboy/grunt',
author: '"Cowboy" Ben Alman',
- license: ['MIT', 'GPL'],
- copyright: 'Copyright (c) 2011 "Cowboy" Ben Alman',
+ license: ['MIT'],
+ copyright: 'Copyright (c) 2012 "Cowboy" Ben Alman',
repository: 'git://github.com/cowboy/grunt.git'
},
concat: {},
@@ -32,11 +32,11 @@ config.init({
noarg: true,
sub: true,
undef: true,
+ boss: true,
eqnull: true,
node: true
},
globals: {
- setTimeout: true, // temp hack for https://github.com/jshint/jshint/issues/292
grequire: true,
urequire: true,
extraspath: true,
@@ -54,4 +54,4 @@ config.init({
});
// Default task.
-task.registerTask('default', 'lint:files test:files');
+task.registerTask('default', 'lint test');
View
52 build/node_modules/grunt/lib/grunt.js
@@ -1,6 +1,3 @@
-// Requiring this here will modify String prototype everywhere.
-require('colors');
-
var path = require('path');
// Change execution directory to the current working directory.
@@ -22,12 +19,51 @@ global.option = grequire('option');
global.log = grequire('log');
global.verbose = log.verbose;
+// Disable colors if --no-colors was passed.
+function initColors() {
+ var methods = Object.keys(String.prototype);
+ // Requiring this here will modify String prototype everywhere.
+ require('colors');
+
+ // Disable colors.
+ if (option('no-color')) {
+ // Override "colors".
+ Object.keys(String.prototype).filter(function(method) {
+ // Filter out methods that existed before "colors" was required.
+ return methods.indexOf(method) === -1;
+ }).forEach(function(method) {
+ // Replace each new method with a function that just returns `this`.
+ String.prototype.__defineGetter__(method, function() { return this; });
+ });
+
+ // Override console.log (nodeunit, maybe others).
+ console._log = console.log;
+ console.log = function() {
+ var args = Array.prototype.map.call(arguments, function(value) {
+ if (Object.prototype.toString.call(value) === '[object String]') {
+ return value.replace(/\033\[[\d;]+m/g, '');
+ }
+ return value;
+ });
+ console._log.apply(console, args);
+ };
+ }
+}
+
// Expose the task interface. I've never called this manually, and have no idea
// how it will work. But it might.
exports.tasks = function(tasks, options, done) {
// Update options with passed-in options.
option.init(options);
+ // Init colors.
+ initColors();
+
+ // Load and display help if the user did --help.
+ if (options.help) {
+ grequire('help');
+ }
+
// A little header stuff.
verbose.header('Initializing').writeflags(option.flags(), 'Command-line options');
@@ -45,7 +81,7 @@ exports.tasks = function(tasks, options, done) {
// Report, etc when all tasks have completed.
task.options({
error: function(e) {
- fail.warn(e.message);
+ fail.warn(e.message, 3);
},
done: function() {
// Output a final fail / success report.
@@ -62,14 +98,12 @@ exports.tasks = function(tasks, options, done) {
};
// This is only executed when run via command line.
-exports.cli = function() {
+exports.cli = function(options) {
// Parse task list and options from the command line.
var cli = grequire('cli');
- // Load and display help if the user did --help.
- if (cli.options.help) {
- grequire('help');
- }
+ // CLI-parsed options override any passed-in "default" options.
+ _.defaults(cli.options, options);
// Run tasks.
exports.tasks(cli.tasks, cli.options);
View
4 build/node_modules/grunt/lib/grunt/cli.js
@@ -8,6 +8,10 @@ var options = exports.optlist = {
info: 'Display this help text.',
type: Boolean
},
+ color: {
+ info: 'Colored output (default). For no colors, use --no-color.',
+ type: Boolean
+ },
config: {
short: 'c',
info: 'Specify an alternate "grunt.js" config file.',
View
22 build/node_modules/grunt/lib/grunt/config.js
@@ -3,17 +3,37 @@ var namespace = urequire('namespace');
// The actual config data.
var data;
+// Recursively expand config directives.
+function expandConfig(value) {
+ var parts;
+ if (value instanceof Array) {
+ // If value is an array, recurse.
+ return value.map(expandConfig);
+ } else if (typeof value === 'string') {
+ // If value is a <config:???> directive, expand it if possible.
+ parts = task.getDirectiveParts(value) || [];
+ return parts[0] === 'config' ? task.directive(value) : value;
+ } else {
+ // Neither array or string. Just return the value.
+ return value;
+ }
+}
+
// Get/set config data. If data hasn't been set, return null. If value was
// passed, set value. If props string wasn't passed, return all data. Otherwise,
// return the prop's value (execute as a directive, when necessary).
exports = module.exports = function(props, value) {
if (!data) {
+ // No config data exists.
return null;
} else if (arguments.length === 2) {
+ // Two arguments were passed, set the property's value.
return namespace.set(data, props, value);
} else if (props) {
- return task.directive(namespace.get(data, props));
+ // A property string was passed, get that property's value.
+ return expandConfig(namespace.get(data, props));
} else {
+ // Nothing was passed. Return the actual config data.
return data;
}
};
View
27 build/node_modules/grunt/lib/grunt/fail.js
@@ -1,11 +1,20 @@
-// Pretty colors.
-var tags = {
- warn: ['<'.red + 'WARN'.yellow + '>'.red, '</'.red + 'WARN'.yellow + '>'.red],
- fatal: ['<'.red + 'FATAL'.yellow + '>'.red, '</'.red + 'FATAL'.yellow + '>'.red]
-};
+// Error codes
+// 1. Generic error.
+// 2. Config file not found.
+// 3. Generic task failed.
+// 10. Uglify-JS error.
+// 11. Banner generation error.
+// 20. Init error.
+// 61-69. Nodeunit errors.
// DRY it up!
function writeln(e, mode) {
+ log.muted = false;
+ // Pretty colors.
+ var tags = {
+ warn: ['<'.red + 'WARN'.yellow + '>'.red, '</'.red + 'WARN'.yellow + '>'.red],
+ fatal: ['<'.red + 'FATAL'.yellow + '>'.red, '</'.red + 'FATAL'.yellow + '>'.red]
+ };
var msg = String(e.message || e) + '\x07'; // Beep!
if (mode === 'warn' && !option('silentforce')) {
msg += ' ' + (option('force') ? 'Used --force, continuing.'.underline : 'Use --force to continue.');
@@ -14,23 +23,23 @@ function writeln(e, mode) {
}
// A fatal error occured. Abort immediately.
-exports.fatal = function(e) {
+exports.fatal = function(e, errcode) {
writeln(e, 'fatal');
- process.exit(1);
+ process.reallyExit(typeof errcode === 'number' ? errcode : 1);
};
// Keep track of error and warning counts.
exports.errorcount = 0;
exports.warncount = 0;
// A warning ocurred. Abort immediately unless -f or --force was used.
-exports.warn = function(e) {
+exports.warn = function(e, errcode) {
exports.warncount++;
writeln(e, 'warn');
// If -f or --force aren't used, stop script processing.
if (!option('force') && !option('silentforce')) {
log.writeln().fail('Aborted due to warnings.');
- process.exit(1);
+ process.reallyExit(typeof errcode === 'number' ? errcode : 2);
}
};
View
4 build/node_modules/grunt/lib/grunt/file.js
@@ -9,8 +9,8 @@ exports.expand = function() {
var patterns = arguments[0] instanceof Array ? arguments[0] : [].slice.call(arguments);
// Generate a should-be-unique number.
var uid = +new Date();
- // Return a uniqued array of matching file paths.
- return _(patterns).chain().map(function(pattern) {
+ // Return a flattened, uniqued array of matching file paths.
+ return _(patterns).chain().flatten().map(function(pattern) {
// Just return the pattern if it's an internal directive.
if (task.getDirectiveParts(pattern)) { return pattern; }
// Otherwise, expand paths.
View
17 build/node_modules/grunt/lib/grunt/help.js
@@ -1,3 +1,4 @@
+var path = require('path');
var optlist = grequire('cli').optlist;
task.init(true);
@@ -14,6 +15,9 @@ var opts = Object.keys(optlist).map(function(long) {
var tasks = Object.keys(task._tasks).map(function(name) {
col1len = Math.max(col1len, name.length);
var info = task._tasks[name].info;
+ if (task._tasks[name].basic) {
+ info += ' *';
+ }
return [name, info];
});
@@ -45,7 +49,7 @@ log.writeln('grunt: a command line build tool for JavaScript projects.');
// Actually write out help screen.
log.header('Usage');
-log.writeln(' grunt [options] [task] ...');
+log.writeln(' ' + path.basename(process.argv[1]) + ' [options] [task [task ...]]');
log.header('Options');
opts.forEach(writeln);
@@ -54,9 +58,12 @@ log.header('Tasks');
tasks.forEach(writeln);
log.writeln();
-log.writeln('Tasks run in the order specified. Arguments may be passed to tasks that accept them');
-log.writeln('by using semicolons, like "lint:files".');
-log.writeln();
-log.writeln('* Passing no arguments runs this task once for each of its config sub-properties.');
+[
+ 'Tasks run in the order specified. Arguments may be passed to tasks that accept',
+ 'them by using semicolons, like "lint:files". Tasks marked with * are "basic',
+ 'tasks" and will iterate over config sub-properties if no argument is specified.',
+ '',
+ 'For more information, see https://github.com/cowboy/grunt'
+].forEach(log.writeln, log);
process.exit();
View
10 build/node_modules/grunt/lib/grunt/log.js
@@ -1,6 +1,9 @@
// Temporarily suppress output.
var suppressOutput;
+// Allow external muting of output.
+exports.muted = false;
+
// True once anything has actually been logged.
var hasLogged;
@@ -11,7 +14,7 @@ process.stdout = process.stderr;
// Write output.
exports.write = function(msg) {
// Actually write output.
- if (!suppressOutput) {
+ if (!exports.muted && !suppressOutput) {
hasLogged = true;
process.stdout.write(msg || '');
}
@@ -41,6 +44,11 @@ exports.header = function(msg) {
if (hasLogged) { this.writeln(); }
return this.writeln(msg.underline);
};
+exports.subhead = function(msg) {
+ // Skip line before subhead, but not if subhead is the very first line output.
+ if (hasLogged) { this.writeln(); }
+ return this.writeln(msg.bold);
+};
// Display flags in verbose mode.
exports.writeflags = function(obj, prefix) {
View
18 build/node_modules/grunt/lib/grunt/task.js
@@ -14,11 +14,16 @@ exports.registerTask = function(name, info, fn) {
registry.tasks.push(name);
// Register task.
parent.registerTask.apply(this, arguments);
+ // This task, now that it's been registered.
+ var task = this._tasks[name];
// Override task function.
- var _fn = this._tasks[name].fn;
- this._tasks[name].fn = function() {
- // A little logging.
- log.header('Running "' + this.nameArgs + '"' +
+ var _fn = task.fn;
+ task.fn = function() {
+ // If this task was an alias or a basic task called without arguments,
+ // only log if in verbose mode.
+ var logger = _fn.alias || (task.basic && arguments.length === 0) ? verbose : log;
+ // Actually log.
+ logger.header('Running "' + this.nameArgs + '"' +
(this.name !== this.nameArgs ? ' (' + this.name + ')' : '') + ' task');
// Actually run the task.
return _fn.apply(this, arguments);
@@ -40,6 +45,7 @@ exports.registerBasicTask = function(name, info, fn) {
// Call original task function, passing in only the stuff you really care about.
fn.call(this, config(prop), arg);
});
+ this._tasks[name].basic = true;
};
// Override built-in registerHelper to use the registry.
@@ -119,6 +125,8 @@ exports.init = function(nofatal) {
loadTask(configfile, 'config file');
} else if (option('config')) {
// If --config override was specified and it doesn't exist, complain.
- fail.fatal('Unable to find "' + configfile + '" config file.');
+ fail.fatal('Unable to find "' + configfile + '" config file.', 2);
+ } else if (!option('help')) {
+ fail.fatal('Unable to find "grunt.js" config file. Do you need any --help?', 2);
}
};
View
2 build/node_modules/grunt/lib/grunt/tasks/concat.js
@@ -2,7 +2,7 @@
// TASKS
// ============================================================================
-task.registerBasicTask('concat', 'Concatenate files.*', function(data, name) {
+task.registerBasicTask('concat', 'Concatenate files.', function(data, name) {
// Concat specified files.
var errorcount = fail.errorcount;
var files = file.expand(data);
View
4 build/node_modules/grunt/lib/grunt/tasks/init.js
@@ -14,12 +14,12 @@ task.registerTask('init', 'Create project scaffolding in the current directory.'
// Abort if a valid template wasn't specified.
if (!name || templates.indexOf(name) === -1) {
- fail.fatal('A valid template (' + templates.join(', ') + ') must be specified.');
+ fail.fatal('A valid template (' + templates.join(', ') + ') must be specified.', 20);
}
// Abort if the current directory isn't empty!
if (fs.readdirSync(process.cwd()).length > 0) {
- fail.warn('The current directory is not empty.');
+ fail.warn('The current directory is not empty.', 20);
}
// TODO: read data.
View
2 build/node_modules/grunt/lib/grunt/tasks/lint.js
@@ -4,7 +4,7 @@ var jshint = require('jshint').JSHINT;
// TASKS
// ============================================================================
-task.registerBasicTask('lint', 'Validate files with JSHint.*', function(data, name) {
+task.registerBasicTask('lint', 'Validate files with JSHint.', function(data, name) {
// Get flags and globals.
var options = config('jshint.options');
var globals = config('jshint.globals');
View
4 build/node_modules/grunt/lib/grunt/tasks/min.js
@@ -5,7 +5,7 @@ var zlib = require('zlib.sync');
// TASKS
// ============================================================================
-task.registerBasicTask('min', 'Minify files with UglifyJS.*', function(data, name) {
+task.registerBasicTask('min', 'Minify files with UglifyJS.', function(data, name) {
var errorcount = fail.errorcount;
var files = file.expand(data);
// Get banner, if specified. It would be nice if UglifyJS supported ignoring
@@ -62,7 +62,7 @@ task.registerHelper('uglify', function(src, options) {
verbose.or.write(msg);
pos = '['.red + ('L' + e.line).yellow + ':'.red + ('C' + e.col).yellow + ']'.red;
log.error().writeln(pos + ' ' + (e.message + ' (position: ' + e.pos + ')').yellow);
- fail.warn('UglifyJS found errors.');
+ fail.warn('UglifyJS found errors.', 10);
}
});
View
4 build/node_modules/grunt/lib/grunt/tasks/misc.js
@@ -30,10 +30,10 @@ task.registerHelper('banner', function(prop) {
banner = '';
verbose.error();
log.error(e.message);
- fail.warn('Handlebars found errors.');
+ fail.warn('Handlebars found errors.', 11);
}
} else {
- fail.warn('No "' + prop + '" banner template defined.');
+ fail.warn('No "' + prop + '" banner template defined.', 11);
banner = '';
}
return banner;
View
157 build/node_modules/grunt/lib/grunt/tasks/test.js
@@ -1,45 +1,142 @@
var path = require('path');
var nodeunit = require('nodeunit');
-
-// Ugh. Monkey patching nodeunit so that arbitrary code (like the next task)
-// can be run when it's done testing. Good times.
-// https://github.com/caolan/nodeunit/pull/85
-// https://github.com/caolan/nodeunit/pull/118
-nodeunit._done = function() {/*nothing*/};
-nodeunit._runFiles = nodeunit.runFiles;
-nodeunit.runFiles = function(files, options) {
- options._done = options.done;
- options.done = function() {
- var result = this._done.apply(this, arguments);
- nodeunit._done.apply(this, arguments);
- return result;
- };
- return this._runFiles(files, options);
-};
+var nodeunitUtils = require('nodeunit/lib/utils');
// ============================================================================
-// TASKS
+// CUSTOM NODEUNIT REPORTER
// ============================================================================
-task.registerBasicTask('test', 'Run unit tests.*', function(data, name) {
- // The actual nodeunit reporter. Use "default" if --verbose, and "minimal"
- // if not.
- var reporter = nodeunit.reporters[option('verbose') ? 'default' : 'minimal'];
+// Keep track of the last-started module.
+var currentModule;
+// Keep track of the last-started test(s).
+var unfinished = {};
+
+// If Nodeunit explodes because a test was missing test.done(), handle it.
+process.on('exit', function() {
+ var len = Object.keys(unfinished).length;
+ // If there are unfinished tests, tell the user why Nodeunit killed grunt.
+ if (len > 0) {
+ log.muted = false;
+ verbose.error().or.writeln('F'.red);
+ log.error('Incomplete tests/setups/teardowns:');
+ Object.keys(unfinished).forEach(log.error, log);
+ fail.fatal('A test was missing test.done(), so nodeunit exploded. Sorry!',
+ Math.min(99, 90 + len));
+ }
+});
+
+// Keep track of failed assertions for pretty-printing.
+var failedAssertions = [];
+function logFailedAssertions() {
+ var assertion;
+ // Print each assertion error + stack.
+ while (assertion = failedAssertions.shift()) {
+ nodeunitUtils.betterErrors(assertion);
+ verbose.or.error(assertion.testName);
+ if (assertion.error.name === 'AssertionError' && assertion.message) {
+ log.error('AssertionMessage: ' + assertion.message.magenta);
+ }
+ log.error(assertion.error.stack.replace(/:(.*?\n)/, '$1'.magenta) + '\n');
+ }
+}
- // Nodeunit tests run asynchronously!
- var done = this.async();
+// Define our own Nodeunit reporter.
+nodeunit.reporters.grunt = {
+ info: 'Grunt reporter',
+ run: function(files, options, callback) {
+ var opts = {
+ // No idea.
+ testspec: undefined,
+ // Executed when the first test in a file is run. If no tests exist in
+ // the file, this doesn't execute.
+ moduleStart: function(name) {
+ // Keep track of this so that moduleDone output can be suppressed in
+ // cases where a test file contains no tests.
+ currentModule = name;
+ verbose.subhead('Testing ' + name).or.write('Testing ' + name);
+ },
+ // Executed after a file is done being processed. This executes whether
+ // tests exist in the file or not.
+ moduleDone: function(name) {
+ // Abort if no tests actually ran.
+ if (name !== currentModule) { return; }
+ // Print assertion errors here, if verbose mode is disabled.
+ if (!option('verbose')) {
+ if (failedAssertions.length > 0) {
+ log.writeln();
+ logFailedAssertions();
+ } else {
+ log.ok();
+ }
+ }
+ },
+ // Executed before each test is run.
+ testStart: function(name) {
+ // Keep track of the current test, in case test.done() was omitted
+ // and Nodeunit explodes.
+ unfinished[name] = name;
+ verbose.write(name + '...');
+ // Mute output, in cases where a function being tested logs through
+ // grunt (for testing grunt internals).
+ log.muted = true;
+ },
+ // Executed after each test and all its assertions are run.
+ testDone: function(name, assertions) {
+ delete unfinished[name];
+ // Un-mute output.
+ log.muted = false;
+ // Log errors if necessary, otherwise success.
+ if (assertions.failures()) {
+ assertions.forEach(function(ass) {
+ if (ass.failed()) {
+ ass.testName = name;
+ failedAssertions.push(ass);
+ }
+ });
+ if (option('verbose')) {
+ log.error();
+ logFailedAssertions();
+ } else {
+ log.write('F'.red);
+ }
+ } else {
+ verbose.ok().or.write('.');
+ }
+ },
+ // Executed when everything is all done.
+ done: function (assertions) {
+ if (assertions.failures()) {
+ fail.warn(assertions.failures() + '/' + assertions.length +
+ ' assertions failed (' + assertions.duration + 'ms)',
+ Math.min(99, 90 + assertions.failures()));
+ } else {
+ verbose.writeln();
+ log.ok(assertions.length + ' assertions passed (' +
+ assertions.duration + 'ms)');
+ }
+ // Tell the task manager we're all done.
+ callback(); // callback(assertions.failures() === 0);
+ }
+ };
- // When testing is done, continue processing other tasks. See the delightful
- // monkey patch at the top of this file.
- nodeunit._done = function(arr) {
- done(arr.failures() === 0);
- };
+ // Nodeunit needs absolute paths.
+ var paths = files.map(function (filepath) {
+ return path.join(process.cwd(), filepath);
+ });
+ nodeunit.runFiles(paths, opts);
+ }
+};
+
+// ============================================================================
+// TASKS
+// ============================================================================
+task.registerBasicTask('test', 'Run unit tests.', function(data, name) {
// File paths.
var filepaths = file.expand(data);
// Clear all tests' cached require data, in case this task is run inside a
// "watch" task loop.
file.clearRequireCache(filepaths);
- // Run test(s).
- reporter.run(filepaths);
+ // Run test(s)... asynchronously!
+ nodeunit.reporters.grunt.run(filepaths, {}, this.async());
});
View
6 build/node_modules/grunt/lib/util/task.js
@@ -122,6 +122,7 @@
tasks = this.parseArgs([fn]);
// This task function just runs the specified tasks.
fn = this.run.bind(this, fn);
+ fn.alias = true;
// Generate an info string if one wasn't explicitly passed.
if (!info) {
info = 'Alias for "' + tasks.join(' ') + '" task' +
@@ -134,6 +135,11 @@
return this;
};
+ // Is the specified task an alias?
+ Task.prototype.isTaskAlias = function(name) {
+ return !!this._tasks[name].fn.alias;
+ };
+
// Rename a task. This might be useful if you want to override the default
// behavior of a task, while retaining the old name. This is a billion times
// easier to implement than some kind of in-task "super" functionality.
View
9 build/node_modules/grunt/node_modules/zlib.sync/.lock-wscript
@@ -1,9 +0,0 @@
-argv = ['/usr/local/bin/node-waf', 'configure', 'build']
-blddir = '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync/build'
-commands = {'dist': 0, 'configure': True, 'distcheck': 0, 'install': 0, 'build': True, 'clean': 0, 'distclean': 0, 'check': 0, 'uninstall': 0}
-cwd = '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync'
-environ = {'npm_config_color': 'true', 'rvm_niceness': '', 'rvm_version': '1.8.4', 'rvm_action': '', 'rvm_remove_flag': '', 'npm_config_searchopts': '', 'rvm_ruby_release_version': '', 'npm_config_group': '20', 'npm_package_homepage': 'https://github.com/kkaefer/node-zlib', 'npm_config_browser': 'open', 'rvm_make_flags': '', 'rvm_tmp_path': '/Users/timbranyen/.rvm/tmp', 'npm_config_global': '', 'rvm_ruby_repo_url': '', 'rvm_bin_flag': '', 'SHELL': '/bin/zsh', 'npm_package_parent_name': 'grunt', 'rvm_ruby_major_version': '', 'npm_config_pre': '', 'rvm_ruby_patch': '', 'rvm_head_flag': '', 'rvm_repos_path': '/Users/timbranyen/.rvm/repos', 'rvm_ruby_alias': '', 'npm_config_logfd': '2', 'rvm_ruby_version': '', 'rvm_gemsets_path': '/Users/timbranyen/.rvm/gemsets', 'rvm_gems_cache_path': '/Users/timbranyen/.rvm/gems/cache', 'npm_config_argv': '{"remain":[],"cooked":["rebuild"],"original":["rebuild"]}', 'npm_config_version': '', 'npm_package_scripts_preinstall': 'node-waf clean || (exit 0); node-waf configure build', 'rvm_lib_path': '/Users/timbranyen/.rvm/lib', 'rvm_ruby_user_tag': '', 'rvm_user_path': '/Users/timbranyen/.rvm/user', 'npm_config_init_version': '0.0.0', 'npm_lifecycle_event': 'preinstall', 'rvm_docs_path': '/Users/timbranyen/.rvm/docs', 'rvm_ruby_mode': '', 'rvm_ree_options': '', 'rvm_ruby_bits': '', 'npm_config_init_author_name': '', 'rvm_rubies_path': '/Users/timbranyen/.rvm/rubies', 'npm_package_path': '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync', 'npm_config_yes': '', 'rvm_gems_path': '/Users/timbranyen/.rvm/gems', 'npm_config_usage': '', 'npm_package_description': 'Simple, synchronous deflate/inflate for buffers', 'npm_config_logprefix': 'true', 'rvm_install_args': '', 'npm_config_ignore': '', 'rvm_archive_extension': '', 'npm_config_ca': '"-----BEGIN CERTIFICATE-----\\nMIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC\\nVVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x\\nIjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w\\nbUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y\\nMTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV\\nBAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj\\nYXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA\\naXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE\\nOgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz\\nGn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl\\ny0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC\\nl7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv\\nyNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl\\nZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op\\n-----END CERTIFICATE-----"', 'npm_config_globalconfig': '/usr/local/etc/npmrc', 'npm_package_depth': '2', 'rvm_patches_path': '/Users/timbranyen/.rvm/patches', 'rvm_gemstone_package_file': '', 'npm_config_parseable': '', 'rvm_path': '/Users/timbranyen/.rvm', 'rvm_ruby_global_gems_path': '', 'npm_config_userignorefile': '/Users/timbranyen/.npmignore', 'USER': 'timbranyen', 'rvm_examples_path': '/Users/timbranyen/.rvm/examples', 'npm_package_author_name': 'Konstantin K\xc3\xa4fer', 'rvm_gemset_separator': '', 'rvm_expanding_aliases': '', 'npm_package_realPath': '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync', 'SITE_CONTENT_KEY': 'd41d8cd98f00b204e9800998ecf8427e', 'rvm_ruby_name': '', 'rvm_nightly_flag': '', 'rvm_prior_cc': '', 'rvm_patch_names': '', 'npm_config_init_author_url': '', 'DISPLAY': '/tmp/launch-c4Bgjo/org.x:0', 'rvm_sdk': '', 'npm_config_cache': '/Users/timbranyen/.npm', 'rvm_llvm_flag': '', 'rvm_ruby_gem_home': '', 'rvm_dump_environment_flag': '', 'npm_config_email': 'tim@tabdeveloper.com', 'rvm_verbose_flag': '0', 'rvm_only_path_flag': '', 'rvm_gemset_name': '', 'rvm_script_name': '', 'npm_config_proxy': '', 'rvm_debug_flag': '0', 'npm_config_umask': '022', 'npm_config_depth': 'null', 'npm_config_shell': '/bin/zsh', 'rvm_ruby_make_install': '', 'rvm_ruby_aliases': '', 'npm_config_long': '', 'npm_config_editor': 'vim', 'rvm_clang_flag': '', 'npm_config_always_auth': '', 'npm_config_prefix': '/usr/local', 'npm_package_repository_type': 'git', 'npm_config_npat': '', 'rvm_alias_expanded': '', 'rvm_archives_path': '/Users/timbranyen/.rvm/archives', 'rvm_trace_flag': '', 'npm_config_searchsort': 'name', 'npm_package_author_email': 'kkaefer@gmail.com', 'npm_lifecycle_script': 'node-waf clean || (exit 0); node-waf configure build', 'rvm_ruby_strings': '', 'rvm_help_path': '/Users/timbranyen/.rvm/help', 'rvm_environments_path': '/Users/timbranyen/.rvm/environments', 'COMMAND_MODE': 'unix2003', 'npm_config_save': '', 'rvm_proxy': '', 'rvm_man_path': '/Users/timbranyen/.rvm/man', 'TERM_PROGRAM_VERSION': '299', 'rvm_ruby_gem_path': '', 'npm_config_rollback': 'true', 'rvm_ruby_load_path': '', 'npm_package_repository_url': 'git://github.com/kkaefer/node-zlib.git', 'rvm_gemstone_url': '', 'rvm_ruby_selected_flag': '', 'HOME': '/Users/timbranyen', 'rvm_ruby_binary': '', 'rvm_ruby_repo_branch': '', 'TERM_PROGRAM': 'Apple_Terminal', 'LANG': 'en_US.UTF-8', 'rvm_patch_original_pwd': '', 'Apple_PubSub_Socket_Render': '/tmp/launch-0G3OIZ/Render', 'rvm_ruby_tag': '', 'rvm_quiet_flag': '', 'npm_config_registry': 'https://registry.npmjs.org/', 'npm_config_unicode': 'true', 'npm_config_production': '', 'rvm_parse_break': '', 'rvm_install_on_use_flag': '', 'rvm_ruby_revision': '', '_': '/usr/local/bin/node-waf', 'rvm_usr_path': '/Users/timbranyen/.rvm/usr', 'npm_config_searchexclude': '', 'npm_config_loglevel': 'http', 'rvm_ruby_package_name': '', 'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'rvm_prefix': '/Users/timbranyen', 'rvm_docs_type': '', 'npm_config_strict_ssl': 'true', 'rvm_user_install_flag': '1', 'rvm_ruby_interpreter': '', 'rvm_sticky_flag': '', 'TERM_SESSION_ID': '1E367085-8900-4221-9D2E-07339D5319D9', 'npm_package_main': './lib/zlib', 'npm_config_tag': 'latest', 'npm_package_licenses_0_type': 'BSD', 'rvm_wrapper_name': '', 'rvm_default_flag': '', 'rvm_system_flag': '', 'npm_config_globalignorefile': '/usr/local/etc/npmignore', 'rvm_src_path': '/Users/timbranyen/.rvm/src', 'rvm_configure_flags': '', 'rvm_file_name': '', 'npm_config_force': '', 'LOGNAME': 'timbranyen', 'npm_config_user': '', 'rvm_gemdir_flag': '', 'npm_config_tmp': '/var/folders/x6/bsdzdy515rz6lpfd4xd43q9h0000gn/T', 'rvm_scripts_path': '/Users/timbranyen/.rvm/scripts', 'rvm_ruby_configure': '', 'npm_package_name': 'zlib.sync', 'npm_config_userconfig': '/Users/timbranyen/.npmrc', 'npm_package_engines_node': '>=0.2.0', 'rvm_ruby_sha': '', 'npm_config_dev': '', 'rvm_error_message': '', 'npm_config_rebuild_bundle': 'true', 'npm_config_npaturl': 'http://npat.npmjs.org/', 'npm_config_username': 'tbranyen', 'PATH': '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync/node_modules/.bin:/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/.bin:/Users/timbranyen/git/backbone-boilerplate/build/node_modules/.bin:/usr/local/bin:/Users/timbranyen/.scripts:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/timbranyen/.rvm/bin', 'rvm_archflags': '', 'npm_config_coverage': '', 'rvm_ruby_home': '', '__CF_USER_TEXT_ENCODING': '0x1F5:0:0', 'npm_config_proprietary_attribs': 'true', 'rvm_ruby_require': '', 'npm_config_node_version': '0.6.6', 'npm_config_onload_script': '', 'VERSIONER_PYTHON_VERSION': '2.7', 'npm_config_link': '', 'npm_config_description': 'true', 'npm_config_message': '%s', 'npm_config_bindist': '0.6-ares1.7.5-DEV-evundefined-openssl0.9.8r-v83.6.6.14-darwin-x64-11.2.0', 'rvm_ruby_minor_version': '', 'rvm_delete_flag': '', 'rvm_ruby_irbrc': '', 'rvm_log_path': '/Users/timbranyen/.rvm/log', 'rvm_reload_flag': '0', 'rvm_ruby_string': '', 'rvm_ruby_url': '', 'rvm_loaded_flag': '1', 'npm_config_viewer': 'man', 'npm_package_link': 'undefined', 'rvm_ruby_file': '', 'rvm_bin_path': '/Users/timbranyen/.rvm/bin', 'npm_config_showlevel': '2', 'npm_config_unsafe_perm': 'true', 'SSH_AUTH_SOCK': '/tmp/launch-hovvC5/Listeners', 'rvm_ruby_patch_level': '', 'TERM': 'xterm-256color', 'rvm_user_flag': '', 'EDITOR': 'vim', 'rvm_ruby_package_file': '', 'rvm_ruby_make': '', 'npm_package_version': '1.0.5', 'npm_config_https_proxy': '', 'npm_config_init_author_email': '', 'rvm_ruby_args': '', 'npm_package_parent_version': '0.1.0', 'npm_package_realName': 'zlib.sync', 'TMPDIR': '/var/folders/x6/bsdzdy515rz6lpfd4xd43q9h0000gn/T/', 'rvm_token': '', 'rvm_wrappers_path': '/Users/timbranyen/.rvm/wrappers', 'npm_config_bin_publish': '', 'rvm_use_flag': '', 'NODE_PATH': '/usr/local/lib/node_modules/', 'SHLVL': '2', 'PWD': '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync', 'rvm_silent_flag': '', '__array_start': '1', 'rvm_pretty_print_flag': '', 'npm_package_parent_path': '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt', 'npm_config_outfd': '1'}
-files = []
-hash = 0
-options = {'compile_targets': None, 'force': False, 'verbose': 0, 'nocache': False, 'progress_bar': 0, 'destdir': '', 'keep': False, 'zones': '', 'blddir': '', 'prefix': '/usr/local/', 'jobs': 4, 'srcdir': '', 'check_cxx_compiler': 'g++'}
-srcdir = '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync'
View
4 build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/test.cpp
@@ -1,4 +0,0 @@
-
-int main() {
- return 0;
-}
View
BIN build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/.wafpickle-7
Binary file not shown.
View
BIN .../node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/Release/test_1.o
Binary file not shown.
View
BIN .../node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/Release/testprog
Binary file not shown.
View
BIN build/node_modules/grunt/node_modules/zlib.sync/build/.wafpickle-7
Binary file not shown.
View
BIN build/node_modules/grunt/node_modules/zlib.sync/build/Release/src/node-zlib_1.o
Binary file not shown.
View
BIN build/node_modules/grunt/node_modules/zlib.sync/build/Release/zlib_bindings.node
Binary file not shown.
View
51 build/node_modules/grunt/node_modules/zlib.sync/build/c4che/Release.cache.py
@@ -1,51 +0,0 @@
-AR = '/usr/bin/ar'
-ARFLAGS = 'rcs'
-CCFLAGS = ['-g']
-CCFLAGS_MACBUNDLE = ['-fPIC']
-CCFLAGS_NODE = ['-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
-CC_VERSION = ('4', '2', '1')
-COMPILER_CXX = 'g++'
-CPP = '/usr/bin/cpp'
-CPPFLAGS_NODE = ['-D_GNU_SOURCE']
-CPPPATH_NODE = '/usr/local/include/node'
-CPPPATH_ST = '-I%s'
-CXX = ['/usr/bin/g++']
-CXXDEFINES_ST = '-D%s'
-CXXFLAGS = ['-g']
-CXXFLAGS_DEBUG = ['-g']
-CXXFLAGS_NODE = ['-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
-CXXFLAGS_RELEASE = ['-O2']
-CXXLNK_SRC_F = ''
-CXXLNK_TGT_F = ['-o', '']
-CXX_NAME = 'gcc'
-CXX_SRC_F = ''
-CXX_TGT_F = ['-c', '-o', '']
-DEST_CPU = 'x86_64'
-DEST_OS = 'darwin'
-FULLSTATIC_MARKER = '-static'
-LIBDIR = '/usr/local/lib/node_modules/'
-LIBPATH_NODE = '/usr/local/lib'
-LIBPATH_ST = '-L%s'
-LIBPATH_ZLIB = ['/usr/local/lib']
-LIB_ST = '-l%s'
-LIB_ZLIB = ['z']
-LINKFLAGS = []
-LINKFLAGS_MACBUNDLE = ['-bundle', '-undefined', 'dynamic_lookup']
-LINK_CXX = ['/usr/bin/g++']
-NODE_PATH = '/usr/local/lib/node_modules/'
-PREFIX = '/usr/local'
-PREFIX_NODE = '/usr/local'
-RANLIB = '/usr/bin/ranlib'
-RPATH_ST = '-Wl,-rpath,%s'
-SHLIB_MARKER = ''
-SONAME_ST = ''
-STATICLIBPATH_ST = '-L%s'
-STATICLIB_MARKER = ''
-STATICLIB_ST = '-l%s'
-macbundle_PATTERN = '%s.bundle'
-program_PATTERN = '%s'
-shlib_CXXFLAGS = ['-fPIC', '-compatibility_version', '1', '-current_version', '1']
-shlib_LINKFLAGS = ['-dynamiclib']
-shlib_PATTERN = 'lib%s.dylib'
-staticlib_LINKFLAGS = []
-staticlib_PATTERN = 'lib%s.a'
View
2 build/node_modules/grunt/node_modules/zlib.sync/build/c4che/build.config.py
@@ -1,2 +0,0 @@
-version = 0x105016
-tools = [{'tool': 'ar', 'tooldir': None, 'funs': None}, {'tool': 'cxx', 'tooldir': None, 'funs': None}, {'tool': 'gxx', 'tooldir': None, 'funs': None}, {'tool': 'compiler_cxx', 'tooldir': None, 'funs': None}, {'tool': 'osx', 'tooldir': None, 'funs': None}, {'tool': 'node_addon', 'tooldir': None, 'funs': None}]
View
59 build/node_modules/grunt/node_modules/zlib.sync/build/config.log
@@ -1,59 +0,0 @@
-# project noname (1.0) configured on Thu Jan 5 14:59:02 2012 by
-# waf 1.5.16 (abi 7, python 20701f0 on darwin)
-# using /usr/local/bin/node-waf configure build
-#
-
-----------------------------------------
-Setting srcdir to
-/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync
-
-----------------------------------------
-Setting blddir to
-/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync/build
-
-----------------------------------------
-Checking for program g++ or c++
- find program=['g++', 'c++'] paths=[] var='CXX'
- -> '/usr/bin/g++'
-
-----------------------------------------
-Checking for program cpp
- find program=['cpp'] paths=[] var='CPP'
- -> '/usr/bin/cpp'
-
-----------------------------------------
-Checking for program ar
- find program=['ar'] paths=[] var='AR'
- -> '/usr/bin/ar'
-
-----------------------------------------
-Checking for program ranlib
- find program=['ranlib'] paths=[] var='RANLIB'
- -> '/usr/bin/ranlib'
-
-----------------------------------------
-Checking for g++
-ok
-
-----------------------------------------
-Checking for node path
-ok /usr/local/lib/node_modules/
-
-----------------------------------------
-Checking for node prefix
-ok /usr/local
-
-----------------------------------------
-Checking for library z
-==>
-
-int main() {
- return 0;
-}
-
-<==
-[1/2] cxx: build/.conf_check_0/test.cpp -> build/.conf_check_0/testbuild/Release/test_1.o
-['/usr/bin/g++', '-g', '../test.cpp', '-c', '-o', 'Release/test_1.o']
-[2/2] cxx_link: build/.conf_check_0/testbuild/Release/test_1.o -> build/.conf_check_0/testbuild/Release/testprog
-['/usr/bin/g++', 'Release/test_1.o', '-o', '/Users/timbranyen/git/backbone-boilerplate/build/node_modules/grunt/node_modules/zlib.sync/build/.conf_check_0/testbuild/Release/testprog', '-L/usr/local/lib', '-lz']
-yes
View
BIN build/node_modules/grunt/node_modules/zlib.sync/lib/zlib_bindings.node
Binary file not shown.
View
10 build/node_modules/grunt/test/util/task_test.js
@@ -128,6 +128,16 @@ exports['Tasks'] = {
});
task.run('x y z').start();
},
+ 'Task#isTaskAlias': function(test) {
+ test.expect(2);
+ var task = this.task;
+ task.registerTask('a', 'nothing', function() {});
+ task.registerTask('b', 'nothing', function() {});
+ task.registerTask('c', 'a b');
+ test.strictEqual(task.isTaskAlias('a'), false, 'It should not be an alias.');
+ test.strictEqual(task.isTaskAlias('c'), true, 'It should be an alias.');
+ test.done();
+ },
'Task#renameTask': function(test) {
test.expect(4);
var task = this.task;

0 comments on commit 7cd2e5f

Please sign in to comment.