faf7e12c13eaaaa19677086fd5b2f06c4bca86a5
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts   1) /*
source/main.ts   2) import {repositories.language} from './repository-language';
source/main.ts   3) import {repositories.type} from './repository-type';
source/main.ts   4) import {repositories.tag} from './repository-tag';
source/main.ts   5) import {repositories.concept} from './repository-concept';
source/main.ts   6)  */
source/main.ts   7) 
source/main.ts   8) 
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts   9) function syntaxerror() : void
source/main.ts  10) {
source/main.ts  11) 	console.error("-- wrong syntax");
source/main.ts  12) 	process.exit(1);
source/main.ts  13) }
source/main.ts  14) 
source/main.ts  15) 
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts  16) /**
source/main.ts  17)  */
source/main.ts  18) async function main(args : Array<string>) : Promise<void>
source/main.ts  19) {
source/main.ts  20) 	const command : string = args.shift();
source/main.ts  21) 	switch (command)
source/main.ts  22) 	{
source/main.ts  23) 		case "setup":
source/main.ts  24) 		{
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts  25) 			await repositories.language.setup();
source/main.ts  26) 			await repositories.type.setup();
source/main.ts  27) 			await repositories.tag.setup();
source/main.ts  28) 			await repositories.expression.setup();
source/main.ts  29) 			await repositories.concept.setup();
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts  30) 			process.exit(0);
source/main.ts  31) 			break;
source/main.ts  32) 		}
Christian Fraß [add] api

Christian Fraß authored 3 years ago

source/main.ts  33) 		case "run":
source/main.ts  34) 		{
source/main.ts  35) 			const server : lib_comm.interface_server<string, lib_comm.type_response_server_http> = new lib_comm.class_server_http
source/main.ts  36) 			(
source/main.ts  37) 				{
source/main.ts  38) 					"port": 7777,
source/main.ts  39) 				}
source/main.ts  40) 			);
source/main.ts  41) 			server.setup
source/main.ts  42) 			(
source/main.ts  43) 				async (input_raw) =>
source/main.ts  44) 				{
source/main.ts  45) 					const stuff : any = JSON.parse(input_raw);
source/main.ts  46) 					try
source/main.ts  47) 					{
source/main.ts  48) 						const output : any = await api.query(stuff.action, stuff.input);
source/main.ts  49) 						return Promise.resolve<lib_comm.type_response_server_http>
source/main.ts  50) 						(
source/main.ts  51) 							{
source/main.ts  52) 								"code": 200,
source/main.ts  53) 								"text": JSON.stringify(output),
source/main.ts  54) 							}
source/main.ts  55) 						);
source/main.ts  56) 					}
source/main.ts  57) 					catch (exception)
source/main.ts  58) 					{
source/main.ts  59) 						console.error(exception);
source/main.ts  60) 						return Promise.resolve<lib_comm.type_response_server_http>
source/main.ts  61) 						(
source/main.ts  62) 							{
source/main.ts  63) 								"code": 500,
source/main.ts  64) 								"text": 'error',
source/main.ts  65) 							}
source/main.ts  66) 						);
source/main.ts  67) 					}
source/main.ts  68) 				}
source/main.ts  69) 			);
source/main.ts  70) 			server.run();
source/main.ts  71) 			break;
source/main.ts  72) 		}
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts  73) 		case "show":
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts  74) 		{
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts  75) 			const concept_id = parseInt(args.shift());
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts  76) 			const exposal : services.concept.type_exposal = await services.concept.expose(concept_id);
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts  77) 			console.info(helpers.json.encode_extended(exposal, true, 0));
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts  78) 			process.exit(0);
source/main.ts  79) 			break;
source/main.ts  80) 		}
source/main.ts  81) 		case "translate":
source/main.ts  82) 		{
source/main.ts  83) 			const language_from : string = args.shift();
source/main.ts  84) 			const language_to : string = args.shift();
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts  85) 			const part : string = args.join(" "); args = [];
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts  86) 			const result = await services.concept.get_translations
source/main.ts  87) 			(
source/main.ts  88) 				language_from,
source/main.ts  89) 				language_to,
source/main.ts  90) 				part
source/main.ts  91) 			);
source/main.ts  92) 			result.forEach
source/main.ts  93) 			(
source/main.ts  94) 				(entry) =>
source/main.ts  95) 				{
source/main.ts  96) 					console.info
source/main.ts  97) 					(
source/main.ts  98) 						helpers.string.coin
source/main.ts  99) 						(
source/main.ts 100) 							"[{{language_from}}] {{value_from}} ~ [{{language_to}}] {{value_to}}",
source/main.ts 101) 							{
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 102) 								"language_from": entry["language_from"],
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts 103) 								"value_from": entry["value_from"],
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 104) 								"language_to": entry["language_to"],
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts 105) 								"value_to": entry["value_to"],
source/main.ts 106) 							}
source/main.ts 107) 						)
source/main.ts 108) 					);
source/main.ts 109) 				}
source/main.ts 110) 			);
source/main.ts 111) 			process.exit(0);
source/main.ts 112) 			break;
source/main.ts 113) 		}
source/main.ts 114) 		case "export":
source/main.ts 115) 		{
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 116) 			const directory : string = ((args.length >= 1) ? args.shift() : "/tmp");
source/main.ts 117) 			const result : Array<services.concept.type_exposal> = await services.concept.export_();
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 118) 			const digits : int = 3;
source/main.ts 119) 			for (const exposal of result)
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 120) 			{
source/main.ts 121) 				const path : string = helpers.string.coin
source/main.ts 122) 				(
source/main.ts 123) 					"{{directory}}/concept_{{id}}.json",
source/main.ts 124) 					{
source/main.ts 125) 						"directory": directory,
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 126) 						"id": helpers.string.pad_left(exposal.id.toFixed(0), digits, "0"),
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 127) 					}
source/main.ts 128) 				);
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 129) 				delete exposal.id;
source/main.ts 130) 				const content : string = helpers.json.encode_extended(exposal, true, 0);
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 131) 				await helpers.file.write(path, content);
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 132) 				// console.info(path);
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 133) 			}
source/main.ts 134) 			console.info(directory);
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts 135) 			process.exit(0);
source/main.ts 136) 			break;
source/main.ts 137) 		}
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 138) 		case "search":
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts 139) 		{
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 140) 			const part : string = args.join(" "); args = [];
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 141) 			const result : Array<services.concept.type_exposal> = await services.concept.search(part);
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 142) 			result.forEach
source/main.ts 143) 			(
source/main.ts 144) 				(entry) =>
source/main.ts 145) 				{
source/main.ts 146) 					console.info
source/main.ts 147) 					(
source/main.ts 148) 						helpers.string.coin
source/main.ts 149) 						(
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 150) 							"{{id}} | {{type}} | {{description}} | {{tags}} | {{expressions}}",
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 151) 							{
source/main.ts 152) 								"id": entry["id"].toFixed(),
source/main.ts 153) 								"type": entry["type"],
source/main.ts 154) 								"description": (entry["description"] ?? '-'),
source/main.ts 155) 								"tags": entry["tags"].join(","),
Christian Fraß [mod] makefile

