2016-06-10 00:27:04 +00:00
|
|
|
import "typings-global";
|
|
|
|
|
2016-06-13 10:57:24 +00:00
|
|
|
import * as plugins from "./smartcli.plugins";
|
2016-06-16 00:58:45 +00:00
|
|
|
import {Question} from "./smartcli.classes.interaction";
|
2016-06-10 01:10:21 +00:00
|
|
|
|
2016-06-10 00:27:04 +00:00
|
|
|
export class Smartcli {
|
2016-06-10 01:48:01 +00:00
|
|
|
argv;
|
2016-06-10 01:10:21 +00:00
|
|
|
questionsDone;
|
2016-06-10 01:48:01 +00:00
|
|
|
parseStarted;
|
|
|
|
commands;
|
2016-06-10 01:10:21 +00:00
|
|
|
questions;
|
2016-06-10 01:48:01 +00:00
|
|
|
version:string;
|
2016-06-10 01:10:21 +00:00
|
|
|
constructor(){
|
2016-06-10 01:48:01 +00:00
|
|
|
this.argv = plugins.argv;
|
2016-06-10 01:10:21 +00:00
|
|
|
this.questionsDone = plugins.q.defer();
|
2016-06-10 01:48:01 +00:00
|
|
|
this.parseStarted = plugins.q.defer();
|
2016-06-10 01:10:21 +00:00
|
|
|
}
|
2016-06-10 01:48:01 +00:00
|
|
|
addAlias(keyArg,aliasArg){
|
|
|
|
this.argv = this.argv.alias(keyArg,aliasArg);
|
|
|
|
};
|
2016-06-10 01:10:21 +00:00
|
|
|
addCommand(definitionArg:{commandName:string}){
|
|
|
|
let done = plugins.q.defer();
|
2016-06-10 02:13:23 +00:00
|
|
|
this.parseStarted.promise
|
2016-06-10 01:48:01 +00:00
|
|
|
.then(() => {
|
|
|
|
if (this.argv._.indexOf(definitionArg.commandName) == 0) {
|
2016-06-10 02:21:03 +00:00
|
|
|
done.resolve(this.argv);
|
2016-06-10 01:48:01 +00:00
|
|
|
} else {
|
2016-06-13 10:56:42 +00:00
|
|
|
done.reject(this.argv);
|
2016-06-10 01:48:01 +00:00
|
|
|
}
|
|
|
|
});
|
2016-06-10 01:10:21 +00:00
|
|
|
return done.promsise;
|
|
|
|
};
|
|
|
|
addQuestion(definitionArg:{questionString:string,questionType:string}){
|
|
|
|
|
|
|
|
};
|
2016-06-13 10:57:24 +00:00
|
|
|
addHelp(){
|
|
|
|
|
|
|
|
}
|
2016-06-10 01:10:21 +00:00
|
|
|
addVersion(versionArg:string){
|
2016-06-10 01:48:01 +00:00
|
|
|
this.version = versionArg;
|
2016-06-10 02:13:23 +00:00
|
|
|
this.addAlias("v","version");
|
|
|
|
this.parseStarted.promise
|
2016-06-10 01:48:01 +00:00
|
|
|
.then(() => {
|
2016-06-10 02:13:23 +00:00
|
|
|
if(this.argv.v){
|
|
|
|
console.log(this.version);
|
|
|
|
}
|
2016-06-10 01:48:01 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
standardTask(){
|
|
|
|
let done = plugins.q.defer();
|
2016-06-10 02:13:23 +00:00
|
|
|
this.parseStarted.promise
|
2016-06-10 01:48:01 +00:00
|
|
|
.then(() => {
|
2016-06-10 02:32:11 +00:00
|
|
|
if(this.argv._.length == 0 && !this.argv.v){
|
2016-06-16 00:58:45 +00:00
|
|
|
done.resolve(this.argv);
|
2016-06-10 01:48:01 +00:00
|
|
|
} else {
|
2016-06-16 00:58:45 +00:00
|
|
|
done.reject(this.argv);
|
2016-06-10 01:48:01 +00:00
|
|
|
};
|
|
|
|
});
|
|
|
|
return done.promise;
|
2016-06-10 01:10:21 +00:00
|
|
|
}
|
|
|
|
startParse(){
|
2016-06-10 02:13:23 +00:00
|
|
|
this.argv = this.argv.argv;
|
2016-06-10 01:48:01 +00:00
|
|
|
this.parseStarted.resolve();
|
2016-06-10 01:10:21 +00:00
|
|
|
}
|
|
|
|
|
2016-06-09 12:01:06 +00:00
|
|
|
}
|