packages feed

hid-examples-0.4: ipgen/Main.hs

import Hedgehog
import qualified Hedgehog.Gen as Gen
import Options.Applicative as Opt
import Control.Exception.Safe
import System.Exit
import Data.Semigroup

import GenIP

data Params = Params
                Int
                FilePath

mkParams :: Opt.Parser Params
mkParams = Params
             <$> argument auto (metavar "SIZE" <> help "number of ranges")
             <*> argument str (metavar "FILE" <> help "IP range database") 

writeFileWithRanges :: Params -> IO ()
writeFileWithRanges (Params n fp) = do
  str <- show <$> Gen.sample (genIPRangeDBSized n n)
  writeFile fp str

main = (execParser opts >>= writeFileWithRanges)
       `catches` [Handler parserExit]
  where
    opts =
      info (mkParams <**> helper)
           (fullDesc <>
            progDesc ("Generates IP range database"))
    parserExit :: ExitCode -> IO ()
    parserExit _ = pure ()