Skip to content

Commit 6fbc5ef

Browse files
authored
Show task recommendation based on project lang/tooling (#591)
* #451 show task recommendation based on project lang/tooling Signed-off-by: Yevhen Vydolob <[email protected]> * use npm package to recognize project Signed-off-by: Yevhen Vydolob <[email protected]> * refactoring Signed-off-by: Yevhen Vydolob <[email protected]> * Use alizer package Signed-off-by: Yevhen Vydolob <[email protected]>
1 parent 039f6f4 commit 6fbc5ef

File tree

11 files changed

+260
-37
lines changed

11 files changed

+260
-37
lines changed

package-lock.json

Lines changed: 120 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -948,6 +948,7 @@
948948
},
949949
"dependencies": {
950950
"@kubernetes/client-node": "^0.12.2",
951+
"@redhat-developer/alizer": "^0.0.1",
951952
"@redhat-developer/vscode-redhat-telemetry": "^0.2.0",
952953
"axios": "^0.21.1",
953954
"binary-search": "^1.3.5",
@@ -956,6 +957,7 @@
956957
"event-stream": "3.3.4",
957958
"fs-extra": "^7.0.1",
958959
"fuzzysearch": "^1.0.3",
960+
"fuzzysort": "^1.1.4",
959961
"git-fetch-pack": "^0.1.1",
960962
"git-transport-protocol": "^0.1.0",
961963
"hasha": "5.0.0",
@@ -977,4 +979,4 @@
977979
"validator": "^11.0.0",
978980
"vscode-kubernetes-tools-api": "1.3.0"
979981
}
980-
}
982+
}

src/hub/hub-client.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export async function getTektonHubStatus(): Promise<TektonHubStatus> {
3636
export async function searchTask(name: string): Promise<hubApi.ResourceData[]> {
3737
try {
3838
const resApi = createResourceApi();
39-
const result = await resApi.resourceQuery(name);
39+
const result = await resApi.resourceQuery(name, undefined, ['task'], undefined, undefined, 'contains');
4040
return result.data.data;
4141
} catch (err) {
4242
if (err instanceof Error ){
@@ -49,6 +49,12 @@ export async function searchTask(name: string): Promise<hubApi.ResourceData[]> {
4949
}
5050
}
5151

52+
export async function listTasks(limit = 1000): Promise<hubApi.ResourceData[]> {
53+
const restApi = createResourceApi();
54+
const result = await restApi.resourceList(limit);
55+
return result.data.data;
56+
}
57+
5258
export async function getVersions(id: number): Promise<hubApi.Versions> {
5359
const restApi = createResourceApi();
5460
const result = await restApi.resourceVersionsByID(id);

src/hub/hub-common.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface HubTaskInstallation {
1212
minPipelinesVersion?: string;
1313
asClusterTask: boolean;
1414
taskVersion?: ResourceVersionData;
15+
view: string;
1516
}
1617

1718
export interface HubTaskUninstall {
@@ -24,7 +25,7 @@ export interface InstalledTask extends ResourceData {
2425
clusterTask?: boolean;
2526
}
2627

27-
export type HubTask = InstalledTask | ResourceData
28+
export type HubTask = (InstalledTask | ResourceData) & { view?: string }
2829

2930
export function isInstalledTask(task: HubTask): task is InstalledTask {
3031
return (task as InstalledTask).installedVersion !== undefined;

src/hub/hub-recommendation.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*-----------------------------------------------------------------------------------------------
2+
* Copyright (c) Red Hat, Inc. All rights reserved.
3+
* Licensed under the MIT License. See LICENSE file in the project root for license information.
4+
*-----------------------------------------------------------------------------------------------*/
5+
6+
import * as vscode from 'vscode';
7+
import { getProjectType } from '../project-analizer/language-recongnizer/recognazer'
8+
9+
const MAX_LANG_AND_TOOLS = 10;
10+
export async function startDetectingLanguage(): Promise<string[]> {
11+
const folder = vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders[0];
12+
if (folder) {
13+
try {
14+
const langAndTools = await getProjectType(folder.uri.fsPath);
15+
if (langAndTools && langAndTools.length > 0) {
16+
17+
const result = [];
18+
for (const element of langAndTools) {
19+
result.push(element.name);
20+
result.push(element.builder);
21+
if (element.frameworks){
22+
result.push(...element.frameworks);
23+
}
24+
if (result.length >= MAX_LANG_AND_TOOLS) {
25+
break;
26+
}
27+
}
28+
29+
return result;
30+
}
31+
} catch (err) {
32+
console.error(err);
33+
}
34+
}
35+
36+
return [];
37+
}
38+

0 commit comments

Comments
 (0)