text: #!/usr/bin/env node
  
  'use strict';
  
  // Command-line tool that parses a type expression and dumps a JSON version of the parse tree.
  var catharsis = require('../catharsis');
  var path = require('path');
  var util = require('util');
  
  var command = path.basename(process.argv[1]);
  var typeExpression = process.argv[2];
  var opts = {
  	describe: false,
  	jsdoc: false
  };
  var parsedType;
  
  function usage() {
  	console.log(util.format('Usage:\n    %s typeExpression [--jsdoc] [--describe]', command));
  }
  
  function done(err) {
  	/*eslint no-process-exit: 0 */
  	process.exit(err === undefined ? 0 : err);
  }
  
  process.argv.slice(3).forEach(function(arg) {
  	var parsedArg = arg.replace(/^\-{2}/, '');
  	if (opts[parsedArg] !== undefined) {
  		opts[parsedArg] = true;
  	} else {
  		console.error('Unknown option "%s"', arg);
  		usage();
  		done(1);
  	}
  });
  
  if (!typeExpression) {
  	usage();
  	done(1);
  } else {
  	try {
  		parsedType = catharsis.parse(typeExpression, opts);
  		if (opts.describe) {
  			parsedType = catharsis.describe(parsedType);
  		}
  	} catch (e) {
  		console.error(util.format('Unable to parse "%s" (exception follows):', typeExpression));
  		console.error(e.stack || e.message);
  		done(1);
  	}
  
  	console.log(JSON.stringify(parsedType, null, 2));
  	done();
  }
  