in src/handler/SpecifyDependenciesStep.ts [30:84]
private async specifyDependencies(projectMetadata: IProjectMetadata): Promise<boolean> {
const dependencyManager = new DependencyManager();
let current: IDependenciesItem = null;
let result: boolean = false;
const disposables: Disposable[] = [];
dependencyManager.selectedIds = projectMetadata.defaults.dependencies || [];
do {
const quickPickItems: Array<QuickPickItem & IDependenciesItem> = await dependencyManager.getQuickPickItems(projectMetadata.serviceUrl, projectMetadata.bootVersion, { hasLastSelected: true });
result = await new Promise<boolean>(async (resolve, reject) => {
const pickBox: QuickPick<QuickPickItem & IDependenciesItem> = window.createQuickPick<QuickPickItem & IDependenciesItem>();
pickBox.title = "Spring Initializr: Choose dependencies",
pickBox.placeholder = "Search for dependencies.";
pickBox.items = quickPickItems;
pickBox.ignoreFocusOut = true;
pickBox.matchOnDetail = true;
pickBox.matchOnDescription = true;
if (projectMetadata.pickSteps.length > 0) {
pickBox.buttons = [(QuickInputButtons.Back)];
disposables.push(
pickBox.onDidTriggerButton((item) => {
if (item === QuickInputButtons.Back) {
resolve(false);
}
})
);
}
disposables.push(
pickBox.onDidAccept(() => {
if (!pickBox.selectedItems[0]) {
return;
}
current = pickBox.selectedItems[0];
resolve(true);
}),
pickBox.onDidHide(() => {
reject(new OperationCanceledError("Canceled on dependency selection."));
})
);
disposables.push(pickBox);
pickBox.show();
});
for (const d of disposables) {
d.dispose();
}
if (!result) {
return result;
}
if (current && current.itemType === "dependency") {
dependencyManager.toggleDependency(current.id);
}
} while (current && current.itemType === "dependency");
projectMetadata.dependencies = current;
dependencyManager.updateLastUsedDependencies(current);
return result;
}