commit 0fdfbb4a08955b5e0aae572c555809088aea306c Author: Michele Guerini Rocco Date: Mon Sep 12 15:41:41 2016 +0200 diff --git a/bup-backup b/bup-backup new file mode 100644 index 0000000..9ce0bbb --- /dev/null +++ b/bup-backup @@ -0,0 +1,42 @@ +#!/usr/bin/env nix-script +#!>haskell +#! shell | bup git +#! env | BUP_DIR +#! haskell | shell-conduit filepath + +import Data.List (intersperse) +import Data.Conduit.Shell +import Data.Conduit.Shell.Segments (strings) +import Data.Conduit.Shell.Variadic (variadicProcess) +import System.FilePath + + +excluded :: [String] +excluded = intersperse "--exclude" + [ "/home/rnhmjoj/.cache/" + , "/home/rnhmjoj/games/" + ] + + +main :: IO () +main = run (strings (bup "ls") >>= mapM_ backup) + + +findPath :: String -> Segment FilePath +findPath path = do + files <- strings (bup "ls" path) + if length files /= 1 + then return ("/" final path) + else findPath (path head files) + where final = concat . drop 2 . splitPath + + +backup :: String -> Segment () +backup name = do + path <- findPath (name "latest") + proc "bup" ("index" : "-v" : path : "--exclude" : excluded) + bup "save" "-n" name path + + +bup :: ProcessType r => String -> r +bup = variadicProcess "bup"