{-# LANGUAGE DeriveDataTypeable, MultiParamTypeClasses, EmptyDataDecls #-} module Restore( Restore ) where import CmdLib import CmdLine import qualified Core import qualified Data.ByteString.Char8 as BSC data Restore deriving (Typeable) restorelast repodir dir = do x <- last `fmap` Core.repo repodir putStrLn $ "restoring " ++ Core.path x ++ ", at " ++ (BSC.unpack $ Core.hencode $ Core.root x) Core.restore repodir dir (Core.root x) instance Command Restore Flag Setup where synopsis _ = "hsbackup restore [--repo ] " description _ = "Restores a directory tree." options _ = [ Group "Basic options" (accept Repo) , Group "Advanced options" (accept Root) ] run _ setup [dir] | Just r <- root setup = Core.restore repodir dir r | otherwise = restorelast repodir dir where repodir = repo setup run _ _ _ = die "Restore requires exactly 1 argument."