char/avril

(wip) why'd you have to go and make things so complicaaaaated?

git clone https://git.t4t.associates/char/avril

Charlotte Somextract avril-task crate + add avril:task module7f4058a

main
1.5 KiB57 linesraw
1declare module "ext:core/ops" {
2  export function op_console_print(args: [stderr: boolean, text: string]): null;
3
4  export type TaskActionJson =
5    | "None"
6    | { Shell: string }
7    | { Argv: string[] }
8    | { Callback: { id: number; key: string } };
9
10  export interface TaskReadyJson {
11    name: string;
12    action: TaskActionJson;
13    args: string[];
14    env: Record<string, string>;
15  }
16
17  export interface TaskReportJson {
18    code: number;
19    completed: string[];
20    failed: { name: string; code: number }[];
21    cached: string[];
22  }
23
24  export type TaskStepJson = { Ready: TaskReadyJson[] } | { Done: TaskReportJson };
25
26  export interface TaskGraphJson {
27    tasks: Record<string, {
28      description: string | null;
29      action: TaskActionJson;
30      dependencies: string[];
31      parallel: boolean;
32      env_file: string | null;
33      files: string[] | null;
34      output: string[];
35      env: string[];
36    }>;
37  }
38
39  export function op_task_begin(args: {
40    graph: TaskGraphJson;
41    root: string;
42    target: string;
43    args: string[];
44    force: boolean;
45    cache_dir: string;
46  }): number;
47  export function op_task_step(session: number): TaskStepJson;
48  export function op_task_finish(args: { session: number; name: string; code: number }): void;
49  export function op_task_drop(session: number): boolean;
50  export function op_task_digest(graph: TaskGraphJson): string;
51  export function op_task_relevant(args: {
52    graph: TaskGraphJson;
53    target: string;
54    root: string;
55    paths: { path: string; structural: boolean }[];
56  }): boolean;
57}