diff --git a/packages/cli/src/commands/list.ts b/packages/cli/src/commands/list.ts index 3d100c3..10c9bfb 100644 --- a/packages/cli/src/commands/list.ts +++ b/packages/cli/src/commands/list.ts @@ -22,10 +22,15 @@ export default class List extends Command { const registrySpinner = ora('Fetching registry...') const getInstalledSpinner = ora('Getting installed components...') - const loadedConfig = await validateConfig(await loadConfig(flags.config)) + const loadedConfig = await validateConfig(this.log, await loadConfig(flags.config)) registrySpinner.start() - const registry = await getRegistry() + const unsafeRegistry = await getRegistry() + if (!unsafeRegistry.ok) { + registrySpinner.fail(unsafeRegistry.message) + return + } + const registry = unsafeRegistry.registry registrySpinner.succeed(`Fetched ${Object.keys(registry.components).length} components.`) const names = await getAvailableComponentNames(registry) diff --git a/packages/cli/src/helpers/registry.ts b/packages/cli/src/helpers/registry.ts index 44cbe88..9b84611 100644 --- a/packages/cli/src/helpers/registry.ts +++ b/packages/cli/src/helpers/registry.ts @@ -1,7 +1,19 @@ import {REGISTRY_URL, Registry} from '../const.js' -export async function getRegistry(): Promise { - return (await (await fetch(REGISTRY_URL)).json()) as Registry +export async function getRegistry(): Promise<{ok: true; registry: Registry} | {ok: false; message: string}> { + const registryResponse = await fetch(REGISTRY_URL) + + if (registryResponse.ok) { + return { + ok: true, + registry: (await registryResponse.json()) as Registry, + } + } else { + return { + ok: false, + message: `Error while fetching registry: ${registryResponse.status} ${registryResponse.statusText}`, + } + } } export async function getAvailableComponentNames(registry: Registry): Promise {