import { string } from "ts-matches"; import { Backups } from "."; import { GenericManifest } from "../manifest/ManifestTypes"; import { BackupOptions } from "../types"; export type SetupBackupsParams = | [Partial, ...Array] | Array; export function setupBackups( ...args: SetupBackupsParams ) { const [options, volumes] = splitOptions(args); if (!options) { return Backups.volumes(...volumes).build(); } return Backups.with_options(options) .volumes(...volumes) .build(); } function splitOptions( args: SetupBackupsParams, ): [null | Partial, Array] { if (args.length > 0 && !string.test(args[0])) { const [options, ...restVolumes] = args; return [options, restVolumes as Array]; } return [null, args as Array]; }