{- Copyright (C) 2022 Yuchen Pei. This file is part of f2md. f2md is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. f2md is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with f2md. If not, see . -} module F2Md.Utils (expandPath) where import System.Directory import System.Posix.User expandPath :: FilePath -> IO FilePath expandPath path = let (pre, post) = break (=='/') path in case pre of "~" -> (++ post) <$> getHomeDirectory '~' : user -> (++ post) . homeDirectory <$> getUserEntryForName user _ -> return path