Skip to content

Commit 2f38b74

Browse files
committed
Merge pull request #11 from bholloway/master
yargs command line
2 parents bdaf69b + fbcc3b8 commit 2f38b74

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+2246
-2203
lines changed

bin/cli-args.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

bin/cli.js

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
/**
33
* The main command line interface for running Angularity
44
* from the npm global install.
5-
*
6-
* If no arguments are specified it will load an interactive cli menu.
75
*/
86
'use strict';
97

10-
var path = require('path'),
11-
gulp = require('gulp'),
12-
gutil = require('gulp-util'),
13-
chalk = require('chalk'),
14-
prettyTime = require('pretty-hrtime');
8+
var path = require('path'),
9+
gulp = require('gulp'),
10+
gutil = require('gulp-util'),
11+
wordwrap = require('wordwrap'),
12+
runSequence = require('run-sequence'),
13+
chalk = require('chalk'),
14+
prettyTime = require('pretty-hrtime');
1515

16-
var mainMenu = require('../lib/cli/mainMenu');
17-
require('../index');
16+
var yargs = require('./../lib/util/yargs');
1817

19-
var generator = require('../lib/generator/generator');
20-
generator.requireProjects();
18+
// TODO @bholloway menus
19+
//var mainMenu = require('../lib/cli/mainMenu');
20+
require('../index');
2121

