Skip to content

Commit 1143d6b

Browse files
committed
Experimental build selector fixes
1 parent 3ca14b2 commit 1143d6b

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

src/extension.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,10 @@ export async function activate(context: vscode.ExtensionContext) {
586586
vscode.commands.registerCommand("zephyr-ide.add-build", async () => {
587587
if (wsConfig.activeSetupState && wsConfig.activeSetupState.westUpdated) {
588588
let result = await project.addBuild(wsConfig, context);
589+
console.log("Updating web view");
590+
console.log(result);
589591
vscode.commands.executeCommand("zephyr-ide.update-web-view");
592+
console.log("returning from adding build");
590593
return result;
591594
} else {
592595
vscode.window.showErrorMessage("Run `Zephyr IDE: West Update` first.");

src/project_utilities/build_selector.ts

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,18 @@ async function getBoardlistWest(setupState: SetupState, folder: vscode.Uri | und
7575
}
7676

7777
let prevError: any;
78-
if (setupState.zephyrVersion === undefined) { return; }
78+
console.log("zephyrVersion");
79+
console.log(setupState.zephyrVersion);
80+
81+
if (setupState.zephyrVersion === undefined) {
82+
console.log("Returning because zephyrVersion is not set");
83+
return;
84+
}
7985
let res;
8086
let has_qualifiers = false;
8187
let has_revisions = false;
88+
console.log("Getting board list");
89+
8290
if (isVersionNumberGreater(setupState.zephyrVersion, 4, 1, 0)) {
8391
res = await executeShellCommandInPythonEnv("west boards -f '{name};{dir};{qualifiers};{revisions};{revision_default}'" + boardRootString, setupState.setupPath, setupState, false);
8492
has_qualifiers = true;
@@ -89,6 +97,8 @@ async function getBoardlistWest(setupState: SetupState, folder: vscode.Uri | und
8997
} else {
9098
res = await executeShellCommandInPythonEnv("west boards -f '{name};{dir}'" + boardRootString, setupState.setupPath, setupState, false);
9199
}
100+
console.log("Got board list");
101+
92102

93103
if (!res.stdout) {
94104
output.append(prevError);
@@ -155,7 +165,7 @@ export async function pickBoard(setupState: SetupState, rootPath: string) {
155165
const boardDirectoriesQpItems: QuickPickItem[] = boardDirectories.map(label => ({ label }));
156166

157167
const title = "Board Picker";
158-
168+
console.log("picking directories");
159169
let pickPromise = showQuickPick({
160170
title,
161171
step: 1,
@@ -176,6 +186,7 @@ export async function pickBoard(setupState: SetupState, rootPath: string) {
176186

177187
let relBoardDir: string | undefined = path.relative(rootPath, (pick.label));
178188
if (pick.label === "Select Other Folder") {
189+
console.log("selecting other folder");
179190
const boarddir = await vscode.window.showOpenDialog({
180191
canSelectFiles: false,
181192
canSelectFolders: true,
@@ -192,13 +203,19 @@ export async function pickBoard(setupState: SetupState, rootPath: string) {
192203
}
193204

194205
let boardList;
206+
console.log("getting board list");
207+
console.log(relBoardDir);
208+
195209
if (relBoardDir) {
196210
boardList = await getBoardlistWest(setupState, vscode.Uri.file(path.join(rootPath, relBoardDir)));
197211
} else {
198212
boardList = await getBoardlistWest(setupState, undefined);
199213
}
214+
console.log("finished getting boar lsit");
200215

201216
if (!boardList) {
217+
console.log("empty board list");
218+
202219
return;
203220
}
204221

@@ -213,12 +230,17 @@ export async function pickBoard(setupState: SetupState, rootPath: string) {
213230
activeItem: undefined
214231
}).catch((error) => {
215232
console.error(error);
233+
234+
console.log("Pick Board error");
216235
return undefined;
217236
});
218237
pick = (await pickPromise as QuickPickItem);
219238
if (!pick) {
239+
console.log("Pick error");
240+
220241
return;
221242
};
243+
console.log(pick);
222244

223245
let pick_data = (pick as BoardItem);
224246

@@ -256,17 +278,20 @@ export async function pickBoard(setupState: SetupState, rootPath: string) {
256278
activeItem: revisionQPItems[revisionIndex]
257279
}).catch((error) => {
258280
console.error(error);
281+
282+
console.log("pick rev error");
259283
return undefined;
260284
});
261285
let pick = (await pickPromise as QuickPickItem);
262286
if (!pick) {
287+
288+
console.log("pick error");
263289
return;
264290
};
265291
revision = pick.label;
266292
}
267293

268-
269-
294+
console.log("returning board config");
270295
let boardConfig = {
271296
board: board,
272297
relBoardDir: relBoardDir,
@@ -280,6 +305,7 @@ export async function buildSelector(context: ExtensionContext, setupState: Setup
280305
const title = 'Add Build Configuration';
281306

282307
async function pickBoardStep(input: MultiStepInput, state: Partial<BuildConfig>) {
308+
console.log("picking board");
283309
let boardData = await pickBoard(setupState, rootPath);
284310
if (boardData) {
285311
state.relBoardDir = boardData.relBoardDir;

src/project_utilities/project.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,13 @@ export async function addProject(wsConfig: WorkspaceConfig, context: vscode.Exte
505505

506506
export async function addBuildToProject(wsConfig: WorkspaceConfig, context: vscode.ExtensionContext, projectName: string) {
507507

508+
console.log(`Startign build1`);
508509
if (wsConfig.activeSetupState) {
509510

511+
console.log(`Startign build2`);
510512
let result = await buildSelector(context, wsConfig.activeSetupState, wsConfig.rootPath);
513+
514+
console.log(`build selector returned`);
511515
if (result && result.name !== undefined) {
512516
result.runnerConfigs = {};
513517
if (wsConfig.projects[projectName].buildConfigs[result.name]) {
@@ -517,7 +521,7 @@ export async function addBuildToProject(wsConfig: WorkspaceConfig, context: vsco
517521
return;
518522
}
519523
}
520-
524+
console.log(`Creating Build Configuration: ${result.name}`);
521525
vscode.window.showInformationMessage(`Creating Build Configuration: ${result.name}`);
522526
wsConfig.projects[projectName].buildConfigs[result.name] = result;
523527
wsConfig.projectStates[projectName].buildStates[result.name] = { runnerStates: {}, viewOpen: true };

src/test/workflow-integration.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,15 @@ suite("Workflow Integration Test Suite", () => {
445445
globalQuickPickCallCount = 0;
446446
globalInputBoxCallCount = 0;
447447
currentStep = "build-config";
448+
449+
// Check if west is available before attempting build config
450+
const ext = vscode.extensions.getExtension("mylonics.zephyr-ide");
451+
const wsConfig = ext?.exports?.getWorkspaceConfig();
452+
if (!wsConfig?.initialSetupComplete) {
453+
console.log("⚠️ Setup not complete, retrying in 10 seconds...");
454+
await new Promise((resolve) => setTimeout(resolve, 10000));
455+
}
456+
448457
result = await vscode.commands.executeCommand("zephyr-ide.add-build");
449458
assert.ok(result, "Build configuration should succeed");
450459

0 commit comments

Comments
 (0)