#! /usr/bin/env node

const program = require('commander');
const path = require('path');
const winston = require('winston');
const inquirer = require('inquirer');

const pkg = require('../package.json');
const compile = require('./compile');
const create = require('./create');

const resolve = (input => path.resolve(process.cwd(), input));

program.version(pkg.version);
winston.cli();

program
    .command('build [input] [output]')
    .description('build a browser plugin')
    .action(function(input, output, options) {
        compile(resolve(input), resolve(output))
        .then(
            () => winston.info('Plugin compiled successfully'),
            (err) => winston.error('Error: ', err)
        );
    });

program
    .command('create [output]')
    .description('create a new plugin')
    .action(function(output, options) {
        inquirer.prompt([
            {
                name: 'title',
                message: 'Title (as displayed on GitBook.com):'
            },
            {
                name: 'name',
                message: 'Name (unique identifier for the plugin):'
            },
            {
                name: 'desc',
                message: 'Description:'
            },
            {
                name: 'github',
                message: 'GitHub repository URL:'
            },
            {
                name: 'categories',
                message: 'Categories (as displayed on GitBook.com):',
                type: 'checkbox',
                choices: [
                    'analytics',
                    'search',
                    'content'
                ]
            }
        ])
        .then(answers => {
            output = resolve(output || answers.name);
            return create(output, answers);
        })
        .then(
            () => winston.info(`Plugin created successfully in "${output}"`),
            (err) => winston.error('Error: ', err)
        );
    });

program
    .command('test [plugin]')
    .description('test specs for a plugin')
    .action(function(plugin, options) {

    });


program.parse(process.argv);

// Display help if no arguments
if (!program.args.length) program.help();

@@ -1599,16 +1599,109 @@
 content'
+,%0A                    'structure',%0A                    'social',%0A                    'visual'
 %0A       

Add more categories