Merge branch 'joeyconfig'
This commit is contained in:
commit
49ca7cb93f
|
@ -1,3 +1,10 @@
|
||||||
|
propellor (2.5.0) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* cmdProperty' renamed to cmdPropertyEnv to make way for a new,
|
||||||
|
more generic cmdProperty' (API change)
|
||||||
|
|
||||||
|
-- Joey Hess <id@joeyh.name> Thu, 07 May 2015 12:08:34 -0400
|
||||||
|
|
||||||
propellor (2.4.0) unstable; urgency=medium
|
propellor (2.4.0) unstable; urgency=medium
|
||||||
|
|
||||||
* Propellor no longer supports Debian wheezy (oldstable).
|
* Propellor no longer supports Debian wheezy (oldstable).
|
||||||
|
|
|
@ -109,7 +109,7 @@ setSourcesListD ls basename = f `File.hasContent` ls `onChange` update
|
||||||
f = "/etc/apt/sources.list.d/" ++ basename ++ ".list"
|
f = "/etc/apt/sources.list.d/" ++ basename ++ ".list"
|
||||||
|
|
||||||
runApt :: [String] -> Property NoInfo
|
runApt :: [String] -> Property NoInfo
|
||||||
runApt ps = cmdProperty' "apt-get" ps noninteractiveEnv
|
runApt ps = cmdPropertyEnv "apt-get" ps noninteractiveEnv
|
||||||
|
|
||||||
noninteractiveEnv :: [(String, String)]
|
noninteractiveEnv :: [(String, String)]
|
||||||
noninteractiveEnv =
|
noninteractiveEnv =
|
||||||
|
@ -170,7 +170,7 @@ buildDep ps = robustly go
|
||||||
buildDepIn :: FilePath -> Property NoInfo
|
buildDepIn :: FilePath -> Property NoInfo
|
||||||
buildDepIn dir = go `requires` installedMin ["devscripts", "equivs"]
|
buildDepIn dir = go `requires` installedMin ["devscripts", "equivs"]
|
||||||
where
|
where
|
||||||
go = cmdProperty' "sh" ["-c", "cd '" ++ dir ++ "' && mk-build-deps debian/control --install --tool 'apt-get -y --no-install-recommends' --remove"]
|
go = cmdPropertyEnv "sh" ["-c", "cd '" ++ dir ++ "' && mk-build-deps debian/control --install --tool 'apt-get -y --no-install-recommends' --remove"]
|
||||||
noninteractiveEnv
|
noninteractiveEnv
|
||||||
|
|
||||||
-- | Package installation may fail becuse the archive has changed.
|
-- | Package installation may fail becuse the archive has changed.
|
||||||
|
@ -251,7 +251,7 @@ reConfigure package vals = reconfigure `requires` setselections
|
||||||
forM_ vals $ \(tmpl, tmpltype, value) ->
|
forM_ vals $ \(tmpl, tmpltype, value) ->
|
||||||
hPutStrLn h $ unwords [package, tmpl, tmpltype, value]
|
hPutStrLn h $ unwords [package, tmpl, tmpltype, value]
|
||||||
hClose h
|
hClose h
|
||||||
reconfigure = cmdProperty' "dpkg-reconfigure" ["-fnone", package] noninteractiveEnv
|
reconfigure = cmdPropertyEnv "dpkg-reconfigure" ["-fnone", package] noninteractiveEnv
|
||||||
|
|
||||||
-- | Ensures that a service is installed and running.
|
-- | Ensures that a service is installed and running.
|
||||||
--
|
--
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
module Propellor.Property.Cmd (
|
module Propellor.Property.Cmd (
|
||||||
cmdProperty,
|
cmdProperty,
|
||||||
cmdProperty',
|
cmdProperty',
|
||||||
|
cmdPropertyEnv,
|
||||||
scriptProperty,
|
scriptProperty,
|
||||||
userScriptProperty,
|
userScriptProperty,
|
||||||
) where
|
) where
|
||||||
|
@ -10,6 +11,7 @@ module Propellor.Property.Cmd (
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Data.List
|
import Data.List
|
||||||
import "mtl" Control.Monad.Reader
|
import "mtl" Control.Monad.Reader
|
||||||
|
import System.Process (CreateProcess)
|
||||||
|
|
||||||
import Propellor.Types
|
import Propellor.Types
|
||||||
import Propellor.Property
|
import Propellor.Property
|
||||||
|
@ -20,12 +22,19 @@ import Utility.Env
|
||||||
--
|
--
|
||||||
-- The command must exit 0 on success.
|
-- The command must exit 0 on success.
|
||||||
cmdProperty :: String -> [String] -> Property NoInfo
|
cmdProperty :: String -> [String] -> Property NoInfo
|
||||||
cmdProperty cmd params = cmdProperty' cmd params []
|
cmdProperty cmd params = cmdProperty' cmd params id
|
||||||
|
|
||||||
|
cmdProperty' :: String -> [String] -> (CreateProcess -> CreateProcess) -> Property NoInfo
|
||||||
|
cmdProperty' cmd params mkprocess = property desc $ liftIO $ do
|
||||||
|
toResult <$> boolSystem' cmd (map Param params) mkprocess
|
||||||
|
where
|
||||||
|
desc = unwords $ cmd : params
|
||||||
|
|
||||||
-- | A property that can be satisfied by running a command,
|
-- | A property that can be satisfied by running a command,
|
||||||
-- with added environment.
|
-- with added environment variables in addition to the standard
|
||||||
cmdProperty' :: String -> [String] -> [(String, String)] -> Property NoInfo
|
-- environment.
|
||||||
cmdProperty' cmd params env = property desc $ liftIO $ do
|
cmdPropertyEnv :: String -> [String] -> [(String, String)] -> Property NoInfo
|
||||||
|
cmdPropertyEnv cmd params env = property desc $ liftIO $ do
|
||||||
env' <- addEntries env <$> getEnvironment
|
env' <- addEntries env <$> getEnvironment
|
||||||
toResult <$> boolSystemEnv cmd (map Param params) (Just env')
|
toResult <$> boolSystemEnv cmd (map Param params) (Just env')
|
||||||
where
|
where
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{- safely running shell commands
|
{- safely running shell commands
|
||||||
-
|
-
|
||||||
- Copyright 2010-2013 Joey Hess <id@joeyh.name>
|
- Copyright 2010-2015 Joey Hess <id@joeyh.name>
|
||||||
-
|
-
|
||||||
- License: BSD-2-clause
|
- License: BSD-2-clause
|
||||||
-}
|
-}
|
||||||
|
@ -44,23 +44,32 @@ toCommand = concatMap unwrap
|
||||||
- if it succeeded or failed.
|
- if it succeeded or failed.
|
||||||
-}
|
-}
|
||||||
boolSystem :: FilePath -> [CommandParam] -> IO Bool
|
boolSystem :: FilePath -> [CommandParam] -> IO Bool
|
||||||
boolSystem command params = boolSystemEnv command params Nothing
|
boolSystem command params = boolSystem' command params id
|
||||||
|
|
||||||
boolSystemEnv :: FilePath -> [CommandParam] -> Maybe [(String, String)] -> IO Bool
|
boolSystem' :: FilePath -> [CommandParam] -> (CreateProcess -> CreateProcess) -> IO Bool
|
||||||
boolSystemEnv command params environ = dispatch <$> safeSystemEnv command params environ
|
boolSystem' command params mkprocess = dispatch <$> safeSystem' command params mkprocess
|
||||||
where
|
where
|
||||||
dispatch ExitSuccess = True
|
dispatch ExitSuccess = True
|
||||||
dispatch _ = False
|
dispatch _ = False
|
||||||
|
|
||||||
|
boolSystemEnv :: FilePath -> [CommandParam] -> Maybe [(String, String)] -> IO Bool
|
||||||
|
boolSystemEnv command params environ = boolSystem' command params $
|
||||||
|
\p -> p { env = environ }
|
||||||
|
|
||||||
{- Runs a system command, returning the exit status. -}
|
{- Runs a system command, returning the exit status. -}
|
||||||
safeSystem :: FilePath -> [CommandParam] -> IO ExitCode
|
safeSystem :: FilePath -> [CommandParam] -> IO ExitCode
|
||||||
safeSystem command params = safeSystemEnv command params Nothing
|
safeSystem command params = safeSystem' command params id
|
||||||
|
|
||||||
|
safeSystem' :: FilePath -> [CommandParam] -> (CreateProcess -> CreateProcess) -> IO ExitCode
|
||||||
|
safeSystem' command params mkprocess = do
|
||||||
|
(_, _, _, pid) <- createProcess p
|
||||||
|
waitForProcess pid
|
||||||
|
where
|
||||||
|
p = mkprocess $ proc command (toCommand params)
|
||||||
|
|
||||||
safeSystemEnv :: FilePath -> [CommandParam] -> Maybe [(String, String)] -> IO ExitCode
|
safeSystemEnv :: FilePath -> [CommandParam] -> Maybe [(String, String)] -> IO ExitCode
|
||||||
safeSystemEnv command params environ = do
|
safeSystemEnv command params environ = safeSystem' command params $
|
||||||
(_, _, _, pid) <- createProcess (proc command $ toCommand params)
|
\p -> p { env = environ }
|
||||||
{ env = environ }
|
|
||||||
waitForProcess pid
|
|
||||||
|
|
||||||
{- Wraps a shell command line inside sh -c, allowing it to be run in a
|
{- Wraps a shell command line inside sh -c, allowing it to be run in a
|
||||||
- login shell that may not support POSIX shell, eg csh. -}
|
- login shell that may not support POSIX shell, eg csh. -}
|
||||||
|
|
Loading…
Reference in New Issue