nope/lib/cli/generateFolderStructure.ts
Martin Karkowski d785f72667 Merge branch 'dev' of https://github.com/anti-held-333/nope-backend into lib
# Conflicts:
#	lib/cli/runNopeBackend.ts
#	lib/dispatcher/nopeDispatcher.ts
#	lib/types/nope/nopeDispatcher.interface.ts
#	modules/wamo/src/wamo.basemodule.module.ts
#	modules/wamo/src/wamo.converter.module.ts
#	modules/wamo/src/wamo.lineManager.module.ts
#	modules/wamo/src/wamo.transportManager.simple.module.ts
2022-01-16 20:38:45 +01:00

104 lines
2.2 KiB
TypeScript

/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2021-01-18 17:24:49
* @modify date 2021-01-21 15:45:23
* @desc [description]
*/
import { ArgumentParser } from "argparse";
import { copyFile } from "fs/promises";
import { join } from "path";
import { createPath } from "../helpers/fileMethods";
import { getNopeLogger } from "../logger/getLogger";
const FOLDERS_TO_CREATE = [
"config",
"modules",
"open-api",
"pages",
join("public", "nope"),
join("dist", "modules"),
];
const BASE_FOLDER = __dirname;
const FILES_TO_COPY = [
// Public-Files, like logo etc.
"/public/nope/logo_light.png",
"/public/nope/logo.png",
// Default-Pages
"/pages/_app.tsx",
"/pages/index.tsx",
// Config-Files
"tsconfig.json",
"tsconfigBackend.json",
// Doc-Files:
"jsdoc.json",
// NextJS
"next.config.js",
"next-env.d.ts",
// Package File:
"package.json",
];
export async function generateFolderStructure(
additionalArguments: {
help: string;
type: "string" | "number";
name: string | string;
defaultValue?: any;
}[] = []
) {
const parser = new ArgumentParser({
// version: "1.0.0",
add_help: true,
description: "Command Line interface, determines the available Packages.",
});
for (const arg of additionalArguments) {
parser.add_argument(arg.name, {
help: arg.help,
default: arg.defaultValue,
type: arg.type,
});
}
parser.add_argument("-o", "--output", {
help: "Output Folder",
default: "./",
type: "str",
dest: "dir",
});
const args = parser.parse_args();
for (const folder of FOLDERS_TO_CREATE) {
try {
await createPath(join(args.dir, folder));
} catch (e) {
// Define a Logger
const logger = getNopeLogger("cli");
logger.error("Failed to create directory " + folder);
logger.error(e);
}
}
for (const file of FILES_TO_COPY) {
try {
await copyFile(
join(BASE_FOLDER, "..", "..", "..", file),
join(args.dir, file)
);
} catch (e) {
// Define a Logger
const logger = getNopeLogger("cli");
logger.error("Failed to copy file " + file);
logger.error(e);
}
}
}
if (require.main === module) {
generateFolderStructure();
}