summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Whitton2015-12-06 16:50:19 -0700
committerJoey Hess2015-12-08 11:58:50 -0400
commit6bacac7f38f60945527f148644d3f9eba70b4bf5 (patch)
tree3ff3fdced6bd3d8e5c1f096b63ffb85b13874fa1 /src
parent0dab06c92cfef9f46d2e99b9207dba97450d5953 (diff)
implement two pre-spin safety checks
- check that we're on the branch specified in git config value propellor.spin-branch - check that there are no uncommitted changes if git config value propellor.forbid-dirty-spin is true Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> (cherry picked from commit 8f374d73ae5b2bb53f82835c6d6b5c0194590006)
Diffstat (limited to 'src')
-rw-r--r--src/Propellor/Spin.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/Propellor/Spin.hs b/src/Propellor/Spin.hs
index ae7e7af5..f01975c9 100644
--- a/src/Propellor/Spin.hs
+++ b/src/Propellor/Spin.hs
@@ -32,6 +32,24 @@ import Utility.SafeCommand
commitSpin :: IO ()
commitSpin = do
+ -- safety check #1: check we're on the configured spin branch
+ spinBranch <- getGitConfigValue "propellor.spin-branch"
+ case spinBranch of
+ Nothing -> return () -- just a noop
+ Just b -> do
+ currentBranch <- getCurrentBranch
+ when (b /= currentBranch) $ error
+ ("spin aborted: check out branch "
+ ++ b ++ " first")
+
+ -- safety check #2: check we can commit with a dirty tree
+ noDirtySpin <- getGitConfigBool "propellor.forbid-dirty-spin"
+ when noDirtySpin $ do
+ status <- takeWhile (/= '\n')
+ <$> readProcess "git" ["status", "--porcelain"]
+ when (not . null $ status) $
+ error "spin aborted: commit changes first"
+
void $ actionMessage "Git commit" $
gitCommit (Just spinCommitMessage)
[Param "--allow-empty", Param "-a"]