Skip to content

Commit 3c6ebab

Browse files
authored
Merge pull request microsoft#186450 from sandeep-sen/main
Enabling tag telemetry for Go
2 parents 3b7d859 + ea2412a commit 3c6ebab

File tree

1 file changed

+74
-2
lines changed

1 file changed

+74
-2
lines changed

src/vs/workbench/contrib/tags/electron-sandbox/workspaceTagsService.ts

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,28 @@ const PyModulesToLookFor = [
244244
'playwright'
245245
];
246246

247+
const GoModulesToLookFor = [
248+
'github.com/Azure/azure-sdk-for-go/sdk/storage/azblob',
249+
'github.com/Azure/azure-sdk-for-go/sdk/storage/azfile',
250+
'github.com/Azure/azure-sdk-for-go/sdk/storage/azqueue',
251+
'github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel',
252+
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azadmin',
253+
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates',
254+
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys',
255+
'github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets',
256+
'github.com/Azure/azure-sdk-for-go/sdk/monitor/azquery',
257+
'github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs',
258+
'github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus',
259+
'github.com/Azure/azure-sdk-for-go/sdk/data/azappconfig',
260+
'github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos',
261+
'github.com/Azure/azure-sdk-for-go/sdk/data/aztables',
262+
'github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry',
263+
'github.com/Azure/azure-sdk-for-go/sdk/cognitiveservices/azopenai',
264+
'github.com/Azure/azure-sdk-for-go/sdk/azidentity',
265+
'github.com/Azure/azure-sdk-for-go/sdk/azcore'
266+
];
267+
268+
247269
export class WorkspaceTagsService implements IWorkspaceTagsService {
248270
declare readonly _serviceBrand: undefined;
249271
private _tags: Tags | undefined;
@@ -565,7 +587,25 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
565587
"workspace.py.azure-communication-administration" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
566588
"workspace.py.azure-security-attestation" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
567589
"workspace.py.azure-data-nspkg" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
568-
"workspace.py.azure-data-tables" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }
590+
"workspace.py.azure-data-tables" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
591+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
592+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/storage/azfile" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
593+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/storage/azqueue" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
594+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
595+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azadmin" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
596+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
597+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
598+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
599+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/monitor/azquery" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
600+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
601+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
602+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/data/azappconfig" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
603+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
604+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/data/aztables" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
605+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/containers/azcontainerregistry" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
606+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/cognitiveservices/azopenai" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
607+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/azidentity" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
608+
"workspace.go.mod.github.com/Azure/azure-sdk-for-go/sdk/azcore" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }
569609
}
570610
*/
571611
private async resolveWorkspaceTags(): Promise<Tags> {
@@ -624,6 +664,8 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
624664
tags['workspace.py.app'] = nameSet.has('app.py');
625665
tags['workspace.py.pyproject'] = nameSet.has('pyproject.toml');
626666

667+
tags['workspace.go.mod'] = nameSet.has('go.mod');
668+
627669
const mainActivity = nameSet.has('mainactivity.cs') || nameSet.has('mainactivity.fs');
628670
const appDelegate = nameSet.has('appdelegate.cs') || nameSet.has('appdelegate.fs');
629671
const androidManifest = nameSet.has('androidmanifest.xml');
@@ -752,6 +794,36 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
752794
}
753795
});
754796

797+
const goModPromises = getFilePromises('go.mod', this.fileService, this.textFileService, content => {
798+
try {
799+
const lines: string[] = splitLines(content.value);
800+
let firstRequireBlockFound: boolean = false;
801+
for (let i = 0; i < lines.length; i++) {
802+
const line: string = lines[i].trim();
803+
if (line.startsWith('require (')) {
804+
if (!firstRequireBlockFound) {
805+
firstRequireBlockFound = true;
806+
continue;
807+
} else {
808+
break;
809+
}
810+
}
811+
if (line.startsWith(')')) {
812+
break;
813+
}
814+
if (firstRequireBlockFound && line !== '') {
815+
const packageName: string = line.split(' ')[0].trim();
816+
if (GoModulesToLookFor.indexOf(packageName) > -1) {
817+
tags['workspace.go.mod.' + packageName] = true;
818+
}
819+
}
820+
}
821+
}
822+
catch (e) {
823+
// Ignore errors when resolving file or parsing file contents
824+
}
825+
});
826+
755827
const pomPromises = getFilePromises('pom.xml', this.fileService, this.textFileService, content => {
756828
try {
757829
let dependenciesContent;
@@ -792,7 +864,7 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
792864
});
793865
});
794866

795-
return Promise.all([...packageJsonPromises, ...requirementsTxtPromises, ...pipfilePromises, ...pomPromises, ...gradlePromises, ...androidPromises]).then(() => tags);
867+
return Promise.all([...packageJsonPromises, ...requirementsTxtPromises, ...pipfilePromises, ...pomPromises, ...gradlePromises, ...androidPromises, ...goModPromises]).then(() => tags);
796868
});
797869
}
798870

0 commit comments

Comments
 (0)