11#! /usr/bin/env node
22
33var program = require ( 'commander' ) ;
4+ var cliPrompt = require ( 'prompt' ) ;
45
56var dasherize = require ( '../utils/string' ) . dasherize ;
67var ui = require ( '../ui' ) ;
78
9+ cliPrompt . message = '' ;
10+ cliPrompt . delimiter = '' ;
11+
12+ var promptSchema = {
13+ properties : {
14+ username : {
15+ description : 'GitHub username: ' ,
16+ message : 'A username is required.' ,
17+ required : true
18+ } ,
19+ password : {
20+ description : 'GitHub password: ' ,
21+ message : 'A password is required.' ,
22+ required : true ,
23+ hidden : true
24+ }
25+ }
26+ } ;
27+
828program
929 . arguments ( '<addonName>' )
1030 . usage ( '<addonName> -u <username> -p <password>' )
@@ -19,12 +39,29 @@ program
1939program
2040 . parse ( process . argv ) ;
2141
22- if ( program . addonName && program . username && program . password ) {
42+ function runPublishTask ( ) {
2343 require ( '../tasks/publish' ) ( {
2444 addonName : dasherize ( program . addonName ) ,
2545 username : program . username ,
2646 password : program . password
2747 } ) . catch ( ui . error ) ;
48+ }
49+
50+ if ( program . addonName ) {
51+ if ( program . username && program . password ) {
52+ runPublishTask ( ) ;
53+ } else {
54+ cliPrompt . start ( ) ;
55+ cliPrompt . get ( promptSchema , function ( error , result ) {
56+ if ( error ) {
57+ return ui . error ( error ) ;
58+ } else {
59+ program . username = result . username ;
60+ program . password = result . password ;
61+ runPublishTask ( ) ;
62+ }
63+ } ) ;
64+ }
2865} else {
2966 program . outputHelp ( ) ;
3067}
0 commit comments