public async provideTasks()

in src/exportJarSteps/ExportJarTaskProvider.ts [115:162]


    public async provideTasks(): Promise<Task[] | undefined> {
        const folders: readonly WorkspaceFolder[] = workspace.workspaceFolders || [];
        if (_.isEmpty(folders)) {
            return undefined;
        }
        if (!_.isEmpty(this.tasks)) {
            return this.tasks;
        }
        this.tasks = [];
        for (const folder of folders) {
            const projectList: INodeData[] = await Jdtls.getProjects(folder.uri.toString());
            const elementList: string[] = [];
            if (_.isEmpty(projectList)) {
                continue;
            } else if (projectList.length === 1) {
                elementList.push("${" + ExportJarConstants.COMPILE_OUTPUT + "}",
                    "${" + ExportJarConstants.DEPENDENCIES + "}");
            } else {
                for (const project of projectList) {
                    elementList.push("${" + ExportJarConstants.COMPILE_OUTPUT + ":" + project.name + "}",
                        "${" + ExportJarConstants.DEPENDENCIES + ":" + project.name + "}");
                }
            }
            const mainClasses: IMainClassInfo[] = await Jdtls.getMainClasses(folder.uri.toString());
            const defaultDefinition: IExportJarTaskDefinition = {
                type: ExportJarTaskProvider.exportJarType,
                mainClass: (mainClasses.length === 1) ? mainClasses[0].name : undefined,
                targetPath: Settings.getExportJarTargetPath(),
                elements: elementList,
            };
            const defaultTask: Task = new Task(defaultDefinition, folder, `exportjar:${folder.name}`, ExportJarTaskProvider.exportJarType,
                new CustomExecution(async (resolvedDefinition: IExportJarTaskDefinition): Promise<Pseudoterminal> => {
                    const stepMetadata: IStepMetadata = {
                        entry: undefined,
                        taskLabel: resolvedDefinition.label || `exportjar:${folder.name}`,
                        workspaceFolder: folder,
                        projectList: await Jdtls.getProjects(folder.uri.toString()),
                        steps: [],
                        elements: [],
                        classpaths: [],
                    };
                    return new ExportJarTaskTerminal(resolvedDefinition, stepMetadata);
                }), undefined);
            defaultTask.presentationOptions.reveal = TaskRevealKind.Never;
            this.tasks.push(defaultTask);
        }
        return this.tasks;
    }