49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
|
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'],
|
||
|
string: ['hostname', 'port', 'root'],
|
||
|
negatable: ['logs'],
|
||
|
alias: {
|
||
|
help: 'h',
|
||
|
port: 'p',
|
||
|
root: 'r',
|
||
|
version: 'v'
|
||
|
},
|
||
|
default: {
|
||
|
hostname: 'localhost',
|
||
|
logs: true,
|
||
|
port: '8000',
|
||
|
root: Deno.env.get('SERVERUS_ROOT') ?? './'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if (settings.help) {
|
||
|
console.log(
|
||
|
`Usage: serverus [--h(elp)] [--v(ersion)] [--no-logs] [--r(oot) ./www]
|
||
|
|
||
|
Options:
|
||
|
-h, --help Show this help message
|
||
|
--hostname Set the hostname/ip to bind to, default: localhost
|
||
|
--no-logs Disable logging
|
||
|
-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
|
||
|
});
|
||
|
|
||
|
await server.start();
|