logger-help-display.ts — astro Source File
Architecture documentation for logger-help-display.ts, a typescript file in the astro codebase. 5 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 02af4382_f1f9_4658_6be6_d92227300d6a["logger-help-display.ts"] d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"] 02af4382_f1f9_4658_6be6_d92227300d6a --> d3861967_b647_84d2_ff48_15013353bd56 7db42c05_e873_0887_a39f_34451c181149["../definitions.js"] 02af4382_f1f9_4658_6be6_d92227300d6a --> 7db42c05_e873_0887_a39f_34451c181149 f7d5a8b1_6d20_6c83_f593_71bffeaeaf3e["../domain/help-payload.js"] 02af4382_f1f9_4658_6be6_d92227300d6a --> f7d5a8b1_6d20_6c83_f593_71bffeaeaf3e 9323e55c_9236_cd3d_d0b3_e20df52a4e84["../flags.js"] 02af4382_f1f9_4658_6be6_d92227300d6a --> 9323e55c_9236_cd3d_d0b3_e20df52a4e84 25a04c7b_4236_f7a9_5ed3_7a736f0eb06a["../utils/format-version.js"] 02af4382_f1f9_4658_6be6_d92227300d6a --> 25a04c7b_4236_f7a9_5ed3_7a736f0eb06a style 02af4382_f1f9_4658_6be6_d92227300d6a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type { Logger } from '../../core/logger/core.js';
import type { AstroVersionProvider, HelpDisplay, TextStyler } from '../definitions.js';
import type { HelpPayload } from '../domain/help-payload.js';
import type { Flags } from '../flags.js';
import { formatVersion } from '../utils/format-version.js';
export class LoggerHelpDisplay implements HelpDisplay {
readonly #logger: Logger;
readonly #textStyler: TextStyler;
readonly #astroVersionProvider: AstroVersionProvider;
// TODO: find something better
readonly #flags: Flags;
constructor({
logger,
textStyler,
astroVersionProvider,
flags,
}: {
logger: Logger;
textStyler: TextStyler;
astroVersionProvider: AstroVersionProvider;
flags: Flags;
}) {
this.#logger = logger;
this.#textStyler = textStyler;
this.#astroVersionProvider = astroVersionProvider;
this.#flags = flags;
}
shouldFire(): boolean {
return !!(this.#flags.help || this.#flags.h);
}
show({ commandName, description, headline, tables, usage }: HelpPayload): void {
const linebreak = () => '';
const title = (label: string) =>
` ${this.#textStyler.bgWhite(this.#textStyler.black(` ${label} `))}`;
const table = (rows: [string, string][], { padding }: { padding: number }) => {
const split = process.stdout.columns < 60;
let raw = '';
for (const row of rows) {
if (split) {
raw += ` ${row[0]}\n `;
} else {
raw += `${`${row[0]}`.padStart(padding)}`;
}
raw += ' ' + this.#textStyler.dim(row[1]) + '\n';
}
return raw.slice(0, -1); // remove latest \n
};
let message = [];
if (headline) {
message.push(
linebreak(),
`${formatVersion({ name: commandName, textStyler: this.#textStyler, astroVersionProvider: this.#astroVersionProvider })} ${headline}`,
);
}
if (usage) {
message.push(
linebreak(),
` ${this.#textStyler.green(commandName)} ${this.#textStyler.bold(usage)}`,
);
}
if (tables) {
function calculateTablePadding(rows: [string, string][]) {
return rows.reduce((val, [first]) => Math.max(val, first.length), 0) + 2;
}
const tableEntries = Object.entries(tables);
const padding = Math.max(...tableEntries.map(([, rows]) => calculateTablePadding(rows)));
for (const [tableTitle, tableRows] of tableEntries) {
message.push(linebreak(), title(tableTitle), table(tableRows, { padding }));
}
}
if (description) {
message.push(linebreak(), `${description}`);
}
this.#logger.info('SKIP_FORMAT', message.join('\n') + '\n');
}
}
Domain
Subdomains
Classes
Dependencies
- ../core/logger/core.js
- ../definitions.js
- ../domain/help-payload.js
- ../flags.js
- ../utils/format-version.js
Source
Frequently Asked Questions
What does logger-help-display.ts do?
logger-help-display.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What does logger-help-display.ts depend on?
logger-help-display.ts imports 5 module(s): ../core/logger/core.js, ../definitions.js, ../domain/help-payload.js, ../flags.js, ../utils/format-version.js.
Where is logger-help-display.ts in the architecture?
logger-help-display.ts is located at packages/astro/src/cli/infra/logger-help-display.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/cli/infra).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free