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
some cleanup
  • Loading branch information
c4spar committed May 17, 2024
commit 060b3229b12c06f429444f6a4ec76b301c889f84
8 changes: 2 additions & 6 deletions command/upgrade/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,7 @@ export function createLogger({ spinner, verbose }: LoggerOptions): Logger {
log: (...args: Array<unknown>): void => {
verbose && write("log", ...args);
},
info: (...args: Array<unknown>): void => {
write("info", ...args);
},
error: (...args: Array<unknown>): void => {
write("error", ...args);
},
info: (...args: Array<unknown>): void => write("info", ...args),
error: (...args: Array<unknown>): void => write("error", ...args),
};
}
4 changes: 2 additions & 2 deletions command/upgrade/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ export abstract class Provider {

abstract getVersions(name: string): Promise<Versions>;

abstract getRepositoryUrl(name: string): string;
abstract getRepositoryUrl(name: string, version?: string): string;

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

getSpecifier(name: string, version: string, defaultMain?: string): string {
return `${this.getRegistryUrl(name, version)}${this.getMain(defaultMain)}`;
}

private getMain(defaultMain?: string) {
private getMain(defaultMain?: string): string {
const main = this.main ?? defaultMain;
return main ? `/${main}` : "";
}
Expand Down
7 changes: 5 additions & 2 deletions command/upgrade/provider/deno_land.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,11 @@ export class DenoLandProvider extends Provider {
return await response.json();
}

getRepositoryUrl(name: string): string {
return new URL(`${this.moduleName ?? name}/`, this.repositoryUrl).href;
getRepositoryUrl(name: string, version?: string): string {
return new URL(
`${this.moduleName ?? name}${version ? `@${version}` : ""}`,
this.repositoryUrl,
).href;
}

getRegistryUrl(name: string, version: string): string {
Expand Down
7 changes: 5 additions & 2 deletions command/upgrade/provider/github.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,11 @@ export class GithubProvider extends Provider {
};
}

getRepositoryUrl(_name: string): string {
return new URL(`${this.repositoryName}/`, this.repositoryUrl).href;
getRepositoryUrl(_name: string, version?: string): string {
return new URL(
`${this.repositoryName}${version ? `/releases/tag/${version}` : ""}`,
this.repositoryUrl,
).href;
}

getRegistryUrl(_name: string, version: string): string {
Expand Down
6 changes: 4 additions & 2 deletions command/upgrade/provider/jsr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,11 @@ export class JsrProvider extends Provider {
};
}

getRepositoryUrl(name: string): string {
getRepositoryUrl(name: string, version?: Semver): string {
return new URL(
`@${this.packageScope}/${this.packageName ?? name}`,
`@${this.packageScope}/${this.packageName ?? name}${
version ? `@${version}` : ""
}`,
this.repositoryUrl,
).href;
}
Expand Down
4 changes: 2 additions & 2 deletions command/upgrade/provider/nest_land.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ export class NestLandProvider extends Provider {
}

getRepositoryUrl(name: string): string {
return new URL(`${this.moduleName ?? name}/`, this.repositoryUrl).href;
return new URL(`${this.moduleName ?? name}`, this.repositoryUrl).href;
}

getRegistryUrl(name: string, version: string): string {
return new URL(`${this.moduleName ?? name}@${version}/`, this.registryUrl)
return new URL(`${this.moduleName ?? name}@${version}`, this.registryUrl)
.href;
}
}
11 changes: 7 additions & 4 deletions command/upgrade/provider/npm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ export type NpmProviderOptions =

export class NpmProvider extends Provider {
name = "npm";
private readonly repositoryUrl = "https://registry.npmjs.org/";
private readonly repositoryUrl = "https://npmjs.org/";
private readonly apiUrl = "https://registry.npmjs.org/";
private readonly packageName?: string;
private readonly packageScope: string;

Expand All @@ -29,7 +30,7 @@ export class NpmProvider extends Provider {
name: string,
): Promise<Versions> {
const response = await fetch(
`${this.repositoryUrl}/@${this.packageScope}/${this.packageName ?? name}`,
`${this.apiUrl}/@${this.packageScope}/${this.packageName ?? name}`,
);
if (!response.ok) {
throw new Error(
Expand All @@ -46,9 +47,11 @@ export class NpmProvider extends Provider {
};
}

getRepositoryUrl(name: string): string {
getRepositoryUrl(name: string, version?: string): string {
return new URL(
`@${this.packageScope}/${this.packageName ?? name}`,
`package/@${this.packageScope}/${this.packageName ?? name}${
version ? `/v/${version}` : ""
}`,
this.repositoryUrl,
).href;
}
Expand Down
2 changes: 1 addition & 1 deletion command/upgrade/runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ export interface UpgradePackageOptions extends RuntimeUpgradeOptions {

/** Runtime handler. */
export abstract class Runtime {
abstract upgrade(_options: UpgradePackageOptions): Promise<string | null>;
abstract upgrade(_options: UpgradePackageOptions): Promise<void>;
}
7 changes: 3 additions & 4 deletions command/upgrade/runtime/bun_runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export class BunRuntime extends NodeRuntime {
cmdArgs: string[],
isJsr: boolean,
logger?: Logger,
): Promise<string | null> {
): Promise<void> {
// deno-lint-ignore no-explicit-any
const Bun = (globalThis as any).Bun;
// deno-lint-ignore no-explicit-any
Expand All @@ -27,9 +27,8 @@ export class BunRuntime extends NodeRuntime {
await proc.exited;

if (proc.exitCode) {
return await new Response(proc.stderr).text();
const stderr = await new Response(proc.stderr).text();
throw new Error(stderr.trim());
}

return null;
}
}
12 changes: 5 additions & 7 deletions command/upgrade/runtime/deno_runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ export type DenoUpgradePackageOptions =

/** Deno runtime upgrade handler. */
export class DenoRuntime extends Runtime {
upgrade(
async upgrade(
{ provider, name, main, version, importMap, verbose, logger, args = [] }:
DenoUpgradePackageOptions,
): Promise<string | null> {
): Promise<void> {
const specifier: string = provider.getSpecifier(name, version, main);

const cmdArgs = ["install", `--name=${name}`, "--global", "--force"];
Expand All @@ -37,13 +37,13 @@ export class DenoRuntime extends Runtime {

cmdArgs.push(specifier);

return this.execute(cmdArgs, logger);
await this.execute(cmdArgs, logger);
}

protected async execute(
cmdArgs: string[],
logger?: Logger,
): Promise<string | null> {
): Promise<void> {
logger?.log(
dim("$ %s %s"),
Deno.execPath(),
Expand All @@ -58,9 +58,7 @@ export class DenoRuntime extends Runtime {
const { success, stderr } = await cmd.output();

if (!success) {
return new TextDecoder().decode(stderr);
throw new Error(new TextDecoder().decode(stderr).trim());
}

return null;
}
}
8 changes: 3 additions & 5 deletions command/upgrade/runtime/node_runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export class NodeRuntime implements Runtime {
logger,
args = [],
}: UpgradePackageOptions,
): Promise<string | null> {
): Promise<void> {
const specifier = provider.getSpecifier(name, version, main)
.replace(/^(npm|jsr):/, "");
const isJsr = provider.name === "jsr";
Expand All @@ -37,7 +37,7 @@ export class NodeRuntime implements Runtime {
cmdArgs: string[],
isJsr: boolean,
logger?: Logger,
): Promise<string | null> {
): Promise<void> {
const { spawn } = await import("node:child_process");

const [bin, args] = isJsr ? ["npx", ["jsr", ...cmdArgs]] : ["npm", cmdArgs];
Expand All @@ -59,9 +59,7 @@ export class NodeRuntime implements Runtime {
);

if (exitCode) {
return stderr.join("\n");
throw new Error(stderr.join("\n").trim());
}

return null;
}
}
31 changes: 15 additions & 16 deletions command/upgrade/upgrade.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,27 +57,26 @@ export async function upgrade(
const { runtimeName, runtime } = await getRuntime();
logger?.log(dim("Detected runtime: %s"), runtimeName);

const errorMessage: string | null = await runtime.upgrade({
args,
...(runtimeOptions?.[runtimeName] ?? {}),
name,
version,
main,
provider,
logger,
verbose,
});

if (errorMessage) {
try {
await runtime.upgrade({
args,
...(runtimeOptions?.[runtimeName] ?? {}),
name,
version,
main,
provider,
logger,
verbose,
});
} catch (error: unknown) {
logger?.error(
red(
`Failed to upgrade ${bold(name)} ${
currentVersion ? `from version ${bold(currentVersion)} ` : ""
}to ${bold(version)}:`,
}to ${bold(version)}.`,
),
);
logger?.error(errorMessage);
Deno.exit(1);
throw error;
}

logger?.info(
Expand All @@ -86,7 +85,7 @@ export async function upgrade(
bold(currentVersion ?? "")
} to ${bold(version)}!`,
),
dim(`(${provider.getRegistryUrl(name, version)})`),
dim(`(${provider.getRepositoryUrl(name, version)})`),
);
}
}
6 changes: 6 additions & 0 deletions command/upgrade/upgrade_command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,12 @@ export class UpgradeCommand extends Command {
logger,
...options,
});
} catch (error: unknown) {
logger.error(
!verbose && error instanceof Error ? error.message : error,
);
spinner.stop();
Deno.exit(1);
} finally {
spinner.stop();
}
Expand Down