2021-01-21 07:38:44 +00:00
|
|
|
/**
|
|
|
|
* @author Martin Karkowski
|
|
|
|
* @email m.karkowski@zema.de
|
|
|
|
* @create date 2021-01-18 17:24:49
|
2021-01-21 15:20:59 +00:00
|
|
|
* @modify date 2021-01-21 15:45:23
|
2021-01-21 07:38:44 +00:00
|
|
|
* @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";
|
|
|
|
|
2022-01-17 17:53:06 +00:00
|
|
|
const FOLDERS_TO_CREATE = ["config", "modules"];
|
2021-01-21 07:38:44 +00:00
|
|
|
const BASE_FOLDER = __dirname;
|
|
|
|
const FILES_TO_COPY = [
|
|
|
|
// Config-Files
|
|
|
|
"tsconfig.json",
|
2022-01-17 17:06:10 +00:00
|
|
|
"tsconfig.browser.json",
|
2021-01-21 07:38:44 +00:00
|
|
|
// Doc-Files:
|
|
|
|
"jsdoc.json",
|
|
|
|
];
|
|
|
|
|
|
|
|
export async function generateFolderStructure(
|
|
|
|
additionalArguments: {
|
|
|
|
help: string;
|
|
|
|
type: "string" | "number";
|
|
|
|
name: string | string;
|
|
|
|
defaultValue?: any;
|
|
|
|
}[] = []
|
|
|
|
) {
|
|
|
|
const parser = new ArgumentParser({
|
2022-01-16 19:38:45 +00:00
|
|
|
// version: "1.0.0",
|
|
|
|
add_help: true,
|
2021-12-04 07:25:26 +00:00
|
|
|
description: "Command Line interface, determines the available Packages.",
|
2021-01-21 07:38:44 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
for (const arg of additionalArguments) {
|
2022-01-16 19:38:45 +00:00
|
|
|
parser.add_argument(arg.name, {
|
2021-01-21 07:38:44 +00:00
|
|
|
help: arg.help,
|
2022-01-16 19:38:45 +00:00
|
|
|
default: arg.defaultValue,
|
2021-12-04 07:25:26 +00:00
|
|
|
type: arg.type,
|
2021-01-21 07:38:44 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-01-16 19:38:45 +00:00
|
|
|
parser.add_argument("-o", "--output", {
|
2021-01-21 07:38:44 +00:00
|
|
|
help: "Output Folder",
|
2022-01-16 19:38:45 +00:00
|
|
|
default: "./",
|
|
|
|
type: "str",
|
2021-12-04 07:25:26 +00:00
|
|
|
dest: "dir",
|
2021-01-21 07:38:44 +00:00
|
|
|
});
|
|
|
|
|
2022-01-16 19:38:45 +00:00
|
|
|
const args = parser.parse_args();
|
2021-01-21 07:38:44 +00:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|