Saltearse al contenido

cli/add/updateStudioCMSConfig

Esta página aún no está disponible en tu idioma.

Defined in: studiocms/packages/studiocms/src/cli/add/updateStudioCMSConfig.ts:11^

  • any

new UpdateStudioCMSConfig(): UpdateStudioCMSConfig

UpdateStudioCMSConfig

Effect.Service<UpdateStudioCMSConfig>()(
'UpdateStudioCMSConfig',
{
effect: genLogger('studiocms/cli/add/updateStudioCMSConfig/UpdateStudioCMSConfig.effect')(
function () {
// biome-ignore lint/suspicious/noExplicitAny: this is a valid use case for explicit any.
const run = (configURL: URL, mod: ProxifiedModule<any>) =>
genLogger('studiocms/cli/add/updateStudioCMSConfig/UpdateStudioCMSConfig.effect.run')(
function () {
const context = yield CliContext;
const { prompts, chalk } = context;
const input = yield Effect.tryPromise(() =>
fs.readFile(fileURLToPath(configURL), { encoding: 'utf-8' })
);
const output = yield Effect.try(
() =>
generateCode(mod, {
format: {
objectCurlySpacing: true,
useTabs: false,
tabWidth: 2,
},
}).code
);
if (input === output) return UpdateResult.none;
const diff = yield getDiffContent(input, output).pipe(
CliContext.makeProvide(context)
);
if (!diff) return UpdateResult.none;
const boxenMessage = yield effectBoxen((boxen) =>
boxen(diff, {
margin: 0.5,
padding: 0.5,
borderStyle: 'round',
title: configURL.pathname.split('/').pop(),
})
);
const message = n${boxenMessage}\n;
prompts.note(
n ${chalk.magenta('StudioCMS will make the following changes to your config file:')}\n${message}
);
if (yield Effect.tryPromise(() => askToContinue(prompts))) {
yield Effect.tryPromise(() =>
fs.writeFile(fileURLToPath(configURL), output, { encoding: 'utf-8' })
);
yield Console.debug('Updated studiocms config');
return UpdateResult.updated;
}
return UpdateResult.cancelled;
}
);
return { run };
}
),
}
).constructor