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(