--- /dev/null
+#!/usr/bin/env node
+
+'use strict';
+
+process.title = 'grunt';
+
+// Especially badass external libs.
+var findup = require('findup-sync');
+var resolve = require('resolve').sync;
+
+// Internal libs.
+var options = require('../lib/cli').options;
+var completion = require('../lib/completion');
+var info = require('../lib/info');
+var path = require('path');
+
+var basedir = process.cwd();
+var gruntpath;
+
+// Do stuff based on CLI options.
+if ('completion' in options) {
+ completion.print(options.completion);
+} else if (options.version) {
+ info.version();
+} else if (options.gruntfile) { //Note: if both `gruntfile` and `base` are set, use `gruntfile`
+ basedir = path.resolve(path.dirname(options.gruntfile));
+} else if (options.base) {
+ basedir = path.resolve(options.base);
+}
+
+try {
+ gruntpath = resolve('grunt', {basedir: basedir});
+} catch (ex) {
+ gruntpath = findup('lib/grunt.js');
+ // No grunt install found!
+ if (!gruntpath) {
+ if (options.version) { process.exit(); }
+ if (options.help) { info.help(); }
+ info.fatal('Unable to find local grunt.', 99);
+ }
+}
+
+// Everything looks good. Require local grunt and run it.
+require(gruntpath).cli();