summaryrefslogtreecommitdiff
path: root/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'index.ts')
-rw-r--r--index.ts123
1 files changed, 31 insertions, 92 deletions
diff --git a/index.ts b/index.ts
index 89bb0d8..96e4a97 100644
--- a/index.ts
+++ b/index.ts
@@ -1,4 +1,4 @@
-// Copyright 2022 ilotterytea
+// Copyright 2022 NotDankEnough (ilotterytea)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -12,99 +12,38 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { Command } from "commander";
-import chalk from "chalk";
-import express from "express";
-
-import pck from "./package.json";
-import SRouter from "./router";
-import { existsSync, mkdirSync, writeFileSync } from "fs";
-
-main();
-
-/**
- * The "web server" script.
- */
-function main() {
- // Obtaining the options that have been provided in the command line interface:
- const cli = CLI();
- const opts = cli.opts();
-
- try {
- // Create the necessary files if the script was started with the --init option:
- if (opts.init) {
- if (!(existsSync("./options.json"))) {
- writeFileSync("./options.json", JSON.stringify({
- allowedMIMETypes: [
- "image/jpeg",
- "image/png",
- "image/svg+xml",
- "image/tiff",
- "image/webp",
- "image/gif",
- "video/mp4"],
- maxFileSizeInBytes: 13107200
- }, null, 2), {encoding: "utf-8"});
- console.debug(chalk.green("The options file created!"));
- }
- return;
- }
-
- // Run the server if the script was started with the --standalone option:
- if (opts.standalone) {
- // ExpressJS instance:
- const App = express();
-
- // Using an image loader with custom route (--route <value>) on the server:
- App.use(opts.route, SRouter);
-
- // Using a static folder. Also, this will be used when viewing uploaded pictures.
- App.use(express.static(`${__dirname}/static`));
-
- // Starting the server on the specified port:
- App.listen(opts.port, () => {
- console.debug(chalk.bgGreen("Server (Image hoster) running on port ", opts.port));
- });
+import CLI from "./src/CLI";
+import Main from "./src/Main";
+import Ini from "ini";
+import { readFileSync, writeFileSync } from "fs";
+import { Logger } from "tslog";
+
+const log: Logger = new Logger({name: "init"});
+const cli: Record<string, string | boolean> = CLI();
+
+if (cli.init) {
+ const cfg_template = {
+ Auth: {
+ ClientID: "",
+ ClientSecret: "",
+ RedirectURI: ""
+ },
+ Certificate: {
+ Key: "",
+ Cert: "",
+ Ca: ""
+ },
+ Ports: {
+ HTTP: "80",
+ HTTPS: "443"
}
- } catch (err: any) {
- console.log(chalk.bgRed(err));
}
-}
-/**
- * Silly command-line interface.
- */
-function CLI() {
- // New Command instance:
- const Program = new Command();
+ writeFileSync("config.ini", Ini.stringify(cfg_template), {encoding: "utf-8"});
+ log.debug("Config file is generated! Exiting...");
+ process.exit(0);
+}
- // Setting the information about Program:
- Program
- .name(pck.displayName)
- .description(pck.description)
- .version(pck.version);
-
- // Create an option to run this script as a web app:
- Program
- .option("--standalone", "Run the script as a web app.", false)
- .alias("-s");
-
- // The option to be specified as the port in the web app:
- Program
- .option("--port <value>", "Set the port for standalone app.", "8080")
- .alias("-p");
-
- // The route for our image uploader:
- Program
- .option("--route <value>", "Set the route for standalone app.", "/")
- .alias("-r");
-
- // Initialize the first setup of image uploader:
- Program
- .option("--init", "Create the necessary files for image uploader.", false);
-
- // Parse the process arguments:
- Program.parse(process.argv);
+const config: {[key: string]: any} = Ini.parse(readFileSync("./config.ini", {encoding: "utf-8"}));
- return Program;
-} \ No newline at end of file
+Main(__dirname, config, cli); \ No newline at end of file