1 import { readdirSync, statSync } from "fs";
2 import Logger from "../logger.mjs";
3 import { join } from "path";
4 import { homedir } from "os";
6 export interface InstalledNinja {
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");
17 // check if pico-sdk directory exists
18 if (!statSync(ninjaDirectory).isDirectory()) {
19 Logger.log("No installed ninja found.");
24 Logger.log("No installed ninja found.");
29 // scan foldernames in picoSDKDirectory/ninja
30 const installedNinjas: InstalledNinja[] = [];
32 const versions = readdirSync(ninjaDirectory);
33 // TODO: better regex or alternative
34 for (const version of versions.filter(
36 /^\d+_\d+_\d+$/.test(version) &&
37 statSync(`${ninjaDirectory}/${version}`).isDirectory()
39 const toolchainPath = join(ninjaDirectory, version);
41 installedNinjas.push({ version, path: toolchainPath });
44 Logger.log("Error while detecting installed Toolchains.");
47 return installedNinjas;