LIB: add destination dir name argument to copyDir

This commit is contained in:
Julian Ospald 2016-04-03 22:52:18 +02:00
parent 0a71c3c044
commit 0d92ebb8c8
No known key found for this signature in database
GPG Key ID: 511B62C09D50CD28

View File

@ -165,15 +165,18 @@ runFileOp _ = return Nothing
copyDir :: CopyMode
-> AnchoredFile FileInfo -- ^ source dir
-> AnchoredFile FileInfo -- ^ destination dir
-> Path Fn -- ^ destination dir name
-> IO ()
copyDir _ AFileInvFN _ = throw InvalidFileName
copyDir _ _ AFileInvFN = throw InvalidFileName
copyDir cm from@(_ :/ Dir fromn FileInfo{ fileMode = fmode })
copyDir _ AFileInvFN _ _ = throw InvalidFileName
copyDir _ _ AFileInvFN _ = throw InvalidFileName
copyDir _ _ _ InvFN = throw InvalidFileName
copyDir cm from@(_ :/ Dir _ FileInfo{ fileMode = fmode })
to@(_ :/ Dir {})
fn
= do
let fromp = fullPath from
top = fullPath to
destdirp = top P.</> fromn
destdirp = top P.</> fn
throwDestinationInSource fromp destdirp
throwSameFile fromp destdirp
throwCantOpenDirectory fromp
@ -187,7 +190,7 @@ copyDir cm from@(_ :/ Dir fromn FileInfo{ fileMode = fmode })
for_ contents $ \f ->
case f of
(_ :/ SymLink {}) -> recreateSymlink cm f destdir (name . file $ f)
(_ :/ Dir {}) -> copyDir cm f destdir
(_ :/ Dir {}) -> copyDir cm f destdir (name . file $ f)
(_ :/ RegFile {}) -> copyFile Replace f destdir (name . file $ f)
_ -> return ()
where
@ -205,7 +208,7 @@ copyDir cm from@(_ :/ Dir fromn FileInfo{ fileMode = fmode })
(deleteDirRecursive =<<
HSFM.FileSystem.FileType.readFileWithFileInfo destdir)
createDirectory destdir' fmode'
copyDir _ _ _ = throw $ InvalidOperation "wrong input type"
copyDir _ _ _ _ = throw $ InvalidOperation "wrong input type"
-- |Recreate a symlink.
@ -303,7 +306,7 @@ easyCopy cm from@(_ :/ RegFile{})
= copyFile cm from to (name . file $ from)
easyCopy cm from@(_ :/ Dir{})
to@(_ :/ Dir{})
= copyDir cm from to
= copyDir cm from to (name . file $ from)
easyCopy _ _ _ = throw $ InvalidOperation "wrong input type"