mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-09 03:57:41 +00:00
Merge pull request #117958 from humblec/gcfg.v1
deps: go-gcfg update to the v1.2.3
This commit is contained in:
commit
3d2989600a
2
go.mod
2
go.mod
@ -88,7 +88,7 @@ require (
|
|||||||
google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21
|
google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21
|
||||||
google.golang.org/grpc v1.51.0
|
google.golang.org/grpc v1.51.0
|
||||||
google.golang.org/protobuf v1.30.0
|
google.golang.org/protobuf v1.30.0
|
||||||
gopkg.in/gcfg.v1 v1.2.0
|
gopkg.in/gcfg.v1 v1.2.3
|
||||||
gopkg.in/square/go-jose.v2 v2.6.0
|
gopkg.in/square/go-jose.v2 v2.6.0
|
||||||
gopkg.in/yaml.v2 v2.4.0
|
gopkg.in/yaml.v2 v2.4.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
|
4
go.sum
4
go.sum
@ -1218,8 +1218,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
|
|||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
gopkg.in/gcfg.v1 v1.2.0 h1:0HIbH907iBTAntm+88IJV2qmJALDAh8sPekI9Vc1fm0=
|
gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=
|
||||||
gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
@ -19,7 +19,7 @@ require (
|
|||||||
golang.org/x/crypto v0.6.0
|
golang.org/x/crypto v0.6.0
|
||||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b
|
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b
|
||||||
google.golang.org/api v0.60.0
|
google.golang.org/api v0.60.0
|
||||||
gopkg.in/gcfg.v1 v1.2.0
|
gopkg.in/gcfg.v1 v1.2.3
|
||||||
k8s.io/api v0.0.0
|
k8s.io/api v0.0.0
|
||||||
k8s.io/apimachinery v0.0.0
|
k8s.io/apimachinery v0.0.0
|
||||||
k8s.io/client-go v0.0.0
|
k8s.io/client-go v0.0.0
|
||||||
|
4
staging/src/k8s.io/legacy-cloud-providers/go.sum
generated
4
staging/src/k8s.io/legacy-cloud-providers/go.sum
generated
@ -778,8 +778,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
|
|||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
gopkg.in/gcfg.v1 v1.2.0 h1:0HIbH907iBTAntm+88IJV2qmJALDAh8sPekI9Vc1fm0=
|
gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=
|
||||||
gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
||||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
|
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
|
||||||
|
36
vendor/gopkg.in/gcfg.v1/errors.go
generated
vendored
36
vendor/gopkg.in/gcfg.v1/errors.go
generated
vendored
@ -1,8 +1,6 @@
|
|||||||
package gcfg
|
package gcfg
|
||||||
|
|
||||||
import (
|
import warnings "gopkg.in/warnings.v0"
|
||||||
"gopkg.in/warnings.v0"
|
|
||||||
)
|
|
||||||
|
|
||||||
// FatalOnly filters the results of a Read*Into invocation and returns only
|
// FatalOnly filters the results of a Read*Into invocation and returns only
|
||||||
// fatal errors. That is, errors (warnings) indicating data for unknown
|
// fatal errors. That is, errors (warnings) indicating data for unknown
|
||||||
@ -21,21 +19,39 @@ func isFatal(err error) bool {
|
|||||||
return !ok
|
return !ok
|
||||||
}
|
}
|
||||||
|
|
||||||
type extraData struct {
|
type loc struct {
|
||||||
section string
|
section string
|
||||||
subsection *string
|
subsection *string
|
||||||
variable *string
|
variable *string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e extraData) Error() string {
|
type extraData struct {
|
||||||
s := "can't store data at section \"" + e.section + "\""
|
loc
|
||||||
if e.subsection != nil {
|
}
|
||||||
s += ", subsection \"" + *e.subsection + "\""
|
|
||||||
|
type locErr struct {
|
||||||
|
msg string
|
||||||
|
loc
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l loc) String() string {
|
||||||
|
s := "section \"" + l.section + "\""
|
||||||
|
if l.subsection != nil {
|
||||||
|
s += ", subsection \"" + *l.subsection + "\""
|
||||||
}
|
}
|
||||||
if e.variable != nil {
|
if l.variable != nil {
|
||||||
s += ", variable \"" + *e.variable + "\""
|
s += ", variable \"" + *l.variable + "\""
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e extraData) Error() string {
|
||||||
|
return "can't store data at " + e.loc.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e locErr) Error() string {
|
||||||
|
return e.msg + " at " + e.loc.String()
|
||||||
|
}
|
||||||
|
|
||||||
var _ error = extraData{}
|
var _ error = extraData{}
|
||||||
|
var _ error = locErr{}
|
||||||
|
7
vendor/gopkg.in/gcfg.v1/go1_0.go
generated
vendored
7
vendor/gopkg.in/gcfg.v1/go1_0.go
generated
vendored
@ -1,7 +0,0 @@
|
|||||||
// +build !go1.2
|
|
||||||
|
|
||||||
package gcfg
|
|
||||||
|
|
||||||
type textUnmarshaler interface {
|
|
||||||
UnmarshalText(text []byte) error
|
|
||||||
}
|
|
9
vendor/gopkg.in/gcfg.v1/go1_2.go
generated
vendored
9
vendor/gopkg.in/gcfg.v1/go1_2.go
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
// +build go1.2
|
|
||||||
|
|
||||||
package gcfg
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding"
|
|
||||||
)
|
|
||||||
|
|
||||||
type textUnmarshaler encoding.TextUnmarshaler
|
|
21
vendor/gopkg.in/gcfg.v1/read.go
generated
vendored
21
vendor/gopkg.in/gcfg.v1/read.go
generated
vendored
@ -1,6 +1,7 @@
|
|||||||
package gcfg
|
package gcfg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -13,6 +14,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var unescape = map[rune]rune{'\\': '\\', '"': '"', 'n': '\n', 't': '\t'}
|
var unescape = map[rune]rune{'\\': '\\', '"': '"', 'n': '\n', 't': '\t'}
|
||||||
|
var utf8Bom = []byte("\ufeff")
|
||||||
|
|
||||||
// no error: invalid literals should be caught by scanner
|
// no error: invalid literals should be caught by scanner
|
||||||
func unquote(s string) string {
|
func unquote(s string) string {
|
||||||
@ -183,7 +185,6 @@ func readIntoPass(c *warnings.Collector, config interface{}, fset *token.FileSet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
panic("never reached")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func readInto(config interface{}, fset *token.FileSet, file *token.File,
|
func readInto(config interface{}, fset *token.FileSet, file *token.File,
|
||||||
@ -222,6 +223,9 @@ func ReadStringInto(config interface{}, str string) error {
|
|||||||
|
|
||||||
// ReadFileInto reads gcfg formatted data from the file filename and sets the
|
// ReadFileInto reads gcfg formatted data from the file filename and sets the
|
||||||
// values into the corresponding fields in config.
|
// values into the corresponding fields in config.
|
||||||
|
//
|
||||||
|
// For compatibility with files created on Windows, the ReadFileInto skips a
|
||||||
|
// single leading UTF8 BOM sequence if it exists.
|
||||||
func ReadFileInto(config interface{}, filename string) error {
|
func ReadFileInto(config interface{}, filename string) error {
|
||||||
f, err := os.Open(filename)
|
f, err := os.Open(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -232,7 +236,22 @@ func ReadFileInto(config interface{}, filename string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skips a single leading UTF8 BOM sequence if it exists.
|
||||||
|
src = skipLeadingUtf8Bom(src)
|
||||||
|
|
||||||
fset := token.NewFileSet()
|
fset := token.NewFileSet()
|
||||||
file := fset.AddFile(filename, fset.Base(), len(src))
|
file := fset.AddFile(filename, fset.Base(), len(src))
|
||||||
return readInto(config, fset, file, src)
|
return readInto(config, fset, file, src)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func skipLeadingUtf8Bom(src []byte) []byte {
|
||||||
|
lengthUtf8Bom := len(utf8Bom)
|
||||||
|
|
||||||
|
if len(src) >= lengthUtf8Bom {
|
||||||
|
if bytes.Equal(src[:lengthUtf8Bom], utf8Bom) {
|
||||||
|
return src[lengthUtf8Bom:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return src
|
||||||
|
}
|
||||||
|
4
vendor/gopkg.in/gcfg.v1/scanner/scanner.go
generated
vendored
4
vendor/gopkg.in/gcfg.v1/scanner/scanner.go
generated
vendored
@ -231,8 +231,8 @@ loop:
|
|||||||
hasCR = true
|
hasCR = true
|
||||||
s.next()
|
s.next()
|
||||||
}
|
}
|
||||||
if s.ch != '\n' {
|
if s.ch != '\n' && s.ch != '"' {
|
||||||
s.error(offs, "unquoted '\\' must be followed by new line")
|
s.error(offs, "unquoted '\\' must be followed by new line or double quote")
|
||||||
break loop
|
break loop
|
||||||
}
|
}
|
||||||
s.next()
|
s.next()
|
||||||
|
36
vendor/gopkg.in/gcfg.v1/set.go
generated
vendored
36
vendor/gopkg.in/gcfg.v1/set.go
generated
vendored
@ -2,6 +2,7 @@ package gcfg
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding"
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
@ -65,7 +66,7 @@ var setters = []setter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func textUnmarshalerSetter(d interface{}, blank bool, val string, t tag) error {
|
func textUnmarshalerSetter(d interface{}, blank bool, val string, t tag) error {
|
||||||
dtu, ok := d.(textUnmarshaler)
|
dtu, ok := d.(encoding.TextUnmarshaler)
|
||||||
if !ok {
|
if !ok {
|
||||||
return errUnsupportedType
|
return errUnsupportedType
|
||||||
}
|
}
|
||||||
@ -192,7 +193,9 @@ func scanSetter(d interface{}, blank bool, val string, tt tag) error {
|
|||||||
return types.ScanFully(d, val, 'v')
|
return types.ScanFully(d, val, 'v')
|
||||||
}
|
}
|
||||||
|
|
||||||
func newValue(sect string, vCfg reflect.Value, vType reflect.Type) (reflect.Value, error) {
|
func newValue(c *warnings.Collector, sect string, vCfg reflect.Value,
|
||||||
|
vType reflect.Type) (reflect.Value, error) {
|
||||||
|
//
|
||||||
pv := reflect.New(vType)
|
pv := reflect.New(vType)
|
||||||
dfltName := "default-" + sect
|
dfltName := "default-" + sect
|
||||||
dfltField, _ := fieldFold(vCfg, dfltName)
|
dfltField, _ := fieldFold(vCfg, dfltName)
|
||||||
@ -200,13 +203,11 @@ func newValue(sect string, vCfg reflect.Value, vType reflect.Type) (reflect.Valu
|
|||||||
if dfltField.IsValid() {
|
if dfltField.IsValid() {
|
||||||
b := bytes.NewBuffer(nil)
|
b := bytes.NewBuffer(nil)
|
||||||
ge := gob.NewEncoder(b)
|
ge := gob.NewEncoder(b)
|
||||||
err = ge.EncodeValue(dfltField)
|
if err = c.Collect(ge.EncodeValue(dfltField)); err != nil {
|
||||||
if err != nil {
|
|
||||||
return pv, err
|
return pv, err
|
||||||
}
|
}
|
||||||
gd := gob.NewDecoder(bytes.NewReader(b.Bytes()))
|
gd := gob.NewDecoder(bytes.NewReader(b.Bytes()))
|
||||||
err = gd.DecodeValue(pv.Elem())
|
if err = c.Collect(gd.DecodeValue(pv.Elem())); err != nil {
|
||||||
if err != nil {
|
|
||||||
return pv, err
|
return pv, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -222,8 +223,9 @@ func set(c *warnings.Collector, cfg interface{}, sect, sub, name string,
|
|||||||
}
|
}
|
||||||
vCfg := vPCfg.Elem()
|
vCfg := vPCfg.Elem()
|
||||||
vSect, _ := fieldFold(vCfg, sect)
|
vSect, _ := fieldFold(vCfg, sect)
|
||||||
|
l := loc{section: sect}
|
||||||
if !vSect.IsValid() {
|
if !vSect.IsValid() {
|
||||||
err := extraData{section: sect}
|
err := extraData{loc: l}
|
||||||
return c.Collect(err)
|
return c.Collect(err)
|
||||||
}
|
}
|
||||||
isSubsect := vSect.Kind() == reflect.Map
|
isSubsect := vSect.Kind() == reflect.Map
|
||||||
@ -231,6 +233,7 @@ func set(c *warnings.Collector, cfg interface{}, sect, sub, name string,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if isSubsect {
|
if isSubsect {
|
||||||
|
l.subsection = &sub
|
||||||
vst := vSect.Type()
|
vst := vSect.Type()
|
||||||
if vst.Key().Kind() != reflect.String ||
|
if vst.Key().Kind() != reflect.String ||
|
||||||
vst.Elem().Kind() != reflect.Ptr ||
|
vst.Elem().Kind() != reflect.Ptr ||
|
||||||
@ -246,8 +249,7 @@ func set(c *warnings.Collector, cfg interface{}, sect, sub, name string,
|
|||||||
if !pv.IsValid() {
|
if !pv.IsValid() {
|
||||||
vType := vSect.Type().Elem().Elem()
|
vType := vSect.Type().Elem().Elem()
|
||||||
var err error
|
var err error
|
||||||
pv, err = newValue(sect, vCfg, vType)
|
if pv, err = newValue(c, sect, vCfg, vType); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
vSect.SetMapIndex(k, pv)
|
vSect.SetMapIndex(k, pv)
|
||||||
@ -257,8 +259,7 @@ func set(c *warnings.Collector, cfg interface{}, sect, sub, name string,
|
|||||||
panic(fmt.Errorf("field for section must be a map or a struct: "+
|
panic(fmt.Errorf("field for section must be a map or a struct: "+
|
||||||
"section %q", sect))
|
"section %q", sect))
|
||||||
} else if sub != "" {
|
} else if sub != "" {
|
||||||
err := extraData{section: sect, subsection: &sub}
|
return c.Collect(extraData{loc: l})
|
||||||
return c.Collect(err)
|
|
||||||
}
|
}
|
||||||
// Empty name is a special value, meaning that only the
|
// Empty name is a special value, meaning that only the
|
||||||
// section/subsection object is to be created, with no values set.
|
// section/subsection object is to be created, with no values set.
|
||||||
@ -266,14 +267,9 @@ func set(c *warnings.Collector, cfg interface{}, sect, sub, name string,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
vVar, t := fieldFold(vSect, name)
|
vVar, t := fieldFold(vSect, name)
|
||||||
|
l.variable = &name
|
||||||
if !vVar.IsValid() {
|
if !vVar.IsValid() {
|
||||||
var err error
|
return c.Collect(extraData{loc: l})
|
||||||
if isSubsect {
|
|
||||||
err = extraData{section: sect, subsection: &sub, variable: &name}
|
|
||||||
} else {
|
|
||||||
err = extraData{section: sect, variable: &name}
|
|
||||||
}
|
|
||||||
return c.Collect(err)
|
|
||||||
}
|
}
|
||||||
// vVal is either single-valued var, or newly allocated value within multi-valued var
|
// vVal is either single-valued var, or newly allocated value within multi-valued var
|
||||||
var vVal reflect.Value
|
var vVal reflect.Value
|
||||||
@ -316,12 +312,12 @@ func set(c *warnings.Collector, cfg interface{}, sect, sub, name string,
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
if err != errUnsupportedType {
|
if err != errUnsupportedType {
|
||||||
return err
|
return locErr{msg: err.Error(), loc: l}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !ok {
|
if !ok {
|
||||||
// in case all setters returned errUnsupportedType
|
// in case all setters returned errUnsupportedType
|
||||||
return err
|
return locErr{msg: err.Error(), loc: l}
|
||||||
}
|
}
|
||||||
if isNew { // set reference if it was dereferenced and newly allocated
|
if isNew { // set reference if it was dereferenced and newly allocated
|
||||||
vVal.Set(vAddr)
|
vVal.Set(vAddr)
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -1187,7 +1187,7 @@ google.golang.org/protobuf/types/known/fieldmaskpb
|
|||||||
google.golang.org/protobuf/types/known/structpb
|
google.golang.org/protobuf/types/known/structpb
|
||||||
google.golang.org/protobuf/types/known/timestamppb
|
google.golang.org/protobuf/types/known/timestamppb
|
||||||
google.golang.org/protobuf/types/known/wrapperspb
|
google.golang.org/protobuf/types/known/wrapperspb
|
||||||
# gopkg.in/gcfg.v1 v1.2.0
|
# gopkg.in/gcfg.v1 v1.2.3
|
||||||
## explicit
|
## explicit
|
||||||
gopkg.in/gcfg.v1
|
gopkg.in/gcfg.v1
|
||||||
gopkg.in/gcfg.v1/scanner
|
gopkg.in/gcfg.v1/scanner
|
||||||
|
Loading…
Reference in New Issue
Block a user