From 1a9ce1af5a1d6c2aca063ed2f6e0bd13d1391192 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 4 Oct 2015 13:50:49 -0400 Subject: Fix --add-key to not fail committing when no privdata file exists yet. --- src/Propellor/Gpg.hs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/Propellor/Gpg.hs') diff --git a/src/Propellor/Gpg.hs b/src/Propellor/Gpg.hs index 84f67dc1..60b0d52d 100644 --- a/src/Propellor/Gpg.hs +++ b/src/Propellor/Gpg.hs @@ -6,6 +6,7 @@ import System.FilePath import System.Directory import Data.Maybe import Data.List.Utils +import Control.Monad import Propellor.PrivData.Paths import Propellor.Message @@ -106,12 +107,14 @@ gitAdd f = boolSystem "git" ] gitCommitKeyRing :: String -> IO Bool -gitCommitKeyRing action = gitCommit - [ File keyring - , File privDataFile - , Param "-m" - , Param ("propellor " ++ action) - ] +gitCommitKeyRing action = do + -- Commit explicitly the keyring and privdata files, as other + -- changes may be staged by the user and shouldn't be committed. + tocommit <- filterM doesFileExist [ privDataFile, keyring] + gitCommit $ (map File tocommit) ++ + [ Param "-m" + , Param ("propellor " ++ action) + ] -- Adds --gpg-sign if there's a keyring. gpgSignParams :: [CommandParam] -> IO [CommandParam] -- cgit v1.2.3