{-# LANGUAGE QuasiQuotes #-}
module Main (main) where
import Control.Monad
import System.Directory.OsPath
import System.OsPath
import Data.Maybe
listDir :: OsPath -> IO ()
listDir dir = do
contents <- listDirectory dir
let fullPaths = map (dir </>) contents
forM_ fullPaths $ \path -> do
isDir <- doesDirectoryExist path
if isDir
then do
symlink <- pathIsSymbolicLink path
if symlink
then putStrLn $ fromJust $ decodeUtf path
else listDir path -- depth first
else putStrLn $ fromJust $ decodeUtf path
putStrLn $ fromJust $ decodeUtf dir
main :: IO ()
main = listDir [osp|.|]