#!/usr/bin/env node

var optimist = require('optimist')
    .usage('Precompile handlebar templates.\nUsage: $0 [template|directory]...', {
      'f': {
        'type': 'string',
        'description': 'Output File',
        'alias': 'output'
      },
      'map': {
        'type': 'string',
        'description': 'Source Map File'
      },
      'a': {
        'type': 'boolean',
        'description': 'Exports amd style (require.js)',
        'alias': 'amd'
      },
      'c': {
        'type': 'string',
        'description': 'Exports CommonJS style, path to Handlebars module',
        'alias': 'commonjs',
        'default': null
      },
      'h': {
        'type': 'string',
        'description': 'Path to handlebar.js (only valid for amd-style)',
        'alias': 'handlebarPath',
  	    'default': ''
      },
      'k': {
        'type': 'string',
        'description': 'Known helpers',
        'alias': 'known'
      },
      'o': {
        'type': 'boolean',
        'description': 'Known helpers only',
        'alias': 'knownOnly'
      },
      'm': {
        'type': 'boolean',
        'description': 'Minimize output',
        'alias': 'min'
      },
      'n': {
        'type': 'string',
        'description': 'Template namespace',
        'alias': 'namespace',
        'default': 'Handlebars.templates'
      },
      's': {
        'type': 'boolean',
        'description': 'Output template function only.',
        'alias': 'simple'
      },
      'r': {
        'type': 'string',
        'description': 'Template root. Base value that will be stripped from template names.',
        'alias': 'root'
      },
      'p' : {
        'type': 'boolean',
        'description': 'Compiling a partial template',
        'alias': 'partial'
      },
      'd' : {
        'type': 'boolean',
        'description': 'Include data when compiling',
        'alias': 'data'
      },
      'e': {
        'type': 'string',
        'description': 'Template extension.',
        'alias': 'extension',
        'default': 'handlebars'
      },
      'b': {
        'type': 'boolean',
        'description': 'Removes the BOM (Byte Order Mark) from the beginning of the templates.',
        'alias': 'bom'
      },
      'v': {
        'type': 'boolean',
        'description': 'Prints the current compiler version',
        'alias': 'version'
      },

      'help': {
        'type': 'boolean',
        'description': 'Outputs this message'
      }
    })

    .check(function(argv) {
      if (argv.version) {
        return;
      }
    });


var argv = optimist.argv;
argv.templates = argv._;
delete argv._;

if (argv.help || (!argv.templates.length && !argv.version)) {
  optimist.showHelp();
  return;
}

return require('../dist/cjs/precompiler').cli(argv);
