// deno-lint-ignore-file no-explicit-any import { GlobalOptions } from "./types.ts"; import { colors, Command, JSZip, log } from "./deps.ts"; import { Workspace } from "./workspace.ts"; import { getHeaders } from "./utils.ts"; export async function downloadZip( workspace: Workspace, plainSecrets: boolean | undefined, skipVariables?: boolean, skipResources?: boolean, skipSecrets?: boolean, includeSchedules?: boolean, includeUsers?: boolean, includeGroups?: boolean, includeSettings?: boolean, defaultTs?: "bun" | "deno" ): Promise { const requestHeaders: HeadersInit = new Headers(); requestHeaders.set("Authorization", "Bearer " + workspace.token); requestHeaders.set("Content-Type", "application/octet-stream"); const extraHeaders = getHeaders(); if (extraHeaders) { for (const [key, value] of Object.entries(extraHeaders)) { requestHeaders.set(key, value); } } const zipResponse = await fetch( workspace.remote + "api/w/" + workspace.workspaceId + `/workspaces/tarball?archive_type=zip&plain_secret=${ plainSecrets ?? false }&skip_variables=${skipVariables ?? false}&skip_resources=${ skipResources ?? false }&skip_secrets=${skipSecrets ?? false}&include_schedules=${ includeSchedules ?? false }&include_users=${includeUsers ?? false}&include_groups=${ includeGroups ?? false }&include_settings=${includeSettings ?? false}&default_ts=${ defaultTs ?? "deno" }`, { headers: requestHeaders, method: "GET", } ); if (!zipResponse.ok) { console.log( colors.red("Failed to request tarball from API " + zipResponse.statusText) ); throw new Error(await zipResponse.text()); } else { log.debug(`Downloaded zip/tarball successfully`); } const blob = await zipResponse.blob(); return await JSZip.loadAsync(blob as any); } async function stub( _opts: GlobalOptions & { override: boolean }, _dir: string ) { console.log( colors.red.underline( 'Pull is deprecated. Use "sync pull --raw" instead. See for more information.' ) ); } const command = new Command() .description( "Pull all definitions in the current workspace from the API and write them to disk." ) .arguments("") .action(stub as any); export default command;