()
| 802 | } |
| 803 | |
| 804 | function main() { |
| 805 | const serverArgs = parseArgs(Deno.args, { |
| 806 | string: ["port", "host", "cert", "key", "header"], |
| 807 | boolean: ["help", "dir-listing", "dotfiles", "cors", "verbose", "version"], |
| 808 | negatable: ["dir-listing", "dotfiles", "cors"], |
| 809 | collect: ["header"], |
| 810 | default: { |
| 811 | "dir-listing": true, |
| 812 | dotfiles: true, |
| 813 | cors: true, |
| 814 | verbose: false, |
| 815 | version: false, |
| 816 | host: "0.0.0.0", |
| 817 | port: undefined, |
| 818 | cert: "", |
| 819 | key: "", |
| 820 | }, |
| 821 | alias: { |
| 822 | p: "port", |
| 823 | c: "cert", |
| 824 | k: "key", |
| 825 | h: "help", |
| 826 | v: "verbose", |
| 827 | V: "version", |
| 828 | H: "header", |
| 829 | }, |
| 830 | }); |
| 831 | const port = serverArgs.port ? Number(serverArgs.port) : undefined; |
| 832 | const headers = serverArgs.header ?? []; |
| 833 | const host = serverArgs.host; |
| 834 | const certFile = serverArgs.cert; |
| 835 | const keyFile = serverArgs.key; |
| 836 | |
| 837 | if (serverArgs.help) { |
| 838 | printUsage(); |
| 839 | Deno.exit(); |
| 840 | } |
| 841 | |
| 842 | if (serverArgs.version) { |
| 843 | // deno-lint-ignore no-console |
| 844 | console.log(`Deno File Server ${denoConfig.version}`); |
| 845 | Deno.exit(); |
| 846 | } |
| 847 | |
| 848 | if (keyFile || certFile) { |
| 849 | if (keyFile === "" || certFile === "") { |
| 850 | // deno-lint-ignore no-console |
| 851 | console.log("--key and --cert are required for TLS"); |
| 852 | printUsage(); |
| 853 | Deno.exit(1); |
| 854 | } |
| 855 | } |
| 856 | |
| 857 | const wild = serverArgs._ as string[]; |
| 858 | const target = resolve(wild[0] ?? ""); |
| 859 | |
| 860 | const handler = (req: Request): Promise<Response> => { |
| 861 | return serveDir(req, { |
no test coverage detected