From 88f0f433991ec0d258fdfac5a38cfd24df82b449 Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Mon, 9 Feb 2026 08:13:07 -0600 Subject: [PATCH] chore(cli): replace snaps-utils logError with logger Replace the `logError` import from `@metamask/snaps-utils` with the standard internal logger, removing an unnecessary dependency on the snaps-utils package. Use a custom console transport that omits tags from terminal output, so users see clean messages without the `[cli]` prefix while the tag is still available for programmatic consumers. Co-Authored-By: Claude Opus 4.6 --- packages/cli/package.json | 1 - packages/cli/src/app.ts | 43 +++++++++++++++++++++--------- packages/cli/src/commands/serve.ts | 7 ++--- yarn.lock | 1 - 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index df380b7aa..30210813e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -48,7 +48,6 @@ "@metamask/kernel-shims": "workspace:^", "@metamask/kernel-utils": "workspace:^", "@metamask/logger": "workspace:^", - "@metamask/snaps-utils": "^11.7.1", "@metamask/utils": "^11.9.0", "@types/node": "^22.13.1", "acorn": "^8.15.0", diff --git a/packages/cli/src/app.ts b/packages/cli/src/app.ts index 0ce8b70ec..0e8226292 100755 --- a/packages/cli/src/app.ts +++ b/packages/cli/src/app.ts @@ -1,5 +1,6 @@ -import '@metamask/kernel-shims/endoify'; +import '@metamask/kernel-shims/endoify-node'; import { Logger } from '@metamask/logger'; +import type { LogEntry } from '@metamask/logger'; import path from 'node:path'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; @@ -12,9 +13,24 @@ import type { Config } from './config.ts'; import { startRelay } from './relay.ts'; import { withTimeout } from './utils.ts'; -const logger = new Logger('cli'); +/** + * Console transport that omits tags from output. + * + * @param entry - The log entry to write. + */ +function consoleTransport(entry: LogEntry): void { + const args = [ + ...(entry.message ? [entry.message] : []), + ...(entry.data ?? []), + ]; + // eslint-disable-next-line no-console + console[entry.level](...args); +} -await yargs(hideBin(process.argv)) +const logger = new Logger({ tags: ['cli'], transports: [consoleTransport] }); + +const yargsInstance = yargs(hideBin(process.argv)) + .scriptName('ocap') .usage('$0 [options]') .demandCommand(1) .strict() @@ -63,7 +79,7 @@ await yargs(hideBin(process.argv)) dir: resolvedDir, }; logger.info(`Starting ${appName} in ${resolvedDir} on ${url}`); - const server = getServer(config); + const server = getServer(config, logger); await server.listen(); }, ) @@ -135,12 +151,15 @@ await yargs(hideBin(process.argv)) const closeWatcher = await watchReady; closeHandlers.push(closeWatcher); - const server = getServer({ - server: { - port: args.port, + const server = getServer( + { + server: { + port: args.port, + }, + dir: resolvedDir, }, - dir: resolvedDir, - }); + logger, + ); const { close: closeServer, port } = await server.listen(); closeHandlers.push(closeServer); @@ -154,6 +173,6 @@ await yargs(hideBin(process.argv)) async () => { await startRelay(logger); }, - ) - .help('help') - .parse(); + ); + +await yargsInstance.help('help').parse(); diff --git a/packages/cli/src/commands/serve.ts b/packages/cli/src/commands/serve.ts index 836b732f0..9289914e7 100644 --- a/packages/cli/src/commands/serve.ts +++ b/packages/cli/src/commands/serve.ts @@ -1,4 +1,4 @@ -import { logError } from '@metamask/snaps-utils/node'; +import type { Logger } from '@metamask/logger'; import type { IncomingMessage, Server, ServerResponse } from 'node:http'; import { createServer } from 'node:http'; import type { AddressInfo } from 'node:net'; @@ -12,11 +12,12 @@ import type { Config } from '../config.ts'; * Get a static server for development purposes. * * @param config - The config object. + * @param logger - Optional logger for output. * @returns An object with a `listen` method that returns a promise that * resolves when the server is listening. */ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function getServer(config: Config) { +export function getServer(config: Config, logger?: Logger) { if (!config.dir) { throw new Error(`Config option 'dir' must be specified.`); } @@ -74,7 +75,7 @@ export function getServer(config: Config) { getResponse(request, response).catch( /* istanbul ignore next */ (error) => { - logError(error); + logger?.error(error); response.statusCode = 500; response.end(); }, diff --git a/yarn.lock b/yarn.lock index c5cbd044b..fa8552aed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3375,7 +3375,6 @@ __metadata: "@metamask/kernel-shims": "workspace:^" "@metamask/kernel-utils": "workspace:^" "@metamask/logger": "workspace:^" - "@metamask/snaps-utils": "npm:^11.7.1" "@metamask/utils": "npm:^11.9.0" "@ocap/repo-tools": "workspace:^" "@ts-bridge/cli": "npm:^0.6.3"