summaryrefslogtreecommitdiff
path: root/Command/Import.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Command/Import.hs')
-rw-r--r--Command/Import.hs35
1 files changed, 15 insertions, 20 deletions
diff --git a/Command/Import.hs b/Command/Import.hs
index 196f27738..305396c7f 100644
--- a/Command/Import.hs
+++ b/Command/Import.hs
@@ -67,14 +67,8 @@ start :: DuplicateMode -> (FilePath, FilePath) -> CommandStart
start mode (srcfile, destfile) =
ifM (liftIO $ isRegularFile <$> getSymbolicLinkStatus srcfile)
( do
- isdup <- do
- backend <- chooseBackend destfile
- let ks = KeySource srcfile srcfile Nothing
- v <- genKey ks backend
- case v of
- Just (k, _) -> not . null <$> keyLocations k
- _ -> return False
- case pickaction isdup of
+ ma <- pickaction
+ case ma of
Nothing -> stop
Just a -> do
showStart "import" destfile
@@ -101,15 +95,16 @@ start mode (srcfile, destfile) =
, notoverwriting "(use --force to override)"
)
notoverwriting why = error $ "not overwriting existing " ++ destfile ++ " " ++ why
- pickaction isdup = case mode of
- DeDuplicate
- | isdup -> Just deletedup
- | otherwise -> Just importfile
- CleanDuplicates
- | isdup -> Just deletedup
- | otherwise -> Nothing
- SkipDuplicates
- | isdup -> Nothing
- | otherwise -> Just importfile
- _ -> Just importfile
-
+ checkdup dupa notdupa = do
+ backend <- chooseBackend destfile
+ let ks = KeySource srcfile srcfile Nothing
+ v <- genKey ks backend
+ isdup <- case v of
+ Just (k, _) -> not . null <$> keyLocations k
+ _ -> return False
+ return $ if isdup then dupa else notdupa
+ pickaction = case mode of
+ DeDuplicate -> checkdup (Just deletedup) (Just importfile)
+ CleanDuplicates -> checkdup (Just deletedup) Nothing
+ SkipDuplicates -> checkdup Nothing (Just importfile)
+ _ -> return (Just importfile)