Changes
3 changed files (+140/-4)
-
-
@@ -184,6 +184,7 @@ "https://deno.land/std@0.223.0/log/mod.ts": "650c53c2c5d9eb05210c4ec54184ecb5bd24fb32ce28e65fad039853978f53f3","https://deno.land/std@0.223.0/log/rotating_file_handler.ts": "a6e7c712e568b618303273ff95483f6ab86dec0a485c73c2e399765f752b5aa8", "https://deno.land/std@0.223.0/log/setup.ts": "42425c550da52c7def7f63a4fcc1ac01a4aec6c73336697a640978d6a324e7a6", "https://deno.land/std@0.223.0/log/warn.ts": "f1a6bc33a481f231a0257e6d66e26c2e695b931d5e917d8de4f2b825778dfd4e", "https://deno.land/std@0.224.0/fmt/colors.ts": "508563c0659dd7198ba4bbf87e97f654af3c34eb56ba790260f252ad8012e1c5", "https://deno.land/x/brotli@0.1.7/mod.ts": "08b913e51488b6e7fa181f2814b9ad087fdb5520041db0368f8156bfa45fd73e", "https://deno.land/x/brotli@0.1.7/wasm.js": "77771b89e89ec7ff6e3e0939a7fb4f9b166abec3504cec0532ad5c127d6f35d2", "https://deno.land/x/lz4@v0.1.2/mod.ts": "4decfc1a3569d03fd1813bd39128b71c8f082850fe98ecfdde20025772916582",
-
-
-
@@ -0,0 +1,5 @@// SPDX-FileCopyrightText: 2024 Shota FUJI <pockawoooh@gmail.com> // // SPDX-License-Identifier: Apache-2.0 export * from "https://deno.land/std@0.224.0/fmt/colors.ts";
-
-
-
@@ -4,6 +4,7 @@ // SPDX-License-Identifier: Apache-2.0import * as log from "../deps/deno.land/std/log/mod.ts"; import * as cli from "../deps/deno.land/std/cli/mod.ts"; import * as colors from "../deps/deno.land/std/fmt/colors.ts"; import { DenoFsReader } from "../filesystem_reader/deno_fs.ts"; import { DenoFsWriter } from "../filesystem_writer/deno_fs.ts";
-
@@ -74,16 +75,145 @@ fileSystemWriter,}); } function prettyLogFormatter( useColors: boolean, verbose: boolean, ): log.FormatterFunction { function id<T>(x: T): T { return x; } function pipe<T>(a: (x: T) => T, b: (x: T) => T): (x: T) => T { return (x) => b(a(x)); } const ts = useColors ? pipe(colors.black, colors.dim) : id; return (record) => { let level: (str: string) => string = id; let msg: (str: string) => string = id; let payload: (str: string) => string = id; if (useColors) { switch (record.level) { case log.LogLevels.NOTSET: level = colors.dim; msg = colors.dim; payload = colors.dim; break; case log.LogLevels.DEBUG: level = colors.gray; msg = colors.gray; payload = pipe(colors.dim, colors.black); break; case log.LogLevels.INFO: level = colors.blue; msg = pipe(colors.bold, colors.black); payload = colors.black; break; case log.LogLevels.WARN: level = colors.yellow; msg = colors.black; payload = colors.black; break; case log.LogLevels.ERROR: level = colors.red; msg = colors.black; payload = colors.black; break; case log.LogLevels.CRITICAL: level = pipe(colors.red, colors.bold); msg = pipe(colors.bold, colors.red); payload = colors.red; break; } } let ret = "\n" + level(record.levelName) + " " + ts(record.datetime.toISOString()) + "\n" + msg(record.msg); if (verbose) { for (const arg of record.args) { const text = Deno.inspect(arg, { colors: useColors, compact: false, }); for (const line of text.split("\n")) { ret += "\n " + payload(line); } } } return ret; }; } if (import.meta.main) { const args = cli.parseArgs(Deno.args, { boolean: ["json"], string: ["log"], boolean: ["json", "verbose", "help"], alias: { "help": ["h"], }, }); const useColors = Deno.stdout.isTerminal(); if (args.help) { const title = useColors ? (s: string) => colors.underline(colors.bold(s)) : (s: string) => s; console.log(` docs/build.ts Build Macana's documentation website using Macana. ${title("Usage")}: deno run --allow-read=docs --allow-write=docs/.dist docs/build.ts [OPTIONS] ${title("Options")}: -h, --help Print this help text to stdout and exit. --log=<debug|info|warn|error|critical> Set the lowest log level to output. By default, docs/build.ts logs INFO, WARN, ERROR, and CRITICAL level logs. --json Output logs as JSON Lines. --verbose Output additional information alongisde log messages. This does not take effect when ${colors.bold("--json")} is set. `.trim()); Deno.exit(0); } let level: log.LevelName = "INFO"; if (args.log) { const upper = args.log.toUpperCase() as log.LevelName; const found = log.LogLevelNames.includes(upper); if (found) { level = upper; } else { log.critical( `"${args.log}" is not a valid log level.\n` + ` Available log levels are: ${log.LogLevelNames.join(", ")}`, ); Deno.exit(1); } } log.setup({ handlers: { default: new log.ConsoleHandler("DEBUG", { formatter: args.json ? log.jsonFormatter : undefined, useColors: Deno.stdout.isTerminal(), default: new log.ConsoleHandler(level, { formatter: args.json ? log.jsonFormatter : prettyLogFormatter(useColors, args.verbose), useColors, }), }, loggers: {
-