如果我跑
stack sdist --sign ...
我得到了
Error signing with GPG
gpg: cannot open `/dev/tty': Device not configured
no-tty
在我的~/.gnupg/gpg.conf
。
但如果我这样做那么
gpg -e ...
给出
gpg: Sorry, no terminal at all requested - can't get input
有没有办法配置gpg
或stack sdist
,以便我可以使用no-tty
作为后者而不是前者?例如,我可以在运行gpg.conf
的项目中使用本地stack sdist
吗?或者我可以为gpg
或stack sdist
提供具有相同效果的命令行参数吗?也许有办法将--no-tty
通过stack sdist
传递给基础GPG?
作为一个附加约束,我需要这个在IDE中工作,我只限于一个shell命令(所以我不能批处理这个或编写一个小脚本来执行它):
答案 0 :(得分:1)
查看source code of stack's GnuPG interface,堆栈中不可能添加GnuPG参数:
(_hIn,hOut,hErr,process) <-
gpg
[ "--output"
, "-"
, "--use-agent"
, "--detach-sig"
, "--armor"
, toFilePath path]
鉴于让微软添加对正确TTY变量的支持是不现实的,你可能最好更改堆栈。如果堆栈的--no-tty
参数设置了错误,我会考虑不提供--no-terminal
作为GnuPG参数。此外,将自定义选项传递给GnuPG的某种方式似乎是合理的支持和功能请求。
作为一种解决方法,您应该能够在stack --sign
周围提供某种包装批处理脚本。一个可能的解决方案是设置一个GNUPGHOME
环境变量,指向GnuPG主目录的特定于堆栈的副本,其中包含no-tty
作为配置选项(因此您有一个“默认”GnuPG主目录用于日常工作,以及用于代码签名的特定工作。您也可以在IDE中提供这样的环境变量。