@@ -14,6 +14,8 @@ import {
1414 cmakeGetPicoVar ,
1515} from "../utils/cmakeUtil.mjs" ;
1616import { join } from "path" ;
17+ import { resolve } from "path" ;
18+ import { normalize } from "path" ;
1719import { compareLt } from "../utils/semverUtil.mjs" ;
1820import type UI from "../ui.mjs" ;
1921import { updateVSCodeStaticConfigs } from "../utils/vscodeConfigUtil.mjs" ;
@@ -49,12 +51,32 @@ export default class SwitchBoardCommand extends Command {
4951 const ws = workspaceFolder . uri . fsPath ;
5052 const cMakeCachePath = join ( ws , "build" , "CMakeCache.txt" ) ;
5153
52- const picoBoardHeaderDirs = cmakeGetPicoVar (
54+ let picoBoardHeaderDirs = cmakeGetPicoVar (
5355 cMakeCachePath ,
5456 "PICO_BOARD_HEADER_DIRS" ) ;
5557
5658 if ( picoBoardHeaderDirs ) {
57- boardHeaderDirList . push ( picoBoardHeaderDirs ) ;
59+ if ( picoBoardHeaderDirs . startsWith ( "'" ) ) {
60+ const substrLen = picoBoardHeaderDirs . length - 1 ;
61+ picoBoardHeaderDirs = picoBoardHeaderDirs . substring ( 1 , substrLen ) ;
62+ }
63+
64+ const picoBoardHeaderDirList = picoBoardHeaderDirs . split ( ";" ) ;
65+ picoBoardHeaderDirList . forEach (
66+ item => {
67+ let boardPath = resolve ( item ) ;
68+ const normalized = normalize ( item ) ;
69+
70+ //If path is not absolute, join workspace path
71+ if ( boardPath !== normalized ) {
72+ boardPath = join ( ws , normalized ) ;
73+ }
74+
75+ if ( existsSync ( boardPath ) ) {
76+ boardHeaderDirList . push ( boardPath ) ;
77+ }
78+ }
79+ ) ;
5880 }
5981 }
6082
0 commit comments