Christian Fraß authored 3 years ago

source/main.ts 156) 								"expressions": (
source/main.ts 157) 									() =>
source/main.ts 158) 									{
source/main.ts 159) 										let parts : Array<string> = [];
source/main.ts 160) 										for (const [key, value] of Object.entries(entry["expressions"]))
source/main.ts 161) 										{
source/main.ts 162) 											parts.push(key + ":" + value.join("/"));
source/main.ts 163) 										}
source/main.ts 164) 										return parts.join(",");
source/main.ts 165) 									}
source/main.ts 166) 								) (),
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 167) 							}
source/main.ts 168) 						)
source/main.ts 169) 					);
source/main.ts 170) 				}
source/main.ts 171) 			);
source/main.ts 172) 			process.exit(0);
source/main.ts 173) 			break;
source/main.ts 174) 		}
source/main.ts 175) 		case "feed":
source/main.ts 176) 		{
source/main.ts 177) 			const content : string = await helpers.misc.stdin();
source/main.ts 178) 			const data : any = JSON.parse(content);
source/main.ts 179) 			const concept_thing : any = data;
source/main.ts 180) 			const concept_id : int = await services.concept.suck(concept_thing);
source/main.ts 181) 			console.info(concept_id);
source/main.ts 182) 			process.exit(0);
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts 183) 			break;
source/main.ts 184) 		}
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 185) 		case "add":
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 186) 		{
source/main.ts 187) 			if (args.length < 1)
source/main.ts 188) 			{
source/main.ts 189) 				syntaxerror();
source/main.ts 190) 			}
source/main.ts 191) 			else
source/main.ts 192) 			{
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 193) 				/*
source/main.ts 194) 				SYNOPSIS
source/main.ts 195) 					add <type> [-d <description>] [-t <tag>] [-t <tag>] … [-e <language>:<value>] [-e <language>:<value>] _
source/main.ts 196) 				
source/main.ts 197) 				OPTIONS
source/main.ts 198) 					<type>
source/main.ts 199) 					-d <description> | --description=<description>
source/main.ts 200) 					-t <tag> | --tag=<tag>
source/main.ts 201) 					-e <language>:<value> | --expression=<language>:<value>
source/main.ts 202) 				 */
source/main.ts 203) 				const concept_thing : {type ?: string; description : null|string; tags : Array<string>; expressions : {[language : string] : Array<string>};} = {
source/main.ts 204) 					"type": undefined,
source/main.ts 205) 					"description": null,
source/main.ts 206) 					"tags": [],
source/main.ts 207) 					"expressions": {},
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 208) 				};
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 209) 				let positional : {list : Array<string>; index : int;} = {
source/main.ts 210) 					"list": ["type"],
source/main.ts 211) 					"index": 0,
source/main.ts 212) 				};
source/main.ts 213) 				while (args.length > 0)
source/main.ts 214) 				{
source/main.ts 215) 					const arg : string = args.shift();
source/main.ts 216) 					switch (arg)
source/main.ts 217) 					{
source/main.ts 218) 						case "-h":
source/main.ts 219) 						{
source/main.ts 220) 							console.info("add <type> [-d <description>] [-t <tag>] [-t <tag>] … [-e <language>:<value>] [-e <language>:<value>] _");
source/main.ts 221) 							process.exit(0);
source/main.ts 222) 							break;
source/main.ts 223) 						}
source/main.ts 224) 						case "-d":
source/main.ts 225) 						{
source/main.ts 226) 							concept_thing["description"] = args.shift();
source/main.ts 227) 							break;
source/main.ts 228) 						}
source/main.ts 229) 						case "-t":
source/main.ts 230) 						{
source/main.ts 231) 							concept_thing["tags"].push(args.shift());
source/main.ts 232) 							break;
source/main.ts 233) 						}
source/main.ts 234) 						case "-e":
source/main.ts 235) 						{
source/main.ts 236) 							const [language, value] : Array<string> = args.shift().split(":", 2);
source/main.ts 237) 							if (! concept_thing["expressions"].hasOwnProperty(language)) {
source/main.ts 238) 								concept_thing["expressions"][language] = [];
source/main.ts 239) 							}
source/main.ts 240) 							concept_thing["expressions"][language].push(value);
source/main.ts 241) 							break;
source/main.ts 242) 						}
source/main.ts 243) 						default:
source/main.ts 244) 						{
source/main.ts 245) 							if (positional.index < positional.list.length) {
source/main.ts 246) 								concept_thing[positional.list[positional.index]] = arg;
source/main.ts 247) 								positional.index += 1;
source/main.ts 248) 							}
source/main.ts 249) 							else {
source/main.ts 250) 								throw (new Error("unexpected: " + arg));
source/main.ts 251) 							}
source/main.ts 252) 							break;
source/main.ts 253) 						}
source/main.ts 254) 					}
source/main.ts 255) 				}
source/main.ts 256) // console.info(helpers.json.encode_extended(concept_thing, true, 0));
Christian Fraß [mod] logic

Christian Fraß authored 3 years ago

source/main.ts 257) 				const concept_id : int = await services.concept.suck(concept_thing);
source/main.ts 258) 				console.info(concept_id);
source/main.ts 259) 				process.exit(0);
source/main.ts 260) 			}
source/main.ts 261) 			break;
source/main.ts 262) 		}
source/main.ts 263) 		case "set":
source/main.ts 264) 		{
source/main.ts 265) 			if (args.length < 1)
source/main.ts 266) 			{
source/main.ts 267) 				syntaxerror();
source/main.ts 268) 			}
source/main.ts 269) 			else
source/main.ts 270) 			{
source/main.ts 271) 				const concept_id : int = parseInt(args.shift());
source/main.ts 272) 			}
source/main.ts 273) 		}
Christian Fraß [add] typescript logic

Christian Fraß authored 3 years ago

source/main.ts 274) 		default:
source/main.ts 275) 		{
source/main.ts 276) 			console.error("unhandled command: " + command);
source/main.ts 277) 			process.exit(1);
source/main.ts 278) 			break;
source/main.ts 279) 		}
source/main.ts 280) 	}
source/main.ts 281) }
source/main.ts 282) 
source/main.ts 283) 
Christian Fraß [mod] main

Christian Fraß authored 3 years ago

source/main.ts 284) main(process.argv.slice(2))
source/main.ts 285) .catch
source/main.ts 286) (
source/main.ts 287) 	(error) =>
source/main.ts 288) 	{
source/main.ts 289) 		console.error(error.toString());
source/main.ts 290) 	}
source/main.ts 291) );