async function inferPackageFsPath()

in src/explorerCommands/new.ts [85:133]


async function inferPackageFsPath(): Promise<string> {
    const javaLanguageSupport: Extension<any> | undefined = extensions.getExtension(ExtensionName.JAVA_LANGUAGE_SUPPORT);
    if (!javaLanguageSupport || !javaLanguageSupport.isActive) {
        return "";
    }

    const extensionApi: any = javaLanguageSupport.exports;
    if (!extensionApi) {
        return "";
    }

    if (extensionApi.serverMode !== "Standard" || extensionApi.status !== "Started") {
        return "";
    }

    let sourcePaths: string[] | undefined;
    try {
        const result = await commands.executeCommand<IListCommandResult>(Commands.EXECUTE_WORKSPACE_COMMAND, Commands.LIST_SOURCEPATHS);
        if (result && result.data && result.data.length) {
            sourcePaths = result.data.map((entry) => entry.path);
        }
    } catch (e) {
        // do nothing
    }

    if (!window.activeTextEditor) {
        if (sourcePaths?.length === 1) {
            return sourcePaths[0];
        }
        return "";
    }

    const fileUri: Uri = window.activeTextEditor.document.uri;
    const workspaceFolder: WorkspaceFolder | undefined = workspace.getWorkspaceFolder(fileUri);
    if (!workspaceFolder) {
        return "";
    }

    const filePath: string = window.activeTextEditor.document.uri.fsPath;
    if (sourcePaths) {
        for (const sourcePath of sourcePaths) {
            if (!path.relative(sourcePath, filePath).startsWith("..")) {
                return path.dirname(window.activeTextEditor.document.uri.fsPath);
            }
        }
    }

    return "";
}