1 | #!/usr/bin/env node
|
2 |
|
3 | var fs = require('fs');
|
4 | var path = require('path');
|
5 | var colors = require('colors');
|
6 | var _ = require('underscore');
|
7 | var wizard = require('../lib/app/wizard');
|
8 | var generateTemplate = require('../lib/generate-template');
|
9 | var rc = require('rc');
|
10 | var findRoot = require('find-root');
|
11 | var templateDir = __dirname + '/../lib/templates';
|
12 | var config = rc('ampersand', {
|
13 | framework: 'hapi',
|
14 | indent: 4,
|
15 | view: templateDir + '/view.js',
|
16 | router: templateDir + '/router.js',
|
17 | model: templateDir + '/model.js',
|
18 | page: templateDir + '/page.js',
|
19 | collection: templateDir + '/collection.js',
|
20 | clientfolder: 'client',
|
21 | viewfolder: 'views',
|
22 | pagefolder: 'pages',
|
23 | modelfolder: 'models',
|
24 | formsfolder: 'forms',
|
25 | collectionfolder: 'models',
|
26 | makecollection: true,
|
27 | // if it was called without the 'gen' argument we're building a new one
|
28 | // so we won't look for an application root
|
29 | approot: (process.argv[2] !== 'gen') ? process.cwd() : findRoot(process.cwd()),
|
30 | h: false,
|
31 | help: false,
|
32 | f: false,
|
33 | force: false,
|
34 | quotes: 'single'
|
35 | });
|
36 |
|
37 | // alias
|
38 | config.force = config.force || config.f;
|
39 | config.help = config.help || config.h;
|
40 |
|
41 | ['view', 'router', 'model', 'page'].forEach(function (key) {
|
42 | config[key] = path.resolve(config[key]);
|
43 | });
|
44 |
|
45 | if (config.help) {
|
46 | console.log('ampersand'.bold + ' starts a generator for building an app.');
|
47 | console.log('ampersand gen view ${name}'.bold + ' generates a view in appropriate folder in current folder (per config)');
|
48 | console.log('ampersand gen model ${name}'.bold + ' generates a model in appropriate folder in current folder (per config)');
|
49 | console.log('ampersand gen router ${optional name}'.bold + ' generates a router in client app folder in current folder (per config)');
|
50 | console.log('ampersand gen page ${name}'.bold + ' generates a page view in appropriate folder in current folder (per config)');
|
51 | process.exit(0);
|
52 | }
|
53 |
|
54 | // if no command is specified assume they want to start
|
55 | // a new app.
|
56 | if (!config._.length) {
|
57 | wizard(config);
|
58 | } else if (config._[0] === 'gen') {
|
59 | config.name = config._[1];
|
60 | generateTemplate(config);
|
61 | }
|