From 1d2339b284293079f267dc48f751a985031ad85f Mon Sep 17 00:00:00 2001 From: Jamie Mason Date: Wed, 24 Apr 2024 11:07:21 +0100 Subject: [PATCH] revert(update): revert commit a1c72704 Refs #210 --- src/bin-update/effects.ts | 15 +++-------- src/bin-update/update.ts | 55 +++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/bin-update/effects.ts b/src/bin-update/effects.ts index dfffd9d6..01653560 100644 --- a/src/bin-update/effects.ts +++ b/src/bin-update/effects.ts @@ -226,18 +226,11 @@ export const updateEffects = { ...doState.majorAnswers, ...doState.prereleaseAnswers, ], - Effect.forEach((release) => + Effect.forEach(({ instance, versions }) => pipe( - release.instance.versionGroup.instances, - Effect.forEach((instance) => - pipe( - instance.semverGroup.getFixed( - Specifier.create(instance, release.versions.latest), - ), - Effect.flatMap((latestWithRange) => instance.write(latestWithRange.raw)), - Effect.catchTag('NonSemverError', Effect.logError), - ), - ), + instance.semverGroup.getFixed(Specifier.create(instance, versions.latest)), + Effect.flatMap((latestWithRange) => instance.write(latestWithRange.raw)), + Effect.catchTag('NonSemverError', Effect.logError), ), ), Effect.flatMap(() => Effect.void), diff --git a/src/bin-update/update.ts b/src/bin-update/update.ts index 9b9b8b39..c5bedbbf 100644 --- a/src/bin-update/update.ts +++ b/src/bin-update/update.ts @@ -27,25 +27,28 @@ export function update( Effect.Do, Effect.bind('ctx', () => getContext({ io, cli, errorHandlers })), Effect.bind('instances', ({ ctx }) => getInstances(ctx, io, errorHandlers)), - Effect.bind('updateable', ({ instances }) => { - const isVisitedByName: Record = {}; - const updateable: Instance[] = []; - instances.all.forEach((instance) => { - const _tag = instance.versionGroup._tag; - if (!isVisitedByName[instance.name] && (_tag === 'SameRange' || _tag === 'Standard')) { - const specifier = Specifier.create(instance, instance.rawSpecifier.raw); - if (specifier._tag === 'Range' || specifier._tag === 'Exact') { - isVisitedByName[instance.name] = true; - updateable.push(instance); - } - } - }); - return Effect.succeed(updateable); - }), - Effect.bind('update', ({ updateable }) => + Effect.bind('update', ({ instances }) => pipe( - Effect.succeed(updateable), - Effect.tap(effects.onFetchAllStart), + Effect.succeed(instances.all), + Effect.map((instances) => { + const isVisitedByName: Record = {}; + const updateable: Instance[] = []; + instances.forEach((instance) => { + if ( + !isVisitedByName[instance.name] && + (instance.versionGroup._tag === 'SameRange' || + instance.versionGroup._tag === 'Standard') + ) { + const specifier = Specifier.create(instance, instance.rawSpecifier.raw); + if (specifier._tag === 'Range' || specifier._tag === 'Exact') { + isVisitedByName[instance.name] = true; + updateable.push(instance); + } + } + }); + return updateable; + }), + Effect.tap(updateEffects.onFetchAllStart), Effect.flatMap((instances) => pipe( instances, @@ -53,21 +56,21 @@ export function update( (instance) => pipe( Effect.succeed(instance), - Effect.tap(() => effects.onFetchStart(instance, instances.length)), + Effect.tap(() => updateEffects.onFetchStart(instance, instances.length)), Effect.flatMap(effects.fetchLatestVersions), Effect.tapBoth({ - onFailure: () => effects.onFetchEnd(instance), - onSuccess: ({ versions }) => effects.onFetchEnd(instance, versions), + onFailure: () => updateEffects.onFetchEnd(instance), + onSuccess: ({ versions }) => updateEffects.onFetchEnd(instance, versions), }), // move up to date dependencies to error channel Effect.flatMap((updateable) => gtr(updateable.versions.latest, String(instance.rawSpecifier.raw)) ? pipe( - effects.onOutdated(instance, updateable.versions.latest), + updateEffects.onOutdated(instance, updateable.versions.latest), Effect.map(() => updateable), ) : pipe( - effects.onUpToDate(instance), + updateEffects.onUpToDate(instance), Effect.flatMap(() => Effect.fail(updateable)), ), ), @@ -88,11 +91,11 @@ export function update( ), // always remove the spinner when we're done Effect.tapBoth({ - onFailure: effects.onFetchAllEnd, - onSuccess: effects.onFetchAllEnd, + onFailure: updateEffects.onFetchAllEnd, + onSuccess: updateEffects.onFetchAllEnd, }), // ask the user which updates they want - Effect.flatMap(effects.promptForUpdates), + Effect.flatMap(updateEffects.promptForUpdates), // if we think the user cancelled, say so Effect.catchTag('PromptCancelled', () => Effect.logInfo(