blob: 00d002bedb421d32ddfbb178f6d746402926cde2 [file] [log] [blame]
import * as cp from "child_process";
import { Uri, workspace } from "vscode";
function metadataReferencesInsta(metadata: any): boolean {
for (const pkg of metadata.packages) {
if (pkg.name === "insta") {
return true;
}
for (const dependency of pkg.dependencies) {
if (dependency.name === "insta") {
return true;
}
}
}
return false;
}
export async function projectUsesInsta(root: Uri): Promise<boolean> {
const rootCargoToml = Uri.joinPath(root, "Cargo.toml");
try {
await workspace.fs.stat(rootCargoToml);
} catch (e) {
return false;
}
return new Promise((resolve, reject) => {
let buffer = "";
const child = cp.spawn("cargo", [
"metadata",
"--no-deps",
"--format-version=1",
]);
child.stdout?.setEncoding("utf8");
child.stdout.on("data", (data) => (buffer += data));
child.on("close", (exitCode) => {
if (exitCode != 0) {
return resolve(false);
}
try {
resolve(metadataReferencesInsta(JSON.parse(buffer)));
} catch (e) {
reject(e);
}
});
});
}