@@ -19,95 +19,87 @@ func GetAllRecommendations(md bool) string {
1919
2020 var output string
2121
22+ recommendations := map [string ]models.AzqrRecommendation {}
23+ graphRecommendations := map [string ]models.AprlRecommendation {}
24+ for _ , scanner := range serviceScanners {
25+ rm := scanner .GetRecommendations ()
26+
27+ for _ , r := range rm {
28+ recommendations [r .RecommendationID ] = r
29+ }
30+
31+ for _ , t := range scanner .ResourceTypes () {
32+ for _ , r := range aprl [strings .ToLower (t )] {
33+ if strings .Contains (r .GraphQuery , "cannot-be-validated-with-arg" ) ||
34+ strings .Contains (r .GraphQuery , "under-development" ) ||
35+ strings .Contains (r .GraphQuery , "under development" ) {
36+ continue
37+ }
38+ graphRecommendations [r .RecommendationID ] = r
39+ }
40+ }
41+ }
42+
43+ keys := make ([]string , 0 , len (recommendations ))
44+ for k := range recommendations {
45+ keys = append (keys , k )
46+ }
47+ sort .Strings (keys )
48+
49+ graphKeys := make ([]string , 0 , len (graphRecommendations ))
50+ for k := range graphRecommendations {
51+ graphKeys = append (graphKeys , k )
52+ }
53+ sort .Strings (graphKeys )
54+
2255 if md {
2356 output += "## Recommendations List\n \n "
2457 output += fmt .Sprintf ("Total Supported Azure Resource Types: %d\n \n " , len (aprl ))
2558 output += "| | Id | Resource Type | Category | Impact | Recommendation | Learn\n "
2659 output += "---|---|---|---|---|---|---\n "
2760
2861 i := 0
29- for _ , scanner := range serviceScanners {
30- rm := scanner .GetRecommendations ()
3162
32- recommendations := map [string ]models.AzqrRecommendation {}
33- for _ , r := range rm {
34- recommendations [r .RecommendationID ] = r
35- }
36-
37- keys := make ([]string , 0 , len (recommendations ))
38- for k := range recommendations {
39- keys = append (keys , k )
40- }
41- sort .Strings (keys )
42-
43- for _ , k := range keys {
44- r := recommendations [k ]
45- i ++
46- output += fmt .Sprintf ("%s | %s | %s | %s | %s | %s | [Learn](%s)\n " , fmt .Sprint (i ), r .RecommendationID , r .ResourceType , r .Category , r .Impact , r .Recommendation , r .LearnMoreUrl )
47- }
48-
49- for _ , t := range scanner .ResourceTypes () {
50- for _ , r := range aprl [strings .ToLower (t )] {
51- if strings .Contains (r .GraphQuery , "cannot-be-validated-with-arg" ) ||
52- strings .Contains (r .GraphQuery , "under-development" ) ||
53- strings .Contains (r .GraphQuery , "under development" ) {
54- continue
55- }
63+ for _ , k := range keys {
64+ r := recommendations [k ]
65+ i ++
66+ output += fmt .Sprintf ("%s | %s | %s | %s | %s | %s | [Learn](%s)\n " , fmt .Sprint (i ), r .RecommendationID , r .ResourceType , r .Category , r .Impact , r .Recommendation , r .LearnMoreUrl )
67+ }
5668
57- i ++
58- output += fmt . Sprintf ( "%s | %s | %s | %s | %s | %s | [Learn](%s) \n " , fmt . Sprint ( i ), r . RecommendationID , r . ResourceType , r . Category , r . Impact , r . Recommendation , r . LearnMoreLink [ 0 ]. Url )
59- }
60- }
69+ for _ , k := range graphKeys {
70+ r := graphRecommendations [ k ]
71+ i ++
72+ output += fmt . Sprintf ( "%s | %s | %s | %s | %s | %s | [Learn](%s) \n " , fmt . Sprint ( i ), r . RecommendationID , r . ResourceType , r . Category , r . Impact , r . Recommendation , r . LearnMoreLink [ 0 ]. Url )
6173 }
6274 } else {
6375 j := []map [string ]string {}
6476 i := 0
65- for _ , scanner := range serviceScanners {
66- rm := scanner .GetRecommendations ()
67-
68- recommendations := map [string ]models.AzqrRecommendation {}
69- for _ , r := range rm {
70- recommendations [r .RecommendationID ] = r
71- }
7277
73- keys := make ([]string , 0 , len (recommendations ))
74- for k := range recommendations {
75- keys = append (keys , k )
76- }
77- sort .Strings (keys )
78-
79- for _ , k := range keys {
80- j = append (j , map [string ]string {})
81- j [i ] = map [string ]string {}
82- j [i ]["recommendationId" ] = recommendations [k ].RecommendationID
83- j [i ]["resourceType" ] = recommendations [k ].ResourceType
84- j [i ]["category" ] = string (recommendations [k ].Category )
85- j [i ]["impact" ] = string (recommendations [k ].Impact )
86- j [i ]["recommendation" ] = recommendations [k ].Recommendation
87- j [i ]["learnMoreUrl" ] = recommendations [k ].LearnMoreUrl
88- i ++
89- }
78+ for _ , k := range keys {
79+ j = append (j , map [string ]string {})
80+ j [i ] = map [string ]string {}
81+ j [i ]["recommendationId" ] = recommendations [k ].RecommendationID
82+ j [i ]["resourceType" ] = recommendations [k ].ResourceType
83+ j [i ]["category" ] = string (recommendations [k ].Category )
84+ j [i ]["impact" ] = string (recommendations [k ].Impact )
85+ j [i ]["recommendation" ] = recommendations [k ].Recommendation
86+ j [i ]["learnMoreUrl" ] = recommendations [k ].LearnMoreUrl
87+ i ++
88+ }
9089
91- for _ , t := range scanner .ResourceTypes () {
92- for _ , r := range aprl [strings .ToLower (t )] {
93- if strings .Contains (r .GraphQuery , "cannot-be-validated-with-arg" ) ||
94- strings .Contains (r .GraphQuery , "under-development" ) ||
95- strings .Contains (r .GraphQuery , "under development" ) {
96- continue
97- }
98-
99- j = append (j , map [string ]string {})
100- j [i ] = map [string ]string {}
101- j [i ]["recommendationId" ] = r .RecommendationID
102- j [i ]["resourceType" ] = r .ResourceType
103- j [i ]["category" ] = string (r .Category )
104- j [i ]["impact" ] = string (r .Impact )
105- j [i ]["recommendation" ] = r .Recommendation
106- j [i ]["learnMoreUrl" ] = r .LearnMoreLink [0 ].Url
107- i ++
108- }
109- }
90+ for _ , k := range graphKeys {
91+ r := graphRecommendations [k ]
92+ j = append (j , map [string ]string {})
93+ j [i ] = map [string ]string {}
94+ j [i ]["recommendationId" ] = r .RecommendationID
95+ j [i ]["resourceType" ] = r .ResourceType
96+ j [i ]["category" ] = string (r .Category )
97+ j [i ]["impact" ] = string (r .Impact )
98+ j [i ]["recommendation" ] = r .Recommendation
99+ j [i ]["learnMoreUrl" ] = r .LearnMoreLink [0 ].Url
100+ i ++
110101 }
102+
111103 // print j as json to stdout
112104 js , err := json .MarshalIndent (j , "" , "\t " )
113105 if err != nil {
0 commit comments