我怎样才能为'stack sdist'设置'no-tty'而不禁用'gpg'?

时间:2017-08-24 12:15:49

标签: cabal gnupg haskell-stack

如果我跑

stack sdist --sign ...

我得到了

Error signing with GPG 
gpg: cannot open `/dev/tty': Device not configured

unless I place

no-tty

在我的~/.gnupg/gpg.conf

但如果我这样做那么

gpg -e ...

给出

gpg: Sorry, no terminal at all requested - can't get input

有没有办法配置gpgstack sdist,以便我可以使用no-tty作为后者而不是前者?例如,我可以在运行gpg.conf的项目中使用本地stack sdist吗?或者我可以为gpgstack sdist提供具有相同效果的命令行参数吗?也许有办法将--no-tty通过stack sdist传递给基础GPG?

作为一个附加约束,我需要这个在IDE中工作,我只限于一个shell命令(所以我不能批处理这个或编写一个小脚本来执行它):

enter image description here

1 个答案:

答案 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中提供这样的环境变量。