-- | Utility program which checks the size of tags file. -- -- It's a like `wc` but using `lock` file, so we don't get intermediate -- results. -- module Main where import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BSC import System.FilePath import System.IO import System.Environment import Plugin.GhcTags.FileLock main :: IO () main = do file :_ <- getArgs withFileLock (lockFile file) ExclusiveLock $ \_h -> do numOfLines <- length . BSC.lines <$> BS.readFile file putStrLn (show numOfLines) where lockFile file = case splitFileName file of (dir, name) -> dir "." ++ name ++ ".lock"