forked from aws/aws-sdk-go-v2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
95 lines (81 loc) · 2.74 KB
/
main.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
85
86
87
88
89
90
91
92
93
94
95
//go:build codegen
// +build codegen
package main
import (
"flag"
"fmt"
"os"
"sort"
"text/template"
)
const (
sharedConfigType = "&SharedConfig{}"
envConfigType = "&EnvConfig{}"
awsConfigType = "&awsConfig{}"
ec2IMDSRegionType = "&UseEC2IMDSRegion{}"
loadOptionsType = "&LoadOptions{}"
)
var implAsserts = map[string][]string{
"sharedConfigProfileProvider": {envConfigType, loadOptionsType},
"sharedConfigFilesProvider": {envConfigType, loadOptionsType},
"customCABundleProvider": {envConfigType, loadOptionsType},
"regionProvider": {envConfigType, sharedConfigType, loadOptionsType, ec2IMDSRegionType},
"credentialsProviderProvider": {loadOptionsType},
"defaultRegionProvider": {loadOptionsType},
"ec2RoleCredentialOptionsProvider": {loadOptionsType},
"endpointCredentialOptionsProvider": {loadOptionsType},
"assumeRoleCredentialOptionsProvider": {loadOptionsType},
"webIdentityRoleCredentialOptionsProvider": {loadOptionsType},
"httpClientProvider": {loadOptionsType},
"apiOptionsProvider": {loadOptionsType},
"retryProvider": {loadOptionsType},
"endpointResolverProvider": {loadOptionsType},
"loggerProvider": {loadOptionsType},
"clientLogModeProvider": {loadOptionsType},
"logConfigurationWarningsProvider": {loadOptionsType},
"ec2IMDSRegionProvider": {loadOptionsType},
}
var tplProviderTests = template.Must(template.New("tplProviderTests").Funcs(map[string]interface{}{
"SortKeys": func(m map[string][]string) []string {
var keys []string
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
return keys
},
}).Parse(`
// Code generated by github.com/aws/aws-sdk-go-v2/config. DO NOT EDIT.
package config
{{ $sortedKeys := SortKeys . }}
{{- range $_, $provider := $sortedKeys }}
{{- $implementors := index $ $provider -}}
// {{ $provider }} implementor assertions
var (
{{- range $_, $impl := $implementors }}
_ {{ $provider }} = {{ $impl }}
{{- end }}
)
{{ end -}}
`))
var config = struct {
OutputPath string
}{}
func init() {
flag.StringVar(&config.OutputPath, "output", "", "output file path")
flag.Parse()
}
func main() {
if len(config.OutputPath) == 0 {
panic(fmt.Errorf("output path must be specified"))
}
file, err := os.OpenFile(config.OutputPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0744)
if err != nil {
panic(fmt.Errorf("failed to open file: %v", err))
}
defer file.Close()
err = tplProviderTests.Execute(file, implAsserts)
if err != nil {
panic(fmt.Errorf("failed to execute template: %v", err))
}
}