diff options
| author | Joey Hess <joey@kitenet.net> | 2014-06-07 00:07:08 -0400 |
|---|---|---|
| committer | Joey Hess <joey@kitenet.net> | 2014-06-07 00:07:19 -0400 |
| commit | 969db1ed56157aa202359c0f47fff783baba6eac (patch) | |
| tree | bd62764ae149804b64dd7e8bde21560344847bf3 | |
| parent | a4dd315d3c3bcf4fdd18f39592676de19b221815 (diff) | |
when ssh key data is missing, allow both error messages to be printed
| -rw-r--r-- | config-joey.hs | 1 | ||||
| -rw-r--r-- | src/Propellor/Property.hs | 9 | ||||
| -rw-r--r-- | src/Propellor/Property/Ssh.hs | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/config-joey.hs b/config-joey.hs index 74ad9e9a..63768eeb 100644 --- a/config-joey.hs +++ b/config-joey.hs @@ -196,6 +196,7 @@ hosts = -- (o) ` & Apt.installed ["obnam", "sshfs", "rsync"] & JoeySites.githubBackup & JoeySites.obnamRepos ["wren", "pell"] + & Ssh.knownHost hosts "usw-s002.rsync.net" "joey" & alias "podcatcher.kitenet.net" & Apt.installed ["git-annex"] diff --git a/src/Propellor/Property.hs b/src/Propellor/Property.hs index e3d46eae..c7a03765 100644 --- a/src/Propellor/Property.hs +++ b/src/Propellor/Property.hs @@ -37,6 +37,15 @@ combineProperties desc ps = Property desc (go ps NoChange) (combineAttrs ps) FailedChange -> return FailedChange _ -> go ls (r <> rs) +-- | Does not stop on failure (but does propigate failure at the end). +combineProperties' :: Desc -> [Property] -> Property +combineProperties' desc ps = Property desc (go ps NoChange) (combineAttrs ps) + where + go [] rs = return rs + go (l:ls) rs = do + r <- ensureProperty l + go ls (r <> rs) + -- | Combines together two properties, resulting in one property -- that ensures the first, and if the first succeeds, ensures the second. -- The property uses the description of the first property. diff --git a/src/Propellor/Property/Ssh.hs b/src/Propellor/Property/Ssh.hs index 061f440c..ba0311cc 100644 --- a/src/Propellor/Property/Ssh.hs +++ b/src/Propellor/Property/Ssh.hs @@ -97,7 +97,7 @@ hostKey keytype = combineProperties desc -- | Sets up a user with a ssh private key and public key pair -- from the site's PrivData. keyImported :: SshKeyType -> UserName -> Property -keyImported keytype user = combineProperties desc +keyImported keytype user = combineProperties' desc [ property desc (install writeFile (SshPubKey keytype user) ".pub") , property desc (install writeFileProtected (SshPrivKey keytype user) "") ] |
