From 0f5d77c4f2a2972cbd9bf5fdec4adcbdc482a943 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 6 May 2023 12:53:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=AF=BC=E8=A1=A8=E5=B7=A5?= =?UTF-8?q?=E5=85=B7demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exporter/configuration/analyzer.go | 5 ++ exporter/configuration/analyzer/default.go | 78 ++++++++++++++++++ .../configuration/analyzer/default_test.go | 8 ++ exporter/configuration/analyzer/template.xlsx | Bin 0 -> 9001 bytes exporter/configuration/field.go | 1 + .../configuration/golang/configuration.go | 16 ++++ exporter/configuration/golang/field.go | 23 +++++- go.mod | 12 ++- go.sum | 40 +++++++++ 9 files changed, 179 insertions(+), 4 deletions(-) create mode 100644 exporter/configuration/analyzer.go create mode 100644 exporter/configuration/analyzer/default.go create mode 100644 exporter/configuration/analyzer/default_test.go create mode 100644 exporter/configuration/analyzer/template.xlsx diff --git a/exporter/configuration/analyzer.go b/exporter/configuration/analyzer.go new file mode 100644 index 0000000..0efee4e --- /dev/null +++ b/exporter/configuration/analyzer.go @@ -0,0 +1,5 @@ +package configuration + +type Analyzer interface { + Analyze(filePath string) (map[string]Configuration, error) +} diff --git a/exporter/configuration/analyzer/default.go b/exporter/configuration/analyzer/default.go new file mode 100644 index 0000000..412caf1 --- /dev/null +++ b/exporter/configuration/analyzer/default.go @@ -0,0 +1,78 @@ +package analyzer + +import ( + "fmt" + "github.com/xuri/excelize/v2" + "go.uber.org/zap" + "minotaur/exporter/configuration" + "minotaur/exporter/configuration/golang" + "minotaur/utils/log" + "strconv" + "strings" +) + +type Default struct { +} + +func (slf *Default) Analyze(filePath string) (map[string]configuration.Configuration, error) { + file, err := excelize.OpenFile(filePath) + if err != nil { + return nil, err + } + var configs = make(map[string]configuration.Configuration) + + for _, sheetName := range file.GetSheetList() { + + rs, err := file.GetRows(sheetName) + if err != nil { + log.Error("Analyze", zap.Error(err)) + continue + } + var rows = make(map[int][]string) + for ri, row := range rs { + r := make([]string, 0, len(row)) + for _, col := range row { + r = append(r, col) + } + rows[ri] = r + } + + if len(rows[0]) < 2 || len(rows[1]) < 2 { + continue + } + + var ( + name = strings.TrimSpace(rows[0][1]) + indexCountStr = strings.TrimSpace(rows[1][1]) + indexCount int + ) + + if name == "" || indexCountStr == "" { + continue + } else { + indexCount, err = strconv.Atoi(indexCountStr) + if err != nil { + log.Error("Analyze", zap.Error(err)) + continue + } + } + + if len(rows[3]) < 2 || len(rows[4]) < 2 || len(rows[5]) < 2 || len(rows[6]) < 2 { + continue + } + + config := golang.NewConfiguration(name) + + for i := range rows[3] { + if i == 0 { + continue + } + var field = golang.NewField(i, rows[4][i], golang.GetFieldType(rows[5][i]), i-1 < indexCount) + config.AddField(field) + } + + fmt.Println(config.GetStruct()) + } + + return configs, nil +} diff --git a/exporter/configuration/analyzer/default_test.go b/exporter/configuration/analyzer/default_test.go new file mode 100644 index 0000000..bef3091 --- /dev/null +++ b/exporter/configuration/analyzer/default_test.go @@ -0,0 +1,8 @@ +package analyzer + +import "testing" + +func TestDefault_Analyze(t *testing.T) { + var d = new(Default) + d.Analyze("./template.xlsx") +} diff --git a/exporter/configuration/analyzer/template.xlsx b/exporter/configuration/analyzer/template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..33466155fd916f53e16e93f6cc0ccd6a1d72e9d1 GIT binary patch literal 9001 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 literal 0 HcmV?d00001 diff --git a/exporter/configuration/field.go b/exporter/configuration/field.go index 947efe3..8d80582 100644 --- a/exporter/configuration/field.go +++ b/exporter/configuration/field.go @@ -4,4 +4,5 @@ type Field interface { GetID() int GetName() string GetType() FieldType + IsIndex() bool } diff --git a/exporter/configuration/golang/configuration.go b/exporter/configuration/golang/configuration.go index f70e133..6f19bcc 100644 --- a/exporter/configuration/golang/configuration.go +++ b/exporter/configuration/golang/configuration.go @@ -1,8 +1,10 @@ package golang import ( + "fmt" "minotaur/exporter/configuration" "minotaur/utils/hash" + "strings" ) func NewConfiguration(name string) *Configuration { @@ -28,3 +30,17 @@ func (slf *Configuration) GetFields() []configuration.Field { func (slf *Configuration) AddField(field configuration.Field) { slf.fields.Set(field.GetID(), field) } + +func (slf *Configuration) GetStruct() string { + var index string + var structStr string + for _, field := range slf.GetFields() { + if field.IsIndex() { + index += fmt.Sprintf("map[%s]", field.GetType()) + } + structStr += fmt.Sprintf("%s %s\r\n", strings.ToUpper(field.GetName()[:1])+field.GetName()[1:], field.GetType().String()) + } + index = fmt.Sprintf("%s*%s", index, strings.ToUpper(slf.GetName()[:1])+slf.GetName()[1:]) + structStr = fmt.Sprintf("type %s struct {\r\n %s \r\n}", strings.ToUpper(slf.GetName()[:1])+slf.GetName()[1:], structStr) + return fmt.Sprintf("%s \r\n%s", index, structStr) +} diff --git a/exporter/configuration/golang/field.go b/exporter/configuration/golang/field.go index e8de6b9..51df871 100644 --- a/exporter/configuration/golang/field.go +++ b/exporter/configuration/golang/field.go @@ -4,10 +4,26 @@ import ( "minotaur/exporter/configuration" ) -func NewField(name string, fieldType configuration.FieldType) *Field { +var fieldTypeMapper = map[string]configuration.FieldType{ + "string": configuration.FieldTypeString, + "int": configuration.FieldTypeInt, + "int64": configuration.FieldTypeInt64, + "float32": configuration.FieldTypeFloat32, + "float64": configuration.FieldTypeFloat64, + "bool": configuration.FieldTypeBool, + "byte": configuration.FieldTypeByte, +} + +func GetFieldType(fieldType string) configuration.FieldType { + return fieldTypeMapper[fieldType] +} + +func NewField(id int, name string, fieldType configuration.FieldType, isIndex bool) *Field { return &Field{ + id: id, name: name, fieldType: fieldType, + isIndex: isIndex, } } @@ -15,6 +31,7 @@ type Field struct { id int name string fieldType configuration.FieldType + isIndex bool } func (slf *Field) GetID() int { @@ -28,3 +45,7 @@ func (slf *Field) GetName() string { func (slf *Field) GetType() configuration.FieldType { return slf.fieldType } + +func (slf *Field) IsIndex() bool { + return slf.isIndex +} diff --git a/go.mod b/go.mod index 1b7aba9..e5dd5e3 100644 --- a/go.mod +++ b/go.mod @@ -37,8 +37,11 @@ require ( github.com/mattn/go-isatty v0.0.17 // indirect github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/richardlehane/mscfb v1.0.4 // indirect + github.com/richardlehane/msoleps v1.0.3 // indirect github.com/smartystreets/assertions v1.13.1 // indirect github.com/templexxx/cpu v0.0.9 // indirect github.com/templexxx/xorsimd v0.4.1 // indirect @@ -46,13 +49,16 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.9 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 // indirect + github.com/xuri/excelize/v2 v2.7.1 // indirect + github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/net v0.8.0 // indirect + golang.org/x/crypto v0.8.0 // indirect + golang.org/x/net v0.9.0 // indirect golang.org/x/sys v0.7.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index a9afdc8..7d7662f 100644 --- a/go.sum +++ b/go.sum @@ -96,6 +96,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OH github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/panjf2000/ants/v2 v2.4.7 h1:MZnw2JRyTJxFwtaMtUJcwE618wKD04POWk2gwwP4E2M= github.com/panjf2000/ants/v2 v2.4.7/go.mod h1:f6F0NZVFsGCp5A7QW/Zj/m92atWwOkY0OIhFxRNFr4A= github.com/panjf2000/gnet v1.6.6 h1:P6bApc54hnVcJVgH+SMe41mn47ECCajB6E/dKq27Y0c= @@ -109,6 +111,11 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= +github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM= +github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/smartystreets/assertions v1.13.1 h1:Ef7KhSmjZcK6AVf9YbJdvPYG9avaF0ZxudX+ThRdWfU= @@ -147,9 +154,16 @@ github.com/xtaci/kcp-go/v5 v5.6.1 h1:Pwn0aoeNSPF9dTS7IgiPXn0HEtaIlVb6y5UKWPsx8bI github.com/xtaci/kcp-go/v5 v5.6.1/go.mod h1:W3kVPyNYwZ06p79dNwFWQOVFrdcBpDBsdyvK8moQrYo= github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM= github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= +github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 h1:6932x8ltq1w4utjmfMPVj09jdMlkY0aiA6+Skbtl3/c= +github.com/xuri/efp v0.0.0-20220603152613-6918739fd470/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= +github.com/xuri/excelize/v2 v2.7.1 h1:gm8q0UCAyaTt3MEF5wWMjVdmthm2EHAWesGSKS9tdVI= +github.com/xuri/excelize/v2 v2.7.1/go.mod h1:qc0+2j4TvAUrBw36ATtcTeC1VCM0fFdAXZOmcF4nTpY= +github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 h1:OAmKAfT06//esDdpi/DZ8Qsdt4+M5+ltca05dA5bG2M= +github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= @@ -172,9 +186,13 @@ golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -182,6 +200,8 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -192,10 +212,15 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -203,6 +228,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -213,17 +240,28 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211204120058-94396e421777/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -233,6 +271,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200425043458-8463f397d07c/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200808161706-5bf02b21f123/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=