packages feed

dockercook-0.5.0.0: src/lib/Cook/Sync.hs

{-# LANGUAGE DoAndIfThenElse #-}
module Cook.Sync where

import Cook.Util
import Cook.State.Manager
import qualified Cook.DirectDocker as Docker

import System.Directory
import qualified Data.Text as T

runSync :: FilePath -> IO ()
runSync stateDir =
    do createDirectoryIfMissing True stateDir
       hostInfo <- Docker.dockerInfo
       case hostInfo of
         Nothing -> logError "Docker daemon not reachable!"
         Just info ->
             do logInfo $ "Sync with " ++ T.unpack (Docker.di_name info) ++ " started, please wait..."
                (stateManager, _) <- createStateManager stateDir
                imCache <- Docker.newDockerImagesCache
                syncImages stateManager (Docker.di_id info) (\v -> Docker.doesImageExist imCache (Left v))
                logInfo "Sync complete."