问题标签 [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.

0 投票
1 回答
144 浏览

go - viper.AutomaticEnv() 获取环境变量无法正常工作

我试图通过设置环境变量将开发配置文件与生产配置隔离开来。操作系统: ,我通过添加MAC OS设置环境变量。得到正确的值。我编写了一个函数,使用它获取“调试”的值。但是打印零。哪里错了?DEBUG = true.bash_profileexport DEBUG = Trueecho $debugtrueviper

0 投票
1 回答
47 浏览

go - 确定标志是否实际上在 golang 的 cobra/viper 中的(子)命令调用中传递

我有一个cobra命令

和一个子命令

我当然把它绑在一起

我也有他们两个的标志

我的问题如下:

假设最终go二进制文件名为prog,是否有一个 ( cobra/ viper) 内置方法来检查在子命令调用期间是否实际传递了任何标志?

即我如何以编程方式区分这

还有这个

检查默认标志值当然不起作用(并且不会根据标志编号进行缩放)

0 投票
0 回答
231 浏览

go - 在 Go CLI 中使用 Cobra 和 Viper

我在 Go 中创建了一个 CLI,我决定同时使用 Cobra 和 Viper 来解析 cli 参数和配置文件。

我到处寻找一种同时使用cobraviper合并配置文件和给定 CLI 参数的方法。

我偶然发现了毒蛇毒刺*cobra.Command作为使用标志的一种方式,并使用cobra.

这个实现的问题是它强制配置键与命令参数具有相同的名称。它也不允许我在配置文件中有更多的配置选项。

我也发现了这个 Github 问题。除了 CLI 标志之外,这似乎也不允许我进行自定义配置。

没有找到合适的解决方案,我选择了“肮脏”的路线,并决定使用 cmd 标志创建一个配置实例,viper然后使用github.com/imdario/mergo.

一个简化的例子:

显然,这种实现存在问题,所以我想知道是否有人知道使用cobraand的更好方法viper

0 投票
0 回答
24 浏览

go - 使用 go-viper 进行多个单独(可能重叠)的配置

viper 是否有可能拥有不同的配置文件,这些配置文件将彼此分开存储和处理?

例如在文件一 { val: 5 } 中,在文件二中: { val: 7 }

在加载它们之后,它可以像这样使用:

viper.GetConfig(0).GetInt("val") => 5
viper.GetConfig(1).GetInt("val") => 7

并且还在更改将保存到正确文件等的值之后。

有没有办法实现这一点?

0 投票
1 回答
226 浏览

go - 使用 viper 解组 json 字符串以在 golang 中构建结构?

我从其他地方读取配置,它返回一个映射并且所有值都是字符串,并且不确定 Config.Mp 映射中的哪个键,所以我想这样做,但是在 Unmarshal 之后 Mp 为零,我怎么能用好方法吗?钩子什么的?谢谢~

0 投票
3 回答
52 浏览

go - 目录变量,但调用时出错

我正在尝试分配一个变量来读取目录,但出现此错误:

“不能在 viper.AddConfigPath 的参数中使用 &home(*[]fs.FileInfo 类型的值)作为字符串值”

我也尝试了里面的指针,viper.AddConfigPath(&home)但也无济于事

这是代码片段:

我正在寻找将其type *[]fs.FileInfo转换为字符串以便viper.AddConfigPath()可以读取它。

更新

我现在已经尝试过这种方式,编译时没有错误,但由于运行时错误,我还不能真正测试代码:

0 投票
2 回答
75 浏览

go - golang:如何使用 viper 但没有 cobra 支持 cli 参数、环境变量和配置文件?

我正在尝试编写一个只有一个命令的应用程序,因此,我想我可能会跳过 Cobra。

该应用程序应该能够支持所有类型的配置:

  • 命令行参数
  • 环境变量
  • 配置文件

我正在使用 viper,但我无法让它读取我的 cli 参数。

但是我从来没有将 cli 参数放入 conf 结构中。v之前的打印Unmarshal不显示我提供的任何 cli 参数。

我错过了什么?我需要为此使用眼镜蛇吗?还是我必须手动分配每个标志集标志,例如fs.String(pathKey, defaultPath, "Default path"),手动分配给配置结构?

0 投票
2 回答
58 浏览

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 语句。我也对构建代码以实现这一结果的其他方式持开放态度。

提前致谢!

0 投票
0 回答
38 浏览

go - golang- 将嵌套配置 Yaml 映射到结构

我想从 yaml 文件中读取我的配置来构建结构。

yaml 文件:

去结构

我正在尝试使用viper.UnmarshalKey将值解码为结构,但我无法获取嵌套值主机和架构,没有错误,只是空的。任何人都可以提供帮助

0 投票
0 回答
30 浏览

json - JSON 配置文件在 CentOS 7 上无法正确解析

我在 Golang 上构建了一个程序,该程序应该通过电子邮件从带有运行Postfix的CentOS 7 的虚拟机发送指标,以实现自动化目的。该程序通过ViperJSON 文件中获取其配置详细信息。我知道问题出在 Viper 及其解析方法中。在多次阅读文档之后,我无法弄清楚在哪里。它也可能是 CentOS 机器中的一个问题,它没有正确解析配置文件。

当我在我的机器上运行它时,当然没有 Postfix,它会正确解析 JSON 文件,如下所示:

程序在本地机器上正确解析 JSON 文件

但是在虚拟机上它会像这样解析(或者我应该说不解析):

程序未在虚拟机上正确解析 JSON 文件

配置文件是这样的派生:

有没有人有在 CentOS 7 中解析 JSON 文件的经验?