#!/usr/bin/env node // vim: set ft=javascript: 'use strict' var program = require('commander') var path = require('path') var dotenv = require('dotenv') var log = require('../lib/log') var registerCompiler = require('../lib/register-compiler') var pkg = require('../package.json') program .version(pkg.version) .option('-c, --chdir [dir]', 'Change the working directory', process.cwd()) .option('--migrations-dir ', 'Change the migrations directory name', 'migrations') .option('--compiler ', 'Use the given module to compile files') .option('-d, --date-format [format]', 'Set a date format to use') .option('-t, --template-file [filePath]', 'Set path to template file to use for new migrations', path.join(__dirname, '..', 'lib', 'template.js')) .option('-e, --extension [extension]', 'Use the given extension to create the file', '.js') .option('--extention [extension]', '. Use the given extension to create the file. Deprecated as of v1.2. Replace with -e or --extension.') .option('-g, --generator ', 'A template generator function', path.join(__dirname, '..', 'lib', 'template-generator')) .option('--env [name]', 'Use dotenv to load an environment file') .arguments('') .action(create) .parse(process.argv) if (program.extention) { console.log('create', '"--extention" argument is deprecated. Use "--extension" instead') program.extension = program.extension } // Setup environment if (program.env) { var e = dotenv.config({ path: typeof program.env === 'string' ? program.env : '.env' }) if (e && e.error instanceof Error) { throw e.error } } var _name function create (name) { // Name provided? _name = name // Change the working dir process.chdir(program.chdir) // Load compiler if (program.compiler) { registerCompiler(program.compiler) } // Load the template generator var gen = require(program.generator) gen({ name: name, dateFormat: program.dateFormat, templateFile: program.templateFile, migrationsDirectory: program.migrationsDir, extension: program.extension }, function (err, p) { if (err) { log.error('Template generation error', err.message) process.exit(1) } log('create', p) }) } if (!_name) { log.error('error', 'Migration name required') log('usage', 'migrate create ') }