in src/archetype/createProject/SpecifyArchetypeVersionStep.ts [10:57]
public async run(metadata: IProjectCreationMetadata): Promise<StepResult> {
const disposables: Disposable[] = [];
const specifyAchetypeVersionPromise = new Promise<StepResult>((resolve, reject) => {
if (metadata.archetype?.versions === undefined) {
reject("Invalid archetype selected.");
return;
}
const pickBox: QuickPick<QuickPickItem> = window.createQuickPick<QuickPickItem>();
pickBox.title = "Create Maven Project";
pickBox.placeholder = `Select version of ${metadata.archetypeArtifactId}`;
pickBox.items = metadata.archetype.versions.map(version => ({
label: version
}));
if (this.previousStep) {
pickBox.buttons = [(QuickInputButtons.Back)];
disposables.push(
pickBox.onDidTriggerButton((item) => {
if (item === QuickInputButtons.Back) {
resolve(StepResult.PREVIOUS);
}
})
);
}
disposables.push(
pickBox.onDidTriggerButton((item) => {
if (item === QuickInputButtons.Back) {
resolve(StepResult.PREVIOUS);
}
}),
pickBox.onDidAccept(() => {
metadata.archetypeVersion = pickBox.selectedItems[0].label;
resolve(StepResult.NEXT);
}),
pickBox.onDidHide(() => {
resolve(StepResult.STOP);
})
);
disposables.push(pickBox);
pickBox.show();
});
try {
return await specifyAchetypeVersionPromise;
} finally {
disposables.forEach(d => d.dispose());
}
}