GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — codeql-action/src/logging.ts at default-setup-testing · github/codeql-action Expand file tree/ Copy pathlogging.tsMore file actions 123 lines (112 loc) · 3.59 KB / Copy pathlogging.tsFile metadata and controls123 lines (112 loc) · 3.59 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 import * as core from "@actions/core"; /** Types that all of our logging functions accept. */ export type Loggable = string | string[]; /** Some logging functions also accept errors directly. */ export type LoggableError = Loggable | Error; export interface Logger { /** * Logs {@link message} at debug-level. * In Actions, this will only be output if workflow debugging is enabled. * * @param message * A string or an array of strings. If an array of strings is provided, they are joined using * space as the delimiter and printed as a single line. */ debug: (message: Loggable) => void; /** * Logs {@link message} at info-level. * In Actions, this will always be output. * * @param message * A string or an array of strings. If an array of strings is provided, they are joined using * space as the delimiter and printed as a single line. */ info: (message: Loggable) => void; /** * Logs {@link message} at warning-level. * In Actions, this will always be output and highlighted as a warning. It will additionally * result in a warning-level workflow annotation. * * @param message * A string or an array of strings. If an array of strings is provided, they are joined using * space as the delimiter and printed as a single line. */ warning: (message: LoggableError) => void; /** * Logs {@link message} at error-level. * In Actions, this will always be output and highlighted as an error. It will additionally * result in an error-level workflow annotation. * * @param message * A string or an array of strings. If an array of strings is provided, they are joined using * space as the delimiter and printed as a single line. */ error: (message: LoggableError) => void; /** * Gets a value indicating whether debugging is enabled. */ isDebug: () => boolean; startGroup: (name: string) => void; endGroup: () => void; } /** If `message` is an array of strings, the array is `join`-ed into one string separated by spaces. */ export const joinMessageStrings = <T>( message: string[] | string | T, ): string | T => { if (Array.isArray(message)) { return message.join(" "); } else { return message; } }; /** * Wraps a logging function so that `joinMessageStrings` is applied to the input before * calling the wrapped logging function. */ const autoJoinMessageStrings = <T>(fn: (msg: string | T) => void) => { return (message: string[] | string | T) => { return fn(joinMessageStrings(message)); }; }; export function getActionsLogger(): Logger { return { debug: autoJoinMessageStrings(core.debug), info: autoJoinMessageStrings(core.info), warning: autoJoinMessageStrings(core.warning), error: autoJoinMessageStrings(core.error), isDebug: core.isDebug, startGroup: core.startGroup, endGroup: core.endGroup, }; } export function withGroup<T>(groupName: string, f: () => T): T { core.startGroup(groupName); try { return f(); } finally { core.endGroup(); } } export async function withGroupAsync<T>( groupName: string, f: () => Promise<T>, ): Promise<T> { core.startGroup(groupName); try { return await f(); } finally { core.endGroup(); } } /** Format a duration for use in logs. */ export function formatDuration(durationMs: number) { if (durationMs < 1000) { return `${durationMs}ms`; } if (durationMs < 60 * 1000) { return `${(durationMs / 1000).toFixed(1)}s`; } const minutes = Math.floor(durationMs / (60 * 1000)); const seconds = Math.floor((durationMs % (60 * 1000)) / 1000); return `${minutes}m${seconds}s`; } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |