From 04d0742ff0b6d3a54b6a531966b8a170801249fb Mon Sep 17 00:00:00 2001 From: rnhmjoj Date: Thu, 27 Aug 2015 22:19:58 +0000 Subject: [PATCH] Accidentally swapped the files --- Main.hs | 46 ++++++++++++++++++++++++++++++++++++++++++++-- Setup.hs | 46 ++-------------------------------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/Main.hs b/Main.hs index 9a994af..fec4c41 100644 --- a/Main.hs +++ b/Main.hs @@ -1,2 +1,44 @@ -import Distribution.Simple -main = defaultMain +import Control.Monad +import Data.Char (toLower) +import Text.Printf (printf) +import Crypto.Hash.SHA1 (hash) +import System.Environment (getArgs) +import System.Directory +import System.FilePath.Posix +import qualified Data.ByteString as B + +getDirectoryFiles :: FilePath -> IO [FilePath] +getDirectoryFiles path = + map (path ) <$> getDirectoryContents path >>= filterM doesFileExist + +fileHash :: FilePath -> IO String +fileHash = fmap (hex . hash) . B.readFile + +hex :: B.ByteString -> String +hex bytes = B.unpack bytes >>= printf "%02X" + + +newName :: FilePath -> IO FilePath +newName path = do + hash <- take 10 <$> fileHash path + let (file, ext) = splitExtension path + (dir, base) = splitFileName file + new = dir hash <.> map toLower ext + if null base + then return path + else return new + +main = do + args <- getArgs + path <- case args of + [] -> getCurrentDirectory + x:_ -> return x + putStrLn ("Renaming files in " ++ path) + files <- getDirectoryFiles path + names <- mapM newName files + forM (zip files names) $ \(x, y) -> do + let x' = takeFileName x + y' = takeFileName y + putStrLn (printf "%s -> %s" x' y') + renameFile x y + putStrLn "Files renamed successfully" \ No newline at end of file diff --git a/Setup.hs b/Setup.hs index fec4c41..9a994af 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,44 +1,2 @@ -import Control.Monad -import Data.Char (toLower) -import Text.Printf (printf) -import Crypto.Hash.SHA1 (hash) -import System.Environment (getArgs) -import System.Directory -import System.FilePath.Posix -import qualified Data.ByteString as B - -getDirectoryFiles :: FilePath -> IO [FilePath] -getDirectoryFiles path = - map (path ) <$> getDirectoryContents path >>= filterM doesFileExist - -fileHash :: FilePath -> IO String -fileHash = fmap (hex . hash) . B.readFile - -hex :: B.ByteString -> String -hex bytes = B.unpack bytes >>= printf "%02X" - - -newName :: FilePath -> IO FilePath -newName path = do - hash <- take 10 <$> fileHash path - let (file, ext) = splitExtension path - (dir, base) = splitFileName file - new = dir hash <.> map toLower ext - if null base - then return path - else return new - -main = do - args <- getArgs - path <- case args of - [] -> getCurrentDirectory - x:_ -> return x - putStrLn ("Renaming files in " ++ path) - files <- getDirectoryFiles path - names <- mapM newName files - forM (zip files names) $ \(x, y) -> do - let x' = takeFileName x - y' = takeFileName y - putStrLn (printf "%s -> %s" x' y') - renameFile x y - putStrLn "Files renamed successfully" \ No newline at end of file +import Distribution.Simple +main = defaultMain