From cd10ceb976c38b2df0101a601022918852def4b3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 2 Apr 2014 18:36:42 -0400 Subject: generalized git-annex autobuilder to not need a rsync password --- Propellor/Property/SiteSpecific/GitAnnexBuilder.hs | 20 +++++++++++++------- config.hs | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs b/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs index 8fcfbd6a..7b823ed6 100644 --- a/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs +++ b/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs @@ -12,8 +12,8 @@ builduser = "builder" builddir :: FilePath builddir = "gitbuilder" -builder :: Architecture -> CronTimes -> Property -builder arch crontimes = combineProperties "gitannexbuilder" +builder :: Architecture -> CronTimes -> Bool -> Property +builder arch crontimes rsyncupload = combineProperties "gitannexbuilder" [ Apt.stdSourcesList Unstable , Apt.buildDep ["git-annex"] , Apt.installed ["git", "rsync", "moreutils", "ca-certificates", @@ -38,11 +38,17 @@ builder arch crontimes = combineProperties "gitannexbuilder" , Property "rsync password" $ do d <- homedir let f = d "rsyncpassword" - withPrivData (Password builduser) $ \p -> do - oldp <- catchDefaultIO "" $ readFileStrict f - if p /= oldp - then makeChange $ writeFile f p - else noChange + if rsyncupload + then withPrivData (Password builduser) $ \p -> do + oldp <- catchDefaultIO "" $ readFileStrict f + if p /= oldp + then makeChange $ writeFile f p + else noChange + else do + ifM (doesFileExist f) + ( noChange + , makeChange $ writeFile f "no password configured" + ) ] where homedir = fromMaybe ("/home/" ++ builduser) <$> User.homedir builduser diff --git a/config.hs b/config.hs index e54b3892..a7694991 100644 --- a/config.hs +++ b/config.hs @@ -76,7 +76,7 @@ container _host name let arch = takeWhile (/= '-') name in Just $ Docker.containerFrom (image $ System (Debian Unstable) arch) - [ Docker.inside $ props & GitAnnexBuilder.builder arch "15 * * * *" ] + [ Docker.inside $ props & GitAnnexBuilder.builder arch "15 * * * *" True ] | otherwise = Nothing -- | Docker images I prefer to use. -- cgit v1.2.3