/** * 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 }); Deno.addSignalListener('SIGINT', async () => { await server.stop(); Deno.exit(); }); await server.start();