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 (Gen.resize 99 $ 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 ()