From 671e771c733b80a65c96e3d4653e85bc91c6550d Mon Sep 17 00:00:00 2001 From: Ani Ravi <5902976+aniravi24@users.noreply.github.com> Date: Tue, 18 Feb 2025 01:00:31 -0500 Subject: [PATCH] refactor(sidetrack): use effect.fn for cli command to get better tracing --- .changeset/sixty-games-hug.md | 5 +++++ packages/sidetrack/src/cli.ts | 37 +++++++++++++++++------------------ 2 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 .changeset/sixty-games-hug.md diff --git a/.changeset/sixty-games-hug.md b/.changeset/sixty-games-hug.md new file mode 100644 index 00000000..80692d06 --- /dev/null +++ b/.changeset/sixty-games-hug.md @@ -0,0 +1,5 @@ +--- +"sidetrack": patch +--- + +use Effect.fn for better tracing of CLI function diff --git a/packages/sidetrack/src/cli.ts b/packages/sidetrack/src/cli.ts index 5509d35a..8e4eace4 100644 --- a/packages/sidetrack/src/cli.ts +++ b/packages/sidetrack/src/cli.ts @@ -26,26 +26,25 @@ const databaseUrlFlag = Options.text("database-url") const runCommand = Command.make( "run", { databaseUrlFlag }, - ({ databaseUrlFlag }) => { - const databaseUrl = Option.match(databaseUrlFlag, { - onNone: () => Config.string("DATABASE_URL"), - onSome: (value) => Config.succeed(value), - }); + ({ databaseUrlFlag }) => + Effect.fn("sidetrack.cli.migrations.run")(function* () { + const databaseUrlConfig = Option.match(databaseUrlFlag, { + onNone: () => Config.string("DATABASE_URL"), + onSome: (value) => Config.succeed(value), + }); + const databaseUrl = yield* databaseUrlConfig.pipe( + Effect.mapError( + (error) => + new MissingEnvError({ + cause: error, + message: + "If a database url is not provided, the DATABASE_URL environment variable must be set.", + }), + ), + ); - return Effect.flatMap(databaseUrl, (dbUrl) => - Effect.promise(() => runMigrations(dbUrl)), - ).pipe( - Effect.catchTag( - "ConfigError", - (error) => - new MissingEnvError({ - cause: error, - message: - "If a database url is not provided, the DATABASE_URL environment variable must be set.", - }), - ), - ); - }, + return yield* Effect.promise(() => runMigrations(databaseUrl)); + })(), ); const migrationsCommand = Command.make("migrations").pipe(