packages feed

ghc-tags-plugin-0.2.2.0: app/check.hs

-- | 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"