check if git-remote-gcrypt is installed

This commit is contained in:
Joey Hess 2013-09-16 16:35:27 -04:00
parent b37aad6c06
commit 490aa67d10
2 changed files with 30 additions and 18 deletions

View file

@ -274,21 +274,13 @@ cloneModal = $(widgetFile "configurators/adddrive/clonemodal")
getFinishAddDriveR :: RemovableDriveKey -> Handler Html getFinishAddDriveR :: RemovableDriveKey -> Handler Html
getFinishAddDriveR (RemovableDriveKey drive mkeyid) = getFinishAddDriveR (RemovableDriveKey drive mkeyid) =
make >>= redirect . EditNewRepositoryR maybe setupclear setupencrypted mkeyid
where where
make = do setupclear = makewith $ \isnew -> (,)
liftIO $ createDirectoryIfMissing True dir <$> liftIO (initRepo isnew False dir $ Just remotename)
isnew <- liftIO $ makeRepo dir True <*> combineRepos dir remotename
{- Removable drives are not reliable media, so enable fsync. -} setupencrypted keyid = ifM (liftIO $ inPath "git-remote-gcrypt")
liftIO $ inDir dir $ ( makewith $ \_ -> do
setConfig (ConfigKey "core.fsyncobjectfiles")
(Git.Config.boolConfig True)
maybe (setupclear isnew) setupencrypted mkeyid
setupclear isnew = do
u <- liftIO $ initRepo isnew False dir $ Just remotename
r <- combineRepos dir remotename
finishsetup u r
setupencrypted keyid = do
r <- liftAnnex $ addRemote $ r <- liftAnnex $ addRemote $
initSpecialRemote remotename GCrypt.remote $ M.fromList initSpecialRemote remotename GCrypt.remote $ M.fromList
[ ("type", "gcrypt") [ ("type", "gcrypt")
@ -296,11 +288,21 @@ getFinishAddDriveR (RemovableDriveKey drive mkeyid) =
, configureEncryption HybridEncryption , configureEncryption HybridEncryption
, ("keyid", keyid) , ("keyid", keyid)
] ]
finishsetup (Types.Remote.uuid r) r return (Types.Remote.uuid r, r)
finishsetup u r = do , page "Encrypt repository" (Just Configuration) $
$(widgetFile "configurators/needgcrypt")
)
makewith a = do
liftIO $ createDirectoryIfMissing True dir
isnew <- liftIO $ makeRepo dir True
{- Removable drives are not reliable media, so enable fsync. -}
liftIO $ inDir dir $
setConfig (ConfigKey "core.fsyncobjectfiles")
(Git.Config.boolConfig True)
(u, r) <- a isnew
liftAnnex $ setStandardGroup u TransferGroup liftAnnex $ setStandardGroup u TransferGroup
liftAssistant $ syncRemote r liftAssistant $ syncRemote r
return u redirect $ EditNewRepositoryR u
mountpoint = T.unpack (mountPoint drive) mountpoint = T.unpack (mountPoint drive)
dir = removableDriveRepository drive dir = removableDriveRepository drive
remotename = takeFileName mountpoint remotename = takeFileName mountpoint

View file

@ -0,0 +1,10 @@
<div .span9 .hero-unit>
<h2>
Need git-remote-gcrypt
<p>
To encrypt git repositories, you need to install #
<a href="https://github.com/joeyh/git-remote-gcrypt">
git-remote-gcrypt
<p>
<a .btn .btn-primary .btn-large href="">
Retry