summaryrefslogtreecommitdiff
path: root/src/Propellor/Gpg.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Propellor/Gpg.hs')
-rw-r--r--src/Propellor/Gpg.hs15
1 files changed, 9 insertions, 6 deletions
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]