@@ -244,6 +244,28 @@ const PyModulesToLookFor = [
244
244
'playwright'
245
245
] ;
246
246
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
+
247
269
export class WorkspaceTagsService implements IWorkspaceTagsService {
248
270
declare readonly _serviceBrand : undefined ;
249
271
private _tags : Tags | undefined ;
@@ -565,7 +587,25 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
565
587
"workspace.py.azure-communication-administration" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
566
588
"workspace.py.azure-security-attestation" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true },
567
589
"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 }
569
609
}
570
610
*/
571
611
private async resolveWorkspaceTags ( ) : Promise < Tags > {
@@ -624,6 +664,8 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
624
664
tags [ 'workspace.py.app' ] = nameSet . has ( 'app.py' ) ;
625
665
tags [ 'workspace.py.pyproject' ] = nameSet . has ( 'pyproject.toml' ) ;
626
666
667
+ tags [ 'workspace.go.mod' ] = nameSet . has ( 'go.mod' ) ;
668
+
627
669
const mainActivity = nameSet . has ( 'mainactivity.cs' ) || nameSet . has ( 'mainactivity.fs' ) ;
628
670
const appDelegate = nameSet . has ( 'appdelegate.cs' ) || nameSet . has ( 'appdelegate.fs' ) ;
629
671
const androidManifest = nameSet . has ( 'androidmanifest.xml' ) ;
@@ -752,6 +794,36 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
752
794
}
753
795
} ) ;
754
796
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
+
755
827
const pomPromises = getFilePromises ( 'pom.xml' , this . fileService , this . textFileService , content => {
756
828
try {
757
829
let dependenciesContent ;
@@ -792,7 +864,7 @@ export class WorkspaceTagsService implements IWorkspaceTagsService {
792
864
} ) ;
793
865
} ) ;
794
866
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 ) ;
796
868
} ) ;
797
869
}
798
870
0 commit comments