summaryrefslogtreecommitdiff
path: root/Propellor
diff options
context:
space:
mode:
authorJoey Hess2014-05-01 10:49:52 -0300
committerJoey Hess2014-05-01 10:49:52 -0300
commit6088df9105a10ef446cc236982c2e30857182a84 (patch)
treea407345854637915fca54e61a68819731b375e05 /Propellor
parentf058e47574603fffffc3f60305bc874b78f7770f (diff)
parent2bc9a2a7379f80595f5b8f3dc5475f64d5537cfc (diff)
Merge branch 'joeyconfig'
Diffstat (limited to 'Propellor')
-rw-r--r--Propellor/Property/Git.hs4
-rw-r--r--Propellor/Property/SiteSpecific/JoeySites.hs7
-rw-r--r--Propellor/SimpleSh.hs9
3 files changed, 18 insertions, 2 deletions
diff --git a/Propellor/Property/Git.hs b/Propellor/Property/Git.hs
index ba370e51..e5df7e48 100644
--- a/Propellor/Property/Git.hs
+++ b/Propellor/Property/Git.hs
@@ -86,4 +86,8 @@ cloned owner url dir mbranch = check originurl (property desc checkout)
[ Just $ "git clone " ++ shellEscape url ++ " " ++ shellEscape dir ++ " < /dev/null"
, Just $ "cd " ++ shellEscape dir
, ("git checkout " ++) <$> mbranch
+ -- In case this repo is exposted via the web,
+ -- although the hook to do this ongoing is not
+ -- installed here.
+ , Just "git update-server-info"
]
diff --git a/Propellor/Property/SiteSpecific/JoeySites.hs b/Propellor/Property/SiteSpecific/JoeySites.hs
index 06865c45..bdc60a5b 100644
--- a/Propellor/Property/SiteSpecific/JoeySites.hs
+++ b/Propellor/Property/SiteSpecific/JoeySites.hs
@@ -15,6 +15,7 @@ import qualified Propellor.Property.User as User
import qualified Propellor.Property.Obnam as Obnam
import qualified Propellor.Property.Apache as Apache
import Utility.SafeCommand
+import Utility.FileMode
import Data.List
import System.Posix.Files
@@ -183,10 +184,16 @@ annexWebSite :: [Host] -> Git.RepoUrl -> HostName -> AnnexUUID -> [(String, Git.
annexWebSite hosts origin hn uuid remotes = propertyList (hn ++" website using git-annex")
[ Git.cloned "joey" origin dir Nothing
`onChange` setup
+ , postupdatehook `File.hasContent`
+ [ "#!/bin/sh"
+ , "exec git update-server-info"
+ ] `onChange`
+ (postupdatehook `File.mode` (combineModes (ownerWriteMode:readModes ++ executeModes)))
, setupapache
]
where
dir = "/srv/web/" ++ hn
+ postupdatehook = dir </> ".git/hooks/post-update"
setup = userScriptProperty "joey" setupscript
`requires` Ssh.keyImported SshRsa "joey"
`requires` Ssh.knownHost hosts "turtle.kitenet.net" "joey"
diff --git a/Propellor/SimpleSh.hs b/Propellor/SimpleSh.hs
index c088eda7..73ff41ae 100644
--- a/Propellor/SimpleSh.hs
+++ b/Propellor/SimpleSh.hs
@@ -70,13 +70,17 @@ simpleSh namedpipe = do
simpleShClient :: FilePath -> String -> [String] -> ([Resp] -> IO a) -> IO a
simpleShClient namedpipe cmd params handler = do
+ debug ["simplesh connecting"]
s <- socket AF_UNIX Stream defaultProtocol
connect s (SockAddrUnix namedpipe)
h <- socketToHandle s ReadWriteMode
hPutStrLn h $ show $ Cmd cmd params
hFlush h
+ debug ["simplesh sent command"]
resps <- catMaybes . map readish . lines <$> hGetContents h
- hClose h `after` handler resps
+ v <- hClose h `after` handler resps
+ debug ["simplesh processed response"]
+ return v
simpleShClientRetry :: Int -> FilePath -> String -> [String] -> ([Resp] -> IO a) -> IO a
simpleShClientRetry retries namedpipe cmd params handler = go retries
@@ -88,7 +92,8 @@ simpleShClientRetry retries namedpipe cmd params handler = go retries
v <- tryIO run
case v of
Right r -> return r
- Left _ -> do
+ Left e -> do
+ debug ["simplesh connection retry", show e]
threadDelaySeconds (Seconds 1)
go (n - 1)