@shopify/cli-kit
Version:
A set of utilities, interfaces, and models that are common across all the platform features
42 lines • 1.81 kB
JavaScript
import { fileExists, writeFile, readFile, findPathUp } from './fs.js';
import { joinPath, cwd } from './path.js';
import { outputContent, outputToken, outputDebug } from '../../public/node/output.js';
/**
* Check if user editor is VS Code.
*
* @param root - Root directory to start searching for .vscode directory.
* @returns True if user editor is VS Code.
*/
export async function isVSCode(root = cwd()) {
outputDebug(outputContent `Checking if the directory ${outputToken.path(root)} or any of its parents has a .vscode directory... `);
const config = await findPathUp(joinPath(root, '.vscode'), { type: 'directory' });
if (!config) {
return false;
}
return fileExists(config);
}
/**
* Add VSCode extension recommendations.
*
* @param directory - Directory that contains the .vscode folder.
* @param recommendations - List of VSCode extensions to recommend.
*/
export async function addRecommendedExtensions(directory, recommendations) {
outputDebug(outputContent `Adding VSCode recommended extensions at ${outputToken.path(directory)}:
${outputToken.json(recommendations)}
`);
const extensionsPath = joinPath(directory, '.vscode/extensions.json');
if (await isVSCode(directory)) {
let originalExtensionsJson = { recommendations: [] };
if (await fileExists(extensionsPath)) {
const originalExtensionsFile = await readFile(extensionsPath);
originalExtensionsJson = JSON.parse(originalExtensionsFile);
}
const newExtensionsJson = {
...originalExtensionsJson,
recommendations: [...originalExtensionsJson.recommendations, ...recommendations],
};
await writeFile(extensionsPath, JSON.stringify(newExtensionsJson, null, 2));
}
}
//# sourceMappingURL=vscode.js.map