123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/usr/bin/env node
- 'use strict';
- process.title = 'grunt';
- var Liftoff = require('liftoff');
- var v8flags = require('v8flags');
- var extensions = require('interpret').jsVariants;
- var nopt = require('nopt');
- var gruntOptions = require('grunt-known-options');
- var completion = require('../lib/completion.js');
- var info = require('../lib/info.js');
- var pkg = require('../package.json');
- // Parse `gruntOptions` into a form that nopt can handle.
- var aliases = {};
- var known = {};
- Object.keys(gruntOptions).forEach(function(key) {
- var short = gruntOptions[key].short;
- if (short) {
- aliases[short] = '--' + key;
- }
- known[key] = gruntOptions[key].type;
- });
- // Parse them and return an options object.
- var options = nopt(known, aliases, process.argv, 2);
- if ('completion' in options) {
- completion.print(options.completion);
- } else if (options.version) {
- console.log('grunt-cli v' + pkg.version);
- }
- v8flags(function (err, v8flags) {
- var Grunt = new Liftoff({
- name: 'grunt',
- configName: 'Gruntfile',
- // Support a number of languages based on file extension
- extensions: extensions,
- // Flags that are v8 flags will be loaded into node instead of Gruntfile
- v8flags: v8flags
- });
- Grunt.launch({
- cwd: options.base,
- configPath: options.gruntfile,
- require: options.require,
- verbose: options.verbose
- }, function (env) {
- var tasks = options.argv.remain;
- delete options.argv;
- // No grunt install found!
- if (!env.modulePath) {
- if (options.version) {
- process.exit();
- }
- if (options.help) {
- info.help();
- }
- info.fatal('Unable to find local grunt.', 99);
- } else {
- options.gruntfile = env.configPath;
- var grunt = require(env.modulePath);
- grunt.tasks(tasks, options);
- }
- });
- });
|