40 lines
1 KiB
TypeScript
40 lines
1 KiB
TypeScript
import { parse } from "./args.ts";
|
|
|
|
interface Package {
|
|
name: string;
|
|
type: string;
|
|
version: string;
|
|
}
|
|
|
|
const args = parse();
|
|
|
|
const getPackages = await fetch(
|
|
`${args.url}/api/v1/packages/${args.owner}?access_token=${args.token}`,
|
|
{ method: "GET" },
|
|
);
|
|
if (getPackages.status !== 200) {
|
|
console.error("Failed to get package");
|
|
Deno.exit(1);
|
|
}
|
|
const packages = await getPackages.json() as Package[];
|
|
const containerPackages = packages.filter((pkg) => pkg.type == "container");
|
|
|
|
for (const pkg of containerPackages) {
|
|
const deletePackage = await fetch(
|
|
`${args.url}/api/v1/packages/${args.owner}/${pkg.name}/${pkg.version}?access_token=${args.token}`,
|
|
{ method: "DELETE" },
|
|
);
|
|
if (deletePackage.status !== 204) {
|
|
console.error(
|
|
"Unexpected status code",
|
|
deletePackage.status,
|
|
deletePackage.statusText,
|
|
);
|
|
console.error(
|
|
`Failed to delete package: name: ${pkg.name}: version: ${pkg.version}`,
|
|
);
|
|
const body = await deletePackage.text();
|
|
console.error(body);
|
|
}
|
|
}
|