Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add optional upgrade method to provider
  • Loading branch information
c4spar committed May 27, 2024
commit 44be66260436789895c4fb767091630931efdb7f
8 changes: 8 additions & 0 deletions command/upgrade/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { bold, brightBlue, cyan, green, red, yellow } from "@std/fmt/colors";
import { ValidationError } from "../_errors.ts";
import { Table } from "@cliffy/table";
import type { Logger } from "./logger.ts";
import type { UpgradeOptions } from "./upgrade.ts";

export interface Versions {
latest: string;
Expand All @@ -13,6 +14,11 @@ export interface ProviderOptions {
logger?: Logger;
}

export type ProviderUpgradeOptions = Omit<
UpgradeOptions,
"provider" | "runtime"
>;

export abstract class Provider {
abstract readonly name: string;
protected readonly main?: string;
Expand All @@ -31,6 +37,8 @@ export abstract class Provider {

abstract getRegistryUrl(name: string, version: string): string;

upgrade?(options: ProviderUpgradeOptions): Promise<void>;

getSpecifier(name: string, version: string, defaultMain?: string): string {
return `${this.getRegistryUrl(name, version)}${this.getMain(defaultMain)}`;
}
Expand Down
36 changes: 24 additions & 12 deletions command/upgrade/upgrade.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,20 +54,32 @@ export async function upgrade(
} else {
logger?.log(dim("Upgrading %s to version %s"), name, version);
}
const { runtimeName, runtime } = await getRuntime();
logger?.log(dim("Detected runtime: %s"), runtimeName);

try {
await runtime.upgrade({
args,
...(runtimeOptions?.[runtimeName] ?? {}),
name,
version,
main,
provider,
logger,
verbose,
});
if (provider.upgrade) {
await provider.upgrade({
args,
name,
version,
main,
logger,
verbose,
});
} else {
const { runtimeName, runtime } = await getRuntime();
logger?.log(dim("Detected runtime: %s"), runtimeName);

await runtime.upgrade({
args,
...(runtimeOptions?.[runtimeName] ?? {}),
name,
version,
main,
provider,
logger,
verbose,
});
}
} catch (error: unknown) {
logger?.error(
red(
Expand Down