propellor.debug can be set in the git config to enable more persistent debugging output.

This commit is contained in:
Joey Hess 2014-11-25 18:55:07 -04:00
parent 7d0f79a0c7
commit e07dc9b1d3
Failed to extract signature
4 changed files with 34 additions and 10 deletions

2
debian/changelog vendored
View File

@ -19,6 +19,8 @@ propellor (1.1.0) UNRELEASED; urgency=medium
commit.
* cron.runPropellor now runs propellor, rather than using its Makefile.
This is more robust.
* propellor.debug can be set in the git config to enable more persistent
debugging output.
-- Joey Hess <joeyh@debian.org> Sat, 22 Nov 2014 00:12:35 -0400

View File

@ -1,5 +1,6 @@
Set `PROPELLOR_DEBUG=1` to make propellor print out all the commands it runs
and any other debug messages that Properties choose to emit.
Set `PROPELLOR_DEBUG=1` in the environment, or `git config propellor.debug 1`
to make propellor print out all the commands it runs and any other debug
messages that Properties choose to emit.
Another handy debugging tip is to load up your config.hs in ghci, and look
at `hosts`. This will show the Properties of a Host, as well as the Info

View File

@ -101,6 +101,18 @@ and configured in haskell.
Set `PROPELLOR_DEBUG=1` to make propellor output each command it runs and
other debugging information.
# GIT CONFIGURATION
`git config propellor.debug 1` will configure propellor to output debugging
information.
The usual git configuration controls which centralized repository (if any)
propellor pushes and pulls from.
Additionally, the url of a remote named "deploy", if it exists
in your ~/.propellor/ repository, is used as the origin url for
the other repositories.
# SH AUTHOR
Joey Hess <id@joeyh.name>

View File

@ -11,10 +11,13 @@ import System.Log.Handler.Simple
import "mtl" Control.Monad.Reader
import Data.Maybe
import Control.Applicative
import System.Directory
import Control.Monad.IfElse
import Propellor.Types
import Utility.Monad
import Utility.Env
import Utility.Process
data MessageHandle
= ConsoleMessageHandle
@ -99,17 +102,23 @@ colorLine h intensity color msg = do
putStrLn ""
hFlush stdout
-- | Causes a debug message to be displayed when PROPELLOR_DEBUG=1
debug :: [String] -> IO ()
debug = debugM "propellor" . unwords
checkDebugMode :: IO ()
checkDebugMode = go =<< getEnv "PROPELLOR_DEBUG"
where
go (Just "1") = do
f <- setFormatter
<$> streamHandler stderr DEBUG
<*> pure (simpleLogFormatter "[$time] $msg")
updateGlobalLogger rootLoggerName $
setLevel DEBUG . setHandlers [f]
go _ = noop
go (Just "1") = enableDebugMode
go (Just _) = noop
go Nothing = whenM (doesDirectoryExist ".git") $
whenM (any (== "1") . lines <$> getgitconfig) $
enableDebugMode
getgitconfig = readProcess "git" ["config", "propellor.debug"]
enableDebugMode :: IO ()
enableDebugMode = do
f <- setFormatter
<$> streamHandler stderr DEBUG
<*> pure (simpleLogFormatter "[$time] $msg")
updateGlobalLogger rootLoggerName $
setLevel DEBUG . setHandlers [f]