packages feed

pgdl-7.5: src/Log.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE LambdaCase #-}

module Log where

import Video

import System.Directory
import System.FilePath

import qualified Data.Text as T
import qualified Data.Text.IO as T

encVid :: [Video] -> T.Text
encVid vs = T.intercalate "\n" $ map vidName vs

decVid :: T.Text -> [Video]
decVid = map (\t -> Video t "" "" "") . T.lines

logname :: FilePath
logname = ".pgdl.cache"

writeVid :: [Video] -> IO ()
writeVid vs = do
    hdir <- getHomeDirectory
    T.writeFile (hdir </> logname) $ encVid vs 

readVid :: IO [Video]
readVid = do
    hdir <- getHomeDirectory
    let absdir = hdir </> logname
    doesFileExist absdir >>= \case
        True -> do
            dat <- T.readFile (hdir </> logname)
            return $ decVid dat
        False -> return dlnVid

dlnVid :: [Video]
dlnVid = [Video "Downloading..." "" "" ""]