#!/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();