48 lines
1.9 KiB
JavaScript
48 lines
1.9 KiB
JavaScript
import chalk from "chalk";
|
|
import { showStartupInput, showStartupSelector } from "./startup-ui.js";
|
|
export function createProjectTrustContext(options) {
|
|
return {
|
|
cwd: options.cwd,
|
|
mode: options.mode === "interactive" ? "tui" : options.mode,
|
|
hasUI: options.hasUI,
|
|
ui: {
|
|
select: async (title, selectOptions) => {
|
|
if (!options.hasUI) {
|
|
return undefined;
|
|
}
|
|
if (options.mode !== "interactive") {
|
|
return undefined;
|
|
}
|
|
return showStartupSelector(options.settingsManager, title, selectOptions.map((option) => ({ label: option, value: option })));
|
|
},
|
|
confirm: async (title, message) => {
|
|
if (!options.hasUI) {
|
|
return false;
|
|
}
|
|
if (options.mode !== "interactive") {
|
|
return false;
|
|
}
|
|
return ((await showStartupSelector(options.settingsManager, `${title}\n${message}`, [
|
|
{ label: "Yes", value: true },
|
|
{ label: "No", value: false },
|
|
])) ?? false);
|
|
},
|
|
input: async (title, placeholder) => {
|
|
if (!options.hasUI) {
|
|
return undefined;
|
|
}
|
|
if (options.mode !== "interactive") {
|
|
return undefined;
|
|
}
|
|
return showStartupInput(options.settingsManager, title, placeholder);
|
|
},
|
|
notify: (message, type = "info") => {
|
|
if (options.mode !== "interactive") {
|
|
const color = type === "error" ? chalk.red : type === "warning" ? chalk.yellow : chalk.cyan;
|
|
console.error(color(message));
|
|
}
|
|
},
|
|
},
|
|
};
|
|
}
|
|
//# sourceMappingURL=project-trust.js.map
|