2222
// we need to duplicate some event handlers from the gulp cli since we have bypassed it
2323
gulp.on('task_start', function (e) {
@@ -32,19 +32,42 @@ gulp.on('task_stop', function (e) {
3232
);
3333
});
3434

35-
// gulp tasks can access argv using this same method
36-
var argv = require('./cli-args').argv;
35+
// describe the top level arguments
36+
yargs.getInstance()
37+
.usage(wordwrap(2, 80)([
38+
'Angularity is an opinionated build tool for AngularJS projects.',
39+
'',
40+
'Tasks include:',
41+
yargs.listTasks().join(', ')
42+
].join('\n')))
43+
.example('$0', 'Interactive menu')
44+
.example('$0 -v', 'Display the version of angularity')
45+
.example('$0 -h <task name>', 'Get help on a particular task')
46+
.example('$0 <task name>', 'Run the given task')
47+
.describe('h', 'This help message, or help on a specific task').alias('h', '?').alias('h', 'help')
48+
.describe('version', 'Display the version of angularity').alias('version', 'v').boolean('version')
49+
.wrap(80);
3750

38-
var taskName = (!!argv._) ? argv._[0] : undefined;
51+
// find the yargs instance that is most appropriate for the given command line parameters
52+
var cliArgs = yargs.resolveArgv();
3953

40-
if (argv.version) {
54+
// show help
55+
if (cliArgs.help) {
56+
yargs
57+
.getInstance(cliArgs.taskName || cliArgs.help)
58+
.showHelp();
59+
}
60+
// run a task
61+
else if (cliArgs.taskName) {
62+
runSequence(cliArgs.taskName);
63+
}
64+
// show the version string
65+
else if (cliArgs.version) {
4166
var packagePath = path.join(__dirname, '..', 'package.json');
4267
var version = require(packagePath).version;
4368
console.log('angularity:', version);
4469
}
45-
else if (!taskName) {
46-
mainMenu.prompt();
47-
}
70+
// interactive menu
4871
else {
49-
gulp.start(gulp.hasTask(taskName) ? taskName : 'default');
50-
}
72+
mainMenu.prompt();
73+
}

index.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
// Initiate the angularity configuration,
2-
// prompt the user if a global config does not exist
3-
require('./lib/config/config');
4-
51
require('require-dir')('./tasks');

lib/cli/installMenu.js

Lines changed: 103 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,103 @@
1-
'use strict';
2-
3-
var inquirer = require('inquirer'),
4-
path = require('path'),
5-
fs = require('fs');
6-
7-
var ideTemplate = require('ide-template'),
8-
webStorm = require('../../templates/webStorm');
9-
10-
require('shelljs/global');
11-
12-
function prompt() {
13-
var menuPrompt = {
14-
type : 'list',
15-
name : 'choice',
16-
choices: ['External Tools', 'File Templates'],
17-
message: 'Choose which WebStorm settings to install.',
18-
filter : function (value) {
19-
return value.toLowerCase();
20-
}
21-
};
22-
function handleMenu(answer) {
23-
switch (answer.choice) {
24-
case 'external tools':
25-
promptExternalTools();
26-
break;
27-
case 'file templates':
28-
promptFileTemplates();
29-
break;
30-
default:
31-
throw new Error('Unrecognised choice: ' + answer.choice)
32-
}
33-
}
34-
inquirer.prompt(menuPrompt, handleMenu);
35-
}
36-
37-
function promptFileTemplates() {
38-
var menuPrompt = {
39-
type : 'list',
40-
name : 'choice',
41-
choices: ['es5', 'es6'],
42-
message: 'What Javascript version of the File Templates do you want to install?',
43-
filter : function (value) {
44-
return value.toLowerCase();
45-
}
46-
};
47-
48-
function handleMenu(answer) {
49-
var templateFolder = webStorm.copyFileTemplates(answer.choice);
50-
console.log([
51-
'',
52-
'Copied file templates to ' + templateFolder,
53-
'In WebStorm you will have angularity templates in menu File->New.'
54-
].join('\n'));
55-
}
56-
inquirer.prompt(menuPrompt, handleMenu);
57-
}
58-
59-
function promptExternalTools() {
60-
var externalToolPath = path.join(ideTemplate.webStorm.userPreferences(), 'tools', 'Angularity.xml');
61-
var hasExisting = fs.existsSync(externalToolPath);
62-
var message = hasExisting ?
63-
'You already have an External Tool setup for Angularity.' :
64-
'Setup will install External tools for running Angularity in WebStorm.';
65-
var choices = hasExisting ? ['overwrite','cancel'] : ['continue', 'cancel'];
66-
var menuPrompt = {
67-
type : 'list',
68-
name : 'choice',
69-
choices: choices,
70-
message: message,
71-
filter : function (value) {
72-
return value.toLowerCase();
73-
}
74-
};
75-
76-
function handleMenu(answer) {
77-
console.log('If you have WebStorm open, please restart it.');
78-
switch(answer.choice) {
79-
case 'continue':
80-
webStorm.generateAngularityWebStormTools();
81-
break;
82-
case 'overwrite':
83-
console.log('overriding exiting Angularity.xml');
84-
rm(externalToolPath);
85-
webStorm.generateAngularityWebStormTools();
86-
console.log([
87-
'',
88-
'Wrote WebStorm to ' + externalToolPath + '.',
89-
'In Webstorm you can launch Angularity builds in menu Tools->Angularity.'
90-
].join('\n'));
91-
break;
92-
case 'cancel':
93-
break;
94-
default:
95-
throw new Error('Unrecognised choice: ' + answer.choice)
96-
}
97-
}
98-
inquirer.prompt(menuPrompt, handleMenu);
99-
}
100-
101-
module.exports = {
102-
prompt: prompt
103-
};
1+
//'use strict';
2+
//
3+
//var inquirer = require('inquirer'),
4+
// path = require('path'),
5+
// fs = require('fs');
6+
//
7+
//var ideTemplate = require('ide-template'),
8+
// webStorm = require('../../templates/angularity/webStorm');
9+
//
10+
//require('shelljs/global');
11+
//
12+
//function prompt() {
13+
// var menuPrompt = {
14+
// type : 'list',
15+
// name : 'choice',
16+
// choices: ['External Tools', 'File Templates'],
17+
// message: 'Choose which WebStorm settings to install.',
18+
// filter : function (value) {
19+
// return value.toLowerCase();
20+
// }
21+
// };
22+
// function handleMenu(answer) {
23+
// switch (answer.choice) {
24+
// case 'external tools':
25+
// promptExternalTools();
26+
// break;
27+
// case 'file templates':
28+
// promptFileTemplates();
29+
// break;
30+
// default:
31+
// throw new Error('Unrecognised choice: ' + answer.choice)
32+
// }
33+
// }
34+
// inquirer.prompt(menuPrompt, handleMenu);
35+
//}
36+
//
37+
//function promptFileTemplates() {
38+
// var menuPrompt = {
39+
// type : 'list',
40+
// name : 'choice',
41+
// choices: ['es5', 'es6'],
42+
// message: 'What Javascript version of the File Templates do you want to install?',
43+
// filter : function (value) {
44+
// return value.toLowerCase();
45+
// }
46+
// };
47+
//
48+
// function handleMenu(answer) {
49+
// var templateFolder = webStorm.copyFileTemplates(answer.choice);
50+
// console.log([
51+
// '',
52+
// 'Copied file templates to ' + templateFolder,
53+
// 'In WebStorm you will have angularity templates in menu File->New.'
54+
// ].join('\n'));
55+
// }
56+
// inquirer.prompt(menuPrompt, handleMenu);
57+
//}
58+
//
59+
//function promptExternalTools() {
60+
// var externalToolPath = path.join(ideTemplate.webStorm.userPreferences(), 'tools', 'Angularity.xml');
61+
// var hasExisting = fs.existsSync(externalToolPath);
62+
// var message = hasExisting ?
63+
// 'You already have an External Tool setup for Angularity.' :
64+
// 'Setup will install External tools for running Angularity in WebStorm.';
65+
// var choices = hasExisting ? ['overwrite','cancel'] : ['continue', 'cancel'];
66+
// var menuPrompt = {
67+
// type : 'list',
68+
// name : 'choice',
69+
// choices: choices,
70+
// message: message,
71+
// filter : function (value) {
72+
// return value.toLowerCase();
73+
// }
74+
// };
75+
//
76+
// function handleMenu(answer) {
77+
// console.log('If you have WebStorm open, please restart it.');
78+
// switch(answer.choice) {
79+
// case 'continue':
80+
// webStorm.generateAngularityWebStormTools();
81+
// break;
82+
// case 'overwrite':
83+
// console.log('overriding exiting Angularity.xml');
84+
// rm(externalToolPath);
85+
// webStorm.generateAngularityWebStormTools();
86+
// console.log([
87+
// '',
88+
// 'Wrote WebStorm to ' + externalToolPath + '.',
89+
// 'In Webstorm you can launch Angularity builds in menu Tools->Angularity.'
90+
// ].join('\n'));
91+
// break;
92+
// case 'cancel':
93+
// break;
94+
// default:
95+
// throw new Error('Unrecognised choice: ' + answer.choice)
96+
// }
97+
// }
98+
// inquirer.prompt(menuPrompt, handleMenu);
99+
//}
100+
//
101+
//module.exports = {
102+
// prompt: prompt
103+
//};

lib/cli/mainMenu.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ var inquirer = require('inquirer'),
88
gulpUtil = require('gulp-util'),
99
fs = require('fs');
1010

11-
var config = require('../config/config'), // order is important for the global config.json
12-
generatorUtil = require('../generator/generator').util,
11+
var generatorUtil = require('../generator/generator').util,
1312
initialiseMenu = require('./initialiseMenu'),
1413
generatorMenu = require('./generatorMenu'),
1514
installMenu = require('./installMenu');

0 commit comments

Comments
 (0)