Check if image exists before building (#12)

This commit is contained in:
Manuel 2021-05-21 05:53:13 +02:00 committed by GitHub
parent c186ecf521
commit e54e191f1b
Signed by: GitHub
GPG key ID: 4AEE18F83AFDEB23

View file

@ -40,13 +40,19 @@ data EvalResult
buildImage :: Language -> Myriad ()
buildImage lang = do
env <- ask
logInfo ["Building image ", cs $ imageName lang]
exec_ ["docker build -t ", imageName lang, " ", cs (env ^. #languagesDir) </> cs (lang ^. #name)]
setupQSems
logInfo ["Built image ", cs $ imageName lang]
when (env ^. #config % #prepareContainers) . void $ setupContainer lang
logInfo ["Checking for image ", cs $ imageName lang]
res <- try $ exec ["docker images -q ", imageName lang]
case res of
Left (SomeException err) -> logError ["An exception occured when checking for image ", cs $ imageName lang, ":\n", cs $ show err]
Right s -> do
when (BL.null s) . void $ do -- If string is empty that means the image does not yet exist
logInfo ["Building image ", cs $ imageName lang]
exec_ ["docker build -t ", imageName lang, " ", cs (env ^. #languagesDir) </> cs (lang ^. #name)]
logInfo ["Built image ", cs $ imageName lang]
setupQSems
when (env ^. #config % #prepareContainers) . void $ setupContainer lang
where
setupQSems :: Myriad ()
setupQSems :: Myriad ()
setupQSems = do
env <- ask
csem <- newQSem 1 -- We only want one container to be set up at a time