-
Notifications
You must be signed in to change notification settings - Fork 17
/
fetch_analyzers_transformers.go
84 lines (70 loc) · 2.67 KB
/
fetch_analyzers_transformers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package utils
import (
"context"
"github.com/deepsourcelabs/cli/deepsource"
"github.com/deepsourcelabs/cli/deepsource/analyzers"
"github.com/deepsourcelabs/cli/deepsource/transformers"
)
type DeepSourceAnalyzersData struct {
AnalyzerNames []string
AnalyzerShortcodes []string
AnalyzersMap map[string]string // Map for {analyzer name : shortcode}
AnalyzersMeta []string
AnalyzersMetaMap map[string]string // Map for {analyzer name: analyzer meta-schema}
}
type DeepSourceTransformersData struct {
TransformerNames []string
TransformerShortcodes []string
TransformerMap map[string]string // Map for {transformer name:shortcode}
}
var (
AnalyzersData DeepSourceAnalyzersData
TransformersData DeepSourceTransformersData
)
var (
analyzersAPIResponse []analyzers.Analyzer
transformersAPIResponse []transformers.Transformer
)
// Get the list of all the supported analyzers and transformers with
// their corresponding data like shortcode, metaschema etc.
func GetAnalyzersAndTransformersData(ctx context.Context, deepsource deepsource.Client) (err error) {
// Get supported analyzers and transformers data
AnalyzersData.AnalyzersMap = make(map[string]string)
TransformersData.TransformerMap = make(map[string]string)
analyzersAPIResponse, err = deepsource.GetSupportedAnalyzers(ctx)
if err != nil {
return err
}
transformersAPIResponse, err = deepsource.GetSupportedTransformers(ctx)
if err != nil {
return err
}
parseSDKResponse()
return nil
}
// Parses the SDK response of analyzers and transformers data into the format required
// by the validator and generator package
func parseSDKResponse() {
analyzersMap := make(map[string]string)
analyzersMetaMap := make(map[string]string)
transformersMap := make(map[string]string)
for _, analyzer := range analyzersAPIResponse {
analyzersMap[analyzer.Name] = analyzer.Shortcode
analyzersMetaMap[analyzer.Shortcode] = analyzer.MetaSchema
AnalyzersData = DeepSourceAnalyzersData{
AnalyzerNames: append(AnalyzersData.AnalyzerNames, analyzer.Name),
AnalyzerShortcodes: append(AnalyzersData.AnalyzerShortcodes, analyzer.Shortcode),
AnalyzersMap: analyzersMap,
AnalyzersMeta: append(AnalyzersData.AnalyzersMeta, analyzer.MetaSchema),
AnalyzersMetaMap: analyzersMetaMap,
}
}
for _, transformer := range transformersAPIResponse {
transformersMap[transformer.Name] = transformer.Shortcode
TransformersData = DeepSourceTransformersData{
TransformerNames: append(TransformersData.TransformerNames, transformer.Name),
TransformerShortcodes: append(TransformersData.TransformerShortcodes, transformer.Shortcode),
TransformerMap: transformersMap,
}
}
}