问题标签 [viper-go]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - viper.AutomaticEnv() 获取环境变量无法正常工作
我试图通过设置环境变量将开发配置文件与生产配置隔离开来。操作系统: ,我通过添加MAC OS
设置环境变量。得到正确的值。我编写了一个函数,使用它获取“调试”的值。但是打印零。哪里错了?DEBUG = true
.bash_profile
export DEBUG = True
echo $debug
true
viper
go - 确定标志是否实际上在 golang 的 cobra/viper 中的(子)命令调用中传递
我有一个cobra
命令
和一个子命令
我当然把它绑在一起
我也有他们两个的标志
我的问题如下:
假设最终go
二进制文件名为prog
,是否有一个 ( cobra
/ viper
) 内置方法来检查在子命令调用期间是否实际传递了任何标志?
即我如何以编程方式区分这
还有这个
检查默认标志值当然不起作用(并且不会根据标志编号进行缩放)
go - 在 Go CLI 中使用 Cobra 和 Viper
我在 Go 中创建了一个 CLI,我决定同时使用 Cobra 和 Viper 来解析 cli 参数和配置文件。
我到处寻找一种同时使用cobra
并viper
合并配置文件和给定 CLI 参数的方法。
我偶然发现了毒蛇毒刺*cobra.Command
作为使用标志的一种方式,并使用cobra
.
这个实现的问题是它强制配置键与命令参数具有相同的名称。它也不允许我在配置文件中有更多的配置选项。
我也发现了这个 Github 问题。除了 CLI 标志之外,这似乎也不允许我进行自定义配置。
没有找到合适的解决方案,我选择了“肮脏”的路线,并决定使用 cmd 标志创建一个配置实例,viper
然后使用github.com/imdario/mergo
.
一个简化的例子:
显然,这种实现存在问题,所以我想知道是否有人知道使用cobra
and的更好方法viper
。
go - 使用 go-viper 进行多个单独(可能重叠)的配置
viper 是否有可能拥有不同的配置文件,这些配置文件将彼此分开存储和处理?
例如在文件一 { val: 5 } 中,在文件二中: { val: 7 }
在加载它们之后,它可以像这样使用:
viper.GetConfig(0).GetInt("val") => 5
viper.GetConfig(1).GetInt("val") => 7
并且还在更改将保存到正确文件等的值之后。
有没有办法实现这一点?
go - 使用 viper 解组 json 字符串以在 golang 中构建结构?
我从其他地方读取配置,它返回一个映射并且所有值都是字符串,并且不确定 Config.Mp 映射中的哪个键,所以我想这样做,但是在 Unmarshal 之后 Mp 为零,我怎么能用好方法吗?钩子什么的?谢谢~
go - 目录变量,但调用时出错
我正在尝试分配一个变量来读取目录,但出现此错误:
“不能在 viper.AddConfigPath 的参数中使用 &home(*[]fs.FileInfo 类型的值)作为字符串值”
我也尝试了里面的指针,viper.AddConfigPath(&home)
但也无济于事
这是代码片段:
我正在寻找将其type *[]fs.FileInfo
转换为字符串以便viper.AddConfigPath()
可以读取它。
更新
我现在已经尝试过这种方式,编译时没有错误,但由于运行时错误,我还不能真正测试代码:
go - golang:如何使用 viper 但没有 cobra 支持 cli 参数、环境变量和配置文件?
我正在尝试编写一个只有一个命令的应用程序,因此,我想我可能会跳过 Cobra。
该应用程序应该能够支持所有类型的配置:
- 命令行参数
- 环境变量
- 配置文件
我正在使用 viper,但我无法让它读取我的 cli 参数。
但是我从来没有将 cli 参数放入 conf 结构中。v
之前的打印Unmarshal
不显示我提供的任何 cli 参数。
我错过了什么?我需要为此使用眼镜蛇吗?还是我必须手动分配每个标志集标志,例如fs.String(pathKey, defaultPath, "Default path")
,手动分配给配置结构?
go - 有条件地将毒蛇配置(toml)解组为结构的惯用方法
我是 Go 新手,想知道如何以惯用的方式解决以下问题:
我正在使用 viper 将配置文件加载到程序中。我选择 toml 格式是因为我想要一个配置文件,它可以指定几种不同格式的所需输入:例如,Alpha 提供程序需要一个 apikey,而 Beta 提供程序需要用户名和密码。
上面的代码导致{Alpha:{Apikey:123 Domain:example.com} Beta:{Username: Password: Domain:}}
空/未使用的结构仍然存在。
最终,我希望 ProviderService 接口与提供者无关,因此我可以简单地调用provider.PrintDomain()
而不是provider.Alpha.PrintDomain()
让代码中散布着 if/else 语句。我也对构建代码以实现这一结果的其他方式持开放态度。
提前致谢!
go - golang- 将嵌套配置 Yaml 映射到结构
我想从 yaml 文件中读取我的配置来构建结构。
yaml 文件:
去结构
我正在尝试使用viper.UnmarshalKey
将值解码为结构,但我无法获取嵌套值主机和架构,没有错误,只是空的。任何人都可以提供帮助
json - JSON 配置文件在 CentOS 7 上无法正确解析
我在 Golang 上构建了一个程序,该程序应该通过电子邮件从带有运行Postfix的CentOS 7 的虚拟机发送指标,以实现自动化目的。该程序通过Viper从JSON 文件中获取其配置详细信息。我知道问题出在 Viper 及其解析方法中。在多次阅读文档之后,我无法弄清楚在哪里。它也可能是 CentOS 机器中的一个问题,它没有正确解析配置文件。
当我在我的机器上运行它时,当然没有 Postfix,它会正确解析 JSON 文件,如下所示:
但是在虚拟机上它会像这样解析(或者我应该说不解析):
配置文件是这样的派生:
有没有人有在 CentOS 7 中解析 JSON 文件的经验?