[sty] main
This commit is contained in:
parent
ab22f29a5f
commit
d2395d897e
|
|
@ -21,13 +21,20 @@ along with »type2«. If not, see <http://www.gnu.org/licenses/>.
|
|||
/**
|
||||
* @author fenris
|
||||
*/
|
||||
type type_resulttree = lib_plankton.lang.type_tree<lib_plankton.lang.type_terminal_default>;
|
||||
type type_resulttree = lib_plankton.lang.type_tree<
|
||||
lib_plankton.lang.type_terminal_default
|
||||
>;
|
||||
|
||||
|
||||
/**
|
||||
* @author fenris
|
||||
*/
|
||||
type type_myreader = lib_plankton.lang.class_reader<char, lib_plankton.lang.type_terminal_default, string, type_resulttree>;
|
||||
type type_myreader = lib_plankton.lang.class_reader<
|
||||
char,
|
||||
lib_plankton.lang.type_terminal_default,
|
||||
string,
|
||||
type_resulttree
|
||||
>;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -51,46 +58,52 @@ async function main(
|
|||
args_raw : Array<string>
|
||||
) : Promise<void>
|
||||
{
|
||||
const args_handler : lib_args.class_handler = new lib_args.class_handler({
|
||||
"path": lib_args.class_argument.positional({
|
||||
"index": 0,
|
||||
"type": lib_args.enum_type.string,
|
||||
"mode": lib_args.enum_mode.replace,
|
||||
"info": "the path to the grammar file",
|
||||
"name": "path",
|
||||
}),
|
||||
"verbosity": lib_args.class_argument.volatile({
|
||||
"indicators_short": ["v"],
|
||||
"indicators_long": ["verbosity"],
|
||||
"type": lib_args.enum_type.integer,
|
||||
"mode": lib_args.enum_mode.replace,
|
||||
"default": 1,
|
||||
"info": "verbosity level",
|
||||
"name": "verbosity",
|
||||
}),
|
||||
"help": lib_args.class_argument.volatile({
|
||||
"indicators_short": ["h"],
|
||||
"indicators_long": ["help"],
|
||||
"type": lib_args.enum_type.boolean,
|
||||
"mode": lib_args.enum_mode.replace,
|
||||
"default": false,
|
||||
"info": "show help and exit",
|
||||
"name": "help",
|
||||
}),
|
||||
});
|
||||
const args_handler : lib_args.class_handler = new lib_args.class_handler(
|
||||
{
|
||||
"path": lib_args.class_argument.positional({
|
||||
"index": 0,
|
||||
"type": lib_args.enum_type.string,
|
||||
"mode": lib_args.enum_mode.replace,
|
||||
"info": "the path to the grammar file",
|
||||
"name": "path",
|
||||
}),
|
||||
"verbosity": lib_args.class_argument.volatile({
|
||||
"indicators_short": ["v"],
|
||||
"indicators_long": ["verbosity"],
|
||||
"type": lib_args.enum_type.integer,
|
||||
"mode": lib_args.enum_mode.replace,
|
||||
"default": 1,
|
||||
"info": "verbosity level",
|
||||
"name": "verbosity",
|
||||
}),
|
||||
"help": lib_args.class_argument.volatile({
|
||||
"indicators_short": ["h"],
|
||||
"indicators_long": ["help"],
|
||||
"type": lib_args.enum_type.boolean,
|
||||
"mode": lib_args.enum_mode.replace,
|
||||
"default": false,
|
||||
"info": "show help and exit",
|
||||
"name": "help",
|
||||
}),
|
||||
}
|
||||
);
|
||||
const args : Record<string, any> = args_handler.read(lib_args.enum_environment.cli, args_raw.join(" "));
|
||||
if (args["help"]) {
|
||||
if (args["help"])
|
||||
{
|
||||
process.stdout.write(
|
||||
args_handler.generate_help({
|
||||
"programname": "type2",
|
||||
"description": "reads a string from stdin and parses it according to a given grammar to an abstract syntax tree as JSON",
|
||||
"author": "kcf <fenris@folksprak.org>",
|
||||
"executable": "type2",
|
||||
})
|
||||
args_handler.generate_help(
|
||||
{
|
||||
"programname": "type2",
|
||||
"description": "reads a string from stdin and parses it according to a given grammar to an abstract syntax tree as JSON",
|
||||
"author": "kcf <fenris@folksprak.org>",
|
||||
"executable": "type2",
|
||||
}
|
||||
)
|
||||
);
|
||||
return Promise.resolve<void>(undefined);
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
lib_plankton.log.conf_push(
|
||||
(args["verbosity"] <= 0)
|
||||
? []
|
||||
|
|
@ -112,10 +125,12 @@ async function main(
|
|||
const reader : type_myreader = await generate_reader(args["path"]);
|
||||
const input_raw : string = await lib_plankton.file.read_stdin();
|
||||
const result : type_resulttree = reader.run(input_raw.split(""));
|
||||
if (result === null) {
|
||||
if (result === null)
|
||||
{
|
||||
return Promise.reject<void>(new Error("reading failed"));
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
process.stdout.write(JSON.stringify(result, undefined, "\t") + "\n");
|
||||
return Promise.resolve<void>(undefined);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue