Adding Server
This commit is contained in:
parent
5ebc22488c
commit
bdff1158b3
94
modules/mirror/cli/run.mirror-server.ts
Normal file
94
modules/mirror/cli/run.mirror-server.ts
Normal file
@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @author Martin Karkowski
|
||||
* @email m.karkowski@zema.de
|
||||
* @create date 2021-03-22 18:23:56
|
||||
* @modify date 2021-03-22 18:23:56
|
||||
* @desc [description]
|
||||
*/
|
||||
|
||||
import { ArgumentParser } from "argparse";
|
||||
import "reflect-metadata";
|
||||
import { promisify } from "util";
|
||||
import { Bridge } from "../../../lib/communication/bridge";
|
||||
import { getPackageLoader } from "../../../lib/loader/getPackageLoader";
|
||||
import { getNopeLogger } from "../../../lib/logger/getLogger";
|
||||
import { ICommunicationBridge } from "../../../lib/types/nope/nopeCommunication.interface";
|
||||
import { INopePackageLoader } from "../../../lib/types/nope/nopePackageLoader.interface";
|
||||
import { DESCRIPTION } from "../src/mirror-link.package";
|
||||
import { MirrorServerModule } from "../src/mirror-server.module";
|
||||
|
||||
const sleep = promisify(setTimeout);
|
||||
|
||||
export async function runMirrorServer(
|
||||
additionalArguments: {
|
||||
help: string;
|
||||
type: "string" | "number";
|
||||
name: string | string;
|
||||
defaultValue?: any;
|
||||
}[] = []
|
||||
) {
|
||||
const parser = new ArgumentParser({
|
||||
version: "1.0.0",
|
||||
addHelp: true,
|
||||
description: "Command Line interface, will run a Mirror-Server"
|
||||
});
|
||||
|
||||
for (const arg of additionalArguments) {
|
||||
parser.addArgument(arg.name, {
|
||||
help: arg.help,
|
||||
defaultValue: arg.defaultValue,
|
||||
type: arg.type
|
||||
});
|
||||
}
|
||||
|
||||
parser.addArgument(["-p", "--port"], {
|
||||
help: "The Port to use in the Server.",
|
||||
defaultValue: "7001",
|
||||
type: "int",
|
||||
dest: "port"
|
||||
});
|
||||
|
||||
const args = parser.parseArgs();
|
||||
|
||||
// Define a Logger
|
||||
const logger = getNopeLogger("Mirror-Server-CLI");
|
||||
|
||||
try {
|
||||
let loader: INopePackageLoader;
|
||||
try {
|
||||
const communicator: ICommunicationBridge = new Bridge() as any;
|
||||
|
||||
loader = getPackageLoader({
|
||||
communicator,
|
||||
logger: getNopeLogger("dispatcher", "info")
|
||||
});
|
||||
} catch (e) {
|
||||
getNopeLogger("cli", "info").error("failed to load the Packages", e);
|
||||
}
|
||||
|
||||
await loader.dispatcher.ready.waitFor((value) => value);
|
||||
|
||||
const thePackageToLoad = DESCRIPTION;
|
||||
thePackageToLoad.defaultInstances = [
|
||||
{
|
||||
options: {
|
||||
identifier: "mirror-server",
|
||||
params: [args.port],
|
||||
type: MirrorServerModule.prototype.constructor.name.toString()
|
||||
},
|
||||
selector: MirrorServerModule.prototype.constructor.name.toString()
|
||||
}
|
||||
];
|
||||
|
||||
await loader.addPackage(thePackageToLoad);
|
||||
await loader.generateInstances();
|
||||
} catch (e) {
|
||||
logger.error("Something went wrong");
|
||||
logger.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
// If requested As Main => Perform the Operation.
|
||||
if (require.main === module) {
|
||||
runMirrorServer();
|
||||
}
|
Loading…
Reference in New Issue
Block a user