]> Git Repo - pico-vscode.git/blob - src/utils/ninjaUtil.mts
Update dependencies + auto-format
[pico-vscode.git] / src / utils / ninjaUtil.mts
1 import { readdirSync, statSync } from "fs";
2 import Logger from "../logger.mjs";
3 import { join } from "path";
4 import { homedir } from "os";
5
6 export interface InstalledNinja {
7   version: string;
8   path: string;
9 }
10
11 export function detectInstalledToolchains(): InstalledNinja[] {
12   // detect installed ninja versions by foldernames in $HOME/.pico-sdk/ninja/<version>
13   const homeDirectory = homedir();
14   const ninjaDirectory = join(homeDirectory, ".pico-sdk", "ninja");
15
16   try {
17     // check if pico-sdk directory exists
18     if (!statSync(ninjaDirectory).isDirectory()) {
19       Logger.log("No installed ninja found.");
20
21       return [];
22     }
23   } catch {
24     Logger.log("No installed ninja found.");
25
26     return [];
27   }
28
29   // scan foldernames in picoSDKDirectory/ninja
30   const installedNinjas: InstalledNinja[] = [];
31   try {
32     const versions = readdirSync(ninjaDirectory);
33     // TODO: better regex or alternative
34     for (const version of versions.filter(
35       version =>
36         /^\d+_\d+_\d+$/.test(version) &&
37         statSync(`${ninjaDirectory}/${version}`).isDirectory()
38     )) {
39       const toolchainPath = join(ninjaDirectory, version);
40
41       installedNinjas.push({ version, path: toolchainPath });
42     }
43   } catch {
44     Logger.log("Error while detecting installed Toolchains.");
45   }
46
47   return installedNinjas;
48 }
This page took 0.027524 seconds and 4 git commands to generate.