UNPKG

2.36 kBPlain TextView Raw
1#!/usr/bin/env node
2// vim: set ft=javascript:
3'use strict'
4
5var program = require('commander')
6var path = require('path')
7var dotenv = require('dotenv')
8var log = require('../lib/log')
9var registerCompiler = require('../lib/register-compiler')
10var pkg = require('../package.json')
11
12program
13 .version(pkg.version)
14 .option('-c, --chdir [dir]', 'Change the working directory', process.cwd())
15 .option('--migrations-dir <dir>', 'Change the migrations directory name', 'migrations')
16 .option('--compiler <ext:module>', 'Use the given module to compile files')
17 .option('-d, --date-format [format]', 'Set a date format to use')
18 .option('-t, --template-file [filePath]', 'Set path to template file to use for new migrations', path.join(__dirname, '..', 'lib', 'template.js'))
19 .option('-e, --extension [extension]', 'Use the given extension to create the file', '.js')
20 .option('--extention [extension]', '. Use the given extension to create the file. Deprecated as of v1.2. Replace with -e or --extension.')
21 .option('-g, --generator <name>', 'A template generator function', path.join(__dirname, '..', 'lib', 'template-generator'))
22 .option('--env [name]', 'Use dotenv to load an environment file')
23 .arguments('<name>')
24 .action(create)
25 .parse(process.argv)
26
27if (program.extention) {
28 console.log('create', '"--extention" argument is deprecated. Use "--extension" instead')
29 program.extension = program.extension
30}
31
32// Setup environment
33if (program.env) {
34 var e = dotenv.config({
35 path: typeof program.env === 'string' ? program.env : '.env'
36 })
37 if (e && e.error instanceof Error) {
38 throw e.error
39 }
40}
41
42var _name
43function create (name) {
44 // Name provided?
45 _name = name
46
47 // Change the working dir
48 process.chdir(program.chdir)
49
50 // Load compiler
51 if (program.compiler) {
52 registerCompiler(program.compiler)
53 }
54
55 // Load the template generator
56 var gen = require(program.generator)
57 gen({
58 name: name,
59 dateFormat: program.dateFormat,
60 templateFile: program.templateFile,
61 migrationsDirectory: program.migrationsDir,
62 extension: program.extension
63 }, function (err, p) {
64 if (err) {
65 log.error('Template generation error', err.message)
66 process.exit(1)
67 }
68 log('create', p)
69 })
70}
71
72if (!_name) {
73 log.error('error', 'Migration name required')
74 log('usage', 'migrate create <name>')
75}