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. commit.
* cron.runPropellor now runs propellor, rather than using its Makefile. * cron.runPropellor now runs propellor, rather than using its Makefile.
This is more robust. 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 -- 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 Set `PROPELLOR_DEBUG=1` in the environment, or `git config propellor.debug 1`
and any other debug messages that Properties choose to emit. 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 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 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 Set `PROPELLOR_DEBUG=1` to make propellor output each command it runs and
other debugging information. 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 # SH AUTHOR
Joey Hess <id@joeyh.name> Joey Hess <id@joeyh.name>

View File

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