< Summary - Envilder CLI

Information
Class: src/envilder/apps/gha/errors/GhaErrorPresenter.ts
Assembly: Default
File(s): src/envilder/apps/gha/errors/GhaErrorPresenter.ts
Tag: 427_29134414720
Line coverage
100%
Covered lines: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 37
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

src/envilder/apps/gha/errors/GhaErrorPresenter.ts

#LineLine coverage
 1import { SecretsFetchError } from '../../../core/domain/errors/DomainErrors.js';
 2import { describeError } from '../../../core/infrastructure/describeError.js';
 3
 4/**
 5 * Renders an error into log lines for the GitHub Action, keeping the
 6 * retro-arcade tone used across Envilder's failure messages. Returns
 7 * one entry per log line so the caller can emit each via `ILogger.error`.
 8 */
 9export function presentGhaError(error: unknown): string[] {
 1010  if (error instanceof SecretsFetchError) {
 311    return renderSecretsFetchError(error);
 12  }
 713  return renderFallback(error);
 14}
 15
 16function renderSecretsFetchError(error: SecretsFetchError): string[] {
 317  const failureLines = error.failures.map(
 518    (failure) => `  \u2717 ${failure.envVar} \u2192 ${failure.path}`,
 19  );
 520  const reasons = [...new Set(error.failures.map((failure) => failure.reason))];
 21
 322  return [
 23    '\u{1F4A5} GAME OVER \u2014 some secrets could not be fetched',
 24    ...failureLines,
 25    '',
 26    '\u2B50 WHY?',
 427    ...reasons.map((reason) => `   ${reason}`),
 28  ];
 29}
 30
 31function renderFallback(error: unknown): string[] {
 732  const message = describeError(error);
 733  return [
 34    '\u{1F6A8} GAME OVER \u2014 fell down the wrong pipe! \u{1F344}\u{1F4A5}',
 35    message,
 36  ];
 37}