Skip to content

Currently ignored argv and just uses projectDir. #146

@github-actions

Description

@github-actions

Currently ignored argv and just uses projectDir.

https://github.com/Gum-Joe/2Keys/blob/d854e718e954180c637e7e7c7406622effb93c89/packages/@twokeys/server/src/index.ts#L69

import bodyParser from "body-parser";
import { writeFile } from "fs";
import { DEFAULT_LOCAL_2KEYS, DEFAULT_PORT, WINDOWS_SERVER_PID_FILE } from "./util/constants";
import { Arguments } from "yargs";
import { loadProjectConfig } from "@twokeys/core/lib/config";
import { join } from "path";
import getAPI from "./routes/api";
import { ProjectConfig } from "@twokeys/core/lib/interfaces";
import helmet from "helmet";
import mkdirp from "mkdirp";
import startupScripts from "./util/startup";
import { Logger } from "@twokeys/core";

const app = express();
const logger: Logger = new Logger({
	name: "server",
});

interface ServerArgs {
	"pid-file"?: string;
}

const server = async (port: number = DEFAULT_PORT, argv: ServerArgs, projectDir: string, projectConfig: ProjectConfig): Promise<ReturnType<typeof express>> => {

	// Default start scripts
	await startupScripts();

	app.use(bodyParser.json());
	app.use(helmet());
	app.use("/api", await getAPI(projectConfig, projectDir));

	// Error handler
	app.use((err, req, res, next) => {
		logger.err(`An error was encountered on router ${req.originalUrl}`);
		logger.printError(err);
		next(err);
	});

	app.listen(port, () => {
		logger.info("Server now listenning on port " + port);
		logger.debug("PID: " + process.pid);
	});

	// FIXME: Currently ignored argv and just uses projectDir.
	if (Object.prototype.hasOwnProperty.call(argv, "pid-file") && typeof argv["pid-file"] === "string" && argv["pid-file"]) {
		logger.debug(`Writing pid file to ${join(projectDir, DEFAULT_LOCAL_2KEYS, WINDOWS_SERVER_PID_FILE)}...`);
		mkdirp(join(projectDir, DEFAULT_LOCAL_2KEYS));
		writeFile(join(projectDir, DEFAULT_LOCAL_2KEYS, WINDOWS_SERVER_PID_FILE), process.pid.toString(), (err) => {
			if (err) { logger.printError(err); }
			logger.info("PID file Written.");
		});
	}

	return app;

};

/**
 * Eventually default starter for server
 * @param projectDir Absoluter path to project
 */
export async function starter(projectDir: string): Promise<void> {
	logger.info("Starting 2Keys....");
	logger.info("Loading project...");
	// TODO: Version checks to check config version matches this version of 2Keys
	const projectConfig = await loadProjectConfig(projectDir);
	await server(projectConfig.server.port, {
		"pid-file": join(projectDir, DEFAULT_LOCAL_2KEYS, WINDOWS_SERVER_PID_FILE)
	} as Arguments<ServerArgs>, projectDir, projectConfig);
}

export default server;
export { app };
eleted file mode 100644
ndex 748c11b..0000000
++ /dev/null

a1e9c5bf366ca97931ff4616fd19f9fbcd277e1b

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions