Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/execute/environment.ts
6458 views
1
/*
2
* environment.ts
3
*
4
* Copyright (C) 2024 Posit Software, PBC
5
*/
6
7
import { basename, dirname } from "../deno_ral/path.ts";
8
import { ExecuteOptions } from "./types.ts";
9
import { InternalError } from "../core/lib/error.ts";
10
import { resolve } from "../deno_ral/path.ts";
11
12
export const setExecuteEnvironment: (options: ExecuteOptions) => void = (
13
options,
14
) => {
15
if (options.projectDir) {
16
Deno.env.set("QUARTO_PROJECT_ROOT", options.projectDir);
17
Deno.env.set("QUARTO_DOCUMENT_PATH", dirname(options.target.source));
18
Deno.env.set("QUARTO_DOCUMENT_FILE", basename(options.target.source));
19
} else {
20
// FIXME: This should not be passthrough anymore as singleFileProjectContext always set `options.projectDir`
21
// https://github.com/quarto-dev/quarto-cli/pull/8771
22
if (!options.cwd) {
23
throw new InternalError(
24
"No project directory or current working directory",
25
);
26
}
27
Deno.env.set("QUARTO_PROJECT_ROOT", options.cwd);
28
Deno.env.set("QUARTO_DOCUMENT_PATH", options.cwd);
29
Deno.env.set("QUARTO_DOCUMENT_FILE", basename(options.target.source));
30
}
31
32
const executeInfo: Record<string, unknown> = {
33
"document-path": resolve(options.target.source),
34
format: options.format,
35
};
36
37
Deno.env.set(
38
"QUARTO_EXECUTE_INFO",
39
options.project.temp.createFileFromString(JSON.stringify(executeInfo)),
40
);
41
};
42
43