mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-15 19:52:50 +03:00
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
import { apiFetch } from "../api.mjs";
|
|
import { t } from "../i18n.mjs";
|
|
import { emit } from "../output.mjs";
|
|
|
|
const statusSchema = [
|
|
{ key: "feed", header: "Feed" },
|
|
{ key: "available", header: "Available" },
|
|
{ key: "version", header: "Version" },
|
|
{ key: "tier", header: "Tier" },
|
|
{ key: "fetchedAt", header: "Fetched" },
|
|
];
|
|
|
|
const syncSchema = [
|
|
{ key: "feed", header: "Feed" },
|
|
{ key: "status", header: "Status" },
|
|
{ key: "version", header: "Version" },
|
|
{ key: "reason", header: "Reason" },
|
|
];
|
|
|
|
function exitCodeFor(response) {
|
|
return Number.isInteger(response.exitCode) ? response.exitCode : response.status === 401 ? 4 : 1;
|
|
}
|
|
|
|
export async function runRadarStatusCommand(opts = {}) {
|
|
const response = await apiFetch("/api/radar/status", { acceptNotOk: true });
|
|
if (!response.ok) return exitCodeFor(response);
|
|
const data = await response.json();
|
|
if (opts.output === "json") {
|
|
emit(data, opts);
|
|
return 0;
|
|
}
|
|
const rows = Object.entries(data.feeds ?? {}).map(([feed, value]) => ({
|
|
feed,
|
|
...(value && typeof value === "object" ? value : { available: false }),
|
|
}));
|
|
emit(rows, opts, statusSchema);
|
|
return 0;
|
|
}
|
|
|
|
export async function runRadarSyncCommand(opts = {}) {
|
|
const response = await apiFetch("/api/radar/sync-all", {
|
|
method: "POST",
|
|
body: {},
|
|
acceptNotOk: true,
|
|
});
|
|
if (!response.ok) return exitCodeFor(response);
|
|
const data = await response.json();
|
|
if (opts.output === "json") {
|
|
emit(data, opts);
|
|
return 0;
|
|
}
|
|
const rows = Object.entries(data).map(([feed, value]) => ({
|
|
feed,
|
|
...(value && typeof value === "object" ? value : { status: "error" }),
|
|
}));
|
|
emit(rows, opts, syncSchema);
|
|
return 0;
|
|
}
|
|
|
|
export function registerRadar(program) {
|
|
const radar = program.command("radar").description(t("radar.description"));
|
|
radar
|
|
.command("status")
|
|
.description(t("radar.status"))
|
|
.action(async (_opts, command) => {
|
|
const code = await runRadarStatusCommand(command.optsWithGlobals());
|
|
if (code !== 0) process.exitCode = code;
|
|
});
|
|
radar
|
|
.command("sync")
|
|
.description(t("radar.sync"))
|
|
.action(async (_opts, command) => {
|
|
const code = await runRadarSyncCommand(command.optsWithGlobals());
|
|
if (code !== 0) process.exitCode = code;
|
|
});
|
|
}
|