serverus/serverus.ts

62 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-06-19 15:55:35 -07:00
/**
* Command line interface for SERVERUS
* @module
*/
import { parseArgs } from '@std/cli/parse-args';
import { SERVER } from './server.ts';
import * as path from '@std/path';
const settings = parseArgs(Deno.args, {
boolean: ['help', 'logs', 'version', 'watch'],
string: ['hostname', 'port', 'root'],
negatable: ['logs', 'watch'],
alias: {
help: 'h',
port: 'p',
root: 'r',
version: 'v',
watch: 'w'
},
default: {
hostname: 'localhost',
logs: true,
port: '8000',
root: Deno.env.get('SERVERUS_ROOT') ?? './',
watch: true
}
});
if (settings.help) {
console.log(
`Usage: serverus [--h(elp)] [--v(ersion)] [--no-logs] [--no-watch] [--r(oot) ./www]
Options:
-h, --help Show this help message
--hostname Set the hostname/ip to bind to, default: localhost
--no-logs Disable logging
--no-watch Disable watch/reloading for certain types of file changes (handlers, typescript)
-p, --port Set the port to bind to, default: 8000
-r, --root Set the root directory to serve, default: './'
-v, --version Show the version number
`
);
Deno.exit(0);
}
const resolved_root: string = path.resolve(settings.root);
Deno.chdir(resolved_root);
const server = new SERVER({
hostname: settings.hostname,
port: typeof settings.port == 'string' ? parseInt(settings.port) : undefined,
logging: settings.logs
});
2025-06-19 17:29:22 -07:00
Deno.addSignalListener('SIGINT', async () => {
await server.stop();
Deno.exit();
});
await server.start();