* commit raw requirements Signed-off-by: pyranota <pyra@duck.com> * raw requirements Signed-off-by: pyranota <pyra@duck.com> * implement `parse_annotation` Signed-off-by: pyranota <pyra@duck.com> * more progress on wdeps Signed-off-by: pyranota <pyra@duck.com> * more progress Signed-off-by: pyranota <pyra@duck.com> * fixes Signed-off-by: pyranota <pyra@duck.com> * more progress Signed-off-by: pyranota <pyra@duck.com> * fixes Signed-off-by: pyranota <pyra@duck.com> * cli improvements + raw deps Signed-off-by: pyranota <pyra@duck.com> * cleanup Signed-off-by: pyranota <pyra@duck.com> * fix python versions Signed-off-by: pyranota <pyra@duck.com> * progress Signed-off-by: pyranota <pyra@duck.com> * update :) Signed-off-by: pyranota <pyra@duck.com> * add MaybeLock Signed-off-by: pyranota <pyra@duck.com> * go WIP Signed-off-by: pyranota <pyra@duck.com> * fix python ignoring py version from requirements Signed-off-by: pyranota <pyra@duck.com> * optimize php Signed-off-by: pyranota <pyra@duck.com> * require admin to alter Signed-off-by: pyranota <pyra@duck.com> * fix(cli): flow generateLocks raw deps Signed-off-by: pyranota <pyra@duck.com> * progress in checklist Signed-off-by: pyranota <pyra@duck.com> * fix agent workers Signed-off-by: pyranota <pyra@duck.com> * nits Signed-off-by: pyranota <pyra@duck.com> * nits Signed-off-by: pyranota <pyra@duck.com> * nit: remove default features Signed-off-by: pyranota <pyra@duck.com> * oh-wow Signed-off-by: pyranota <pyra@duck.com> * remove dbg! Signed-off-by: pyranota <pyra@duck.com> * nits Signed-off-by: pyranota <pyra@duck.com> * add indexes Signed-off-by: pyranota <pyra@duck.com> * cleanup Signed-off-by: pyranota <pyra@duck.com> * nits Signed-off-by: pyranota <pyra@duck.com> * remove todos Signed-off-by: pyranota <pyra@duck.com> * fix cli Signed-off-by: pyranota <pyra@duck.com> * add debug flag Signed-off-by: pyranota <pyra@duck.com> * cli: remove noise Signed-off-by: pyranota <pyra@duck.com> * fix cli Signed-off-by: pyranota <pyra@duck.com> * remove todos Signed-off-by: pyranota <pyra@duck.com> * trigger deps correctly Signed-off-by: pyranota <pyra@duck.com> * fix frontend Signed-off-by: pyranota <pyra@duck.com> * fix frontend again Signed-off-by: pyranota <pyra@duck.com> * finally fix frontend Signed-off-by: pyranota <pyra@duck.com> * ee repo ref Signed-off-by: pyranota <pyra@duck.com> * fix all Signed-off-by: pyranota <pyra@duck.com> * more fixes... Signed-off-by: pyranota <pyra@duck.com> * remove test Signed-off-by: pyranota <pyra@duck.com> * Update backend-test.yml * comment out legacy test Signed-off-by: pyranota <pyra@duck.com> * fix ci Signed-off-by: pyranota <pyra@duck.com> * fix ci? Signed-off-by: pyranota <pyra@duck.com> * comment out thing Signed-off-by: pyranota <pyra@duck.com> * ignore test Signed-off-by: pyranota <pyra@duck.com> * ci Signed-off-by: pyranota <pyra@duck.com> * base fixture Signed-off-by: pyranota <pyra@duck.com> * fix regression Signed-off-by: pyranota <pyra@duck.com> * fix docs links Signed-off-by: pyranota <pyra@duck.com> * update min version Signed-off-by: pyranota <pyra@duck.com> * simplify * implement cache for get_latest Signed-off-by: pyranota <pyra@duck.com> * move to workspace settings Signed-off-by: pyranota <pyra@duck.com> * sqlx + migration Signed-off-by: pyranota <pyra@duck.com> * more migrations Signed-off-by: pyranota <pyra@duck.com> * use box pin Signed-off-by: pyranota <pyra@duck.com> * nit Signed-off-by: pyranota <pyra@duck.com> --------- Signed-off-by: pyranota <pyra@duck.com> Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
79 lines
2.7 KiB
TypeScript
79 lines
2.7 KiB
TypeScript
// deno-lint-ignore-file no-explicit-any
|
|
import { GlobalOptions } from "../../types.ts";
|
|
import { colors, Command, JSZip, log } from "../../../deps.ts";
|
|
import { Workspace } from "../workspace/workspace.ts";
|
|
import { getHeaders } from "../../utils/utils.ts";
|
|
|
|
export async function downloadZip(
|
|
workspace: Workspace,
|
|
plainSecrets: boolean | undefined,
|
|
skipVariables?: boolean,
|
|
skipResources?: boolean,
|
|
skipResourceTypes?: boolean,
|
|
skipSecrets?: boolean,
|
|
includeSchedules?: boolean,
|
|
includeTriggers?: boolean,
|
|
includeUsers?: boolean,
|
|
includeGroups?: boolean,
|
|
includeSettings?: boolean,
|
|
includeKey?: boolean,
|
|
skipWorkspaceDependencies?: boolean,
|
|
defaultTs?: "bun" | "deno"
|
|
): Promise<JSZip | undefined> {
|
|
const requestHeaders = 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 includeWorkspaceDependenciesValue = !(skipWorkspaceDependencies ?? false);
|
|
const url = 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_triggers=${includeTriggers ?? false}&include_users=${includeUsers ?? false
|
|
}&include_groups=${includeGroups ?? false}&include_settings=${includeSettings ?? false
|
|
}&include_key=${includeKey ?? false}&include_workspace_dependencies=${includeWorkspaceDependenciesValue}&default_ts=${defaultTs ?? "bun"}&skip_resource_types=${skipResourceTypes ?? false}`;
|
|
|
|
const zipResponse = await fetch(url, {
|
|
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((await blob.arrayBuffer()) as any);
|
|
}
|
|
|
|
function stub(_opts: GlobalOptions & { override: boolean }, _dir: string) {
|
|
console.log(
|
|
colors.red.underline(
|
|
'Pull is deprecated. Use "sync pull --raw" instead. See <TODO_LINK_HERE> for more information.'
|
|
)
|
|
);
|
|
}
|
|
|
|
const command = new Command()
|
|
.description(
|
|
"Pull all definitions in the current workspace from the API and write them to disk."
|
|
)
|
|
.arguments("<dir:string>")
|
|
.action(stub as any);
|
|
|
|
export default command;
|