diff --git a/cmd/publish.go b/cmd/publish.go index 1ad8b163..36830a88 100644 --- a/cmd/publish.go +++ b/cmd/publish.go @@ -16,6 +16,7 @@ func getSigner(flags *flag.FlagSet) (utils.Signer, error) { signer.SetKey(flags.Lookup("gpg-key").Value.String()) signer.SetKeyRing(flags.Lookup("keyring").Value.String(), flags.Lookup("secret-keyring").Value.String()) signer.SetPassphrase(flags.Lookup("passphrase").Value.String(), flags.Lookup("passphrase-file").Value.String()) + signer.SetBatch(flags.Lookup("batch").Value.Get().(bool)) err := signer.Init() if err != nil { diff --git a/cmd/publish_switch.go b/cmd/publish_switch.go index d2c966f0..63b1705b 100644 --- a/cmd/publish_switch.go +++ b/cmd/publish_switch.go @@ -136,6 +136,7 @@ Example: cmd.Flag.Bool("skip-signing", false, "don't sign Release files with GPG") cmd.Flag.String("component", "", "component names to update (for multi-component publishing, separate components with commas)") cmd.Flag.Bool("force-overwrite", false, "overwrite files in package pool in case of mismatch") + cmd.Flag.Bool("batch", false, "run gpg with a detached tty") return cmd } diff --git a/cmd/publish_update.go b/cmd/publish_update.go index d3413e9e..d450fa2d 100644 --- a/cmd/publish_update.go +++ b/cmd/publish_update.go @@ -102,6 +102,7 @@ Example: cmd.Flag.String("passphrase-file", "", "GPG passhprase-file for the key (warning: could be insecure)") cmd.Flag.Bool("skip-signing", false, "don't sign Release files with GPG") cmd.Flag.Bool("force-overwrite", false, "overwrite files in package pool in case of mismatch") + cmd.Flag.Bool("batch", false, "run gpg with a detached tty") return cmd } diff --git a/utils/gpg.go b/utils/gpg.go index 90244192..37221758 100644 --- a/utils/gpg.go +++ b/utils/gpg.go @@ -18,6 +18,7 @@ type Signer interface { SetKey(keyRef string) SetKeyRing(keyring, secretKeyring string) SetPassphrase(passphrase, passphraseFile string) + SetBatch(batch bool) DetachedSign(source string, destination string) error ClearSign(source string, destination string) error } @@ -42,6 +43,11 @@ type GpgSigner struct { keyRef string keyring, secretKeyring string passphrase, passphraseFile string + batch bool +} + +func (g *GpgSigner) SetBatch(batch bool) { + g.batch = batch } // SetKey sets key ID to use when signing files @@ -79,6 +85,9 @@ func (g *GpgSigner) gpgArgs() []string { if g.passphraseFile != "" { args = append(args, "--passphrase-file", g.passphraseFile) } + if g.batch { + args = append(args, "--no-tty") + } return args }