mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 16:02:10 +00:00
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { colors } from "https://deno.land/x/cliffy@v0.25.4/ansi/colors.ts";
|
|
import {
|
|
setClient,
|
|
UserService,
|
|
} from "https://deno.land/x/windmill@v1.41.0/mod.ts";
|
|
import { getToken } from "./login.ts";
|
|
import { getDefaultRemote, getRemote } from "./remote.ts";
|
|
import { getStore } from "./store.ts";
|
|
import { GlobalOptions } from "./types.ts";
|
|
import { getDefaultWorkspaceId } from "./workspace.ts";
|
|
|
|
export type Context = {
|
|
workspace: string;
|
|
baseUrl: string;
|
|
urlStore: string;
|
|
};
|
|
|
|
export async function getContext({
|
|
baseUrl,
|
|
remote,
|
|
workspace,
|
|
token,
|
|
email,
|
|
password,
|
|
}: GlobalOptions): Promise<Context> {
|
|
if (remote) {
|
|
baseUrl = baseUrl ?? (await getRemote(remote))?.baseUrl;
|
|
}
|
|
baseUrl = baseUrl ?? (await getDefaultRemote())?.baseUrl;
|
|
baseUrl = baseUrl ?? "https://app.windmill.dev";
|
|
if (email && password) {
|
|
setClient("no-token", baseUrl);
|
|
token =
|
|
token ?? (await UserService.login({ requestBody: { email, password } }));
|
|
}
|
|
token = token ?? (await getToken(baseUrl));
|
|
setClient(token, baseUrl);
|
|
const urlStore = await getStore(baseUrl);
|
|
const workspaceId = workspace ?? (await getDefaultWorkspaceId(urlStore));
|
|
if (!workspaceId) {
|
|
console.log(colors.red("No default workspace set and no override given."));
|
|
Deno.exit(-2);
|
|
}
|
|
return {
|
|
workspace: workspaceId,
|
|
baseUrl: baseUrl,
|
|
urlStore: urlStore,
|
|
};
|
|
}
|