import { Backups } from "./Backups" import { SDKManifest } from "../manifest/ManifestTypes" import { ExpectedExports } from "../types" import { _ } from "../util" export type SetupBackupsParams = Array< (keyof M["volumes"] & string) | Backups > export function setupBackups( ...args: _> ) { const backups = Array>() const volumes = new Set() for (const arg of args) { if (arg instanceof Backups) { backups.push(arg) } else { volumes.add(arg) } } backups.push(Backups.volumes(...volumes)) return { get createBackup() { return (async (options) => { for (const backup of backups) { await backup.build().createBackup(options) } }) as ExpectedExports.createBackup }, get restoreBackup() { return (async (options) => { for (const backup of backups) { await backup.build().restoreBackup(options) } }) as ExpectedExports.restoreBackup }, } satisfies { createBackup: ExpectedExports.createBackup restoreBackup: ExpectedExports.restoreBackup } }