From 2ed70fa5d64bfcafd14dcc2d66ac0b95d4a85b26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 30 Nov 2025 13:27:58 +0100 Subject: =?UTF-8?q?Implement=20and=20test=20=E2=80=98extract=20--force?= =?UTF-8?q?=E2=80=99=20without=20copyRecursiveForce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command/Extract.hs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/Command') diff --git a/src/Command/Extract.hs b/src/Command/Extract.hs index a9ab292..bb4498d 100644 --- a/src/Command/Extract.hs +++ b/src/Command/Extract.hs @@ -98,8 +98,11 @@ cmdExtract (ExtractCommand ExtractOptions {..} ExtractArguments {..}) = do wpath <- liftIO $ readFile (adir "path") let tpath | isdir = extractDestination takeFileName wpath | otherwise = extractDestination - when (not extractForce) $ do - liftIO (doesPathExist tpath) >>= \case - True -> tfail $ "destination ‘" <> T.pack tpath <> "’ already exists" - False -> return () - liftIO $ copyRecursiveForce (adir "data") tpath + liftIO (doesPathExist tpath) >>= \case + True + | extractForce -> liftIO (doesDirectoryExist tpath) >>= \case + True -> liftIO $ removeDirectoryRecursive tpath + False -> liftIO $ removeFile tpath + | otherwise -> tfail $ "destination ‘" <> T.pack tpath <> "’ already exists" + False -> return () + liftIO $ copyRecursive (adir "data") tpath -- cgit v1.2.3