spiegel_podman/test/tools/vendor/github.com/spf13/viper/TROUBLESHOOTING.md
Paul Holzinger 5e9725983d
install swagger from source
First of all this removes the need for a network connection, second
renovate can update the version as it is tracked in go.mod.

However the real important part is that the binary downloads are
broken[1]. For some reason the swagger created with them does not
include all the type information for the examples. However when building
from source the same thing works fine.

[1] https://github.com/go-swagger/go-swagger/issues/2842

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-12 15:26:34 +02:00

1.7 KiB

Troubleshooting

Unmarshaling doesn't work

The most common reason for this issue is improper use of struct tags (eg. yaml or json). Viper uses github.com/mitchellh/mapstructure under the hood for unmarshaling values which uses mapstructure tags by default. Please refer to the library's documentation for using other struct tags.

Cannot find package

Viper installation seems to fail a lot lately with the following (or a similar) error:

cannot find package "github.com/hashicorp/hcl/tree/hcl1" in any of:
/usr/local/Cellar/go/1.15.7_1/libexec/src/github.com/hashicorp/hcl/tree/hcl1 (from $GOROOT)
/Users/user/go/src/github.com/hashicorp/hcl/tree/hcl1 (from $GOPATH)

As the error message suggests, Go tries to look up dependencies in GOPATH mode (as it's commonly called) from the GOPATH. Viper opted to use Go Modules to manage its dependencies. While in many cases the two methods are interchangeable, once a dependency releases new (major) versions, GOPATH mode is no longer able to decide which version to use, so it'll either use one that's already present or pick a version (usually the master branch).

The solution is easy: switch to using Go Modules. Please refer to the wiki on how to do that.

*tl;dr export GO111MODULE=on

Unquoted 'y' and 'n' characters get replaced with true and false when reading a YAML file

This is a YAML 1.1 feature according to go-yaml/yaml#740.

Potential solutions are:

  1. Quoting values resolved as boolean
  2. Upgrading to YAML v3 (for the time being this is possible by passing the viper_yaml3 tag to your build)