packages feed

net-spider-rpl-cli 0.1.1.1 → 0.1.2.0

raw patch · 5 files changed

+42/−17 lines, 5 filesdep ~net-spider-cliPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: net-spider-cli

API changes (from Hackage documentation)

- NetSpider.RPL.CLI: CmdCIS :: InputParams -> Query IPv6ID () () () -> Cmd
+ NetSpider.RPL.CLI: CmdCIS :: InputParams -> CLISnapshotQuery IPv6ID -> Cmd
- NetSpider.RPL.CLI: CmdSnapshot :: Query IPv6ID () () () -> Cmd
+ NetSpider.RPL.CLI: CmdSnapshot :: CLISnapshotQuery IPv6ID -> Cmd

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for net-spider-rpl-cli +## 0.1.2.0  -- 2019-10-13++* Add `--duration` option, thanks to `net-spider-cli-0.2.0.0`.+* Enable `-threaded` to build the executable.+ ## 0.1.1.1  -- 2019-10-04  * Confirm test with `net-spider-rpl-0.3.0.0`, `ip-1.5.1` and `ip-1.6.0`.
README.md view
@@ -16,7 +16,7 @@  3. Input logs about RPL networks. -        $ ./run-net-spider.sh input < syslog+        $ ./run-net-spider.sh input - < syslog  4. Get a snapshot graph of the RPL network in GraphML format. 
net-spider-rpl-cli.cabal view
@@ -1,5 +1,5 @@ name:                   net-spider-rpl-cli-version:                0.1.1.1+version:                0.1.2.0 author:                 Toshio Ito <debug.ito@gmail.com> maintainer:             Toshio Ito <debug.ito@gmail.com> license:                BSD3@@ -29,7 +29,7 @@   build-depends:        base >=4.11.1.0 && <4.13,                         net-spider >=0.3.2.0 && <0.4,                         net-spider-rpl >=0.2.2.0 && <0.4,-                        net-spider-cli >=0.1.0.1 && <0.2,+                        net-spider-cli >=0.2.0.0 && <0.3,                         text >=1.2.2.2 && <1.3,                         unordered-containers >=0.2.8 && <0.3,                         greskell >=0.2.3 && <0.3,@@ -45,7 +45,7 @@   default-language:     Haskell2010   hs-source-dirs:       app   main-is:              Main.hs-  ghc-options:          -Wall -fno-warn-unused-imports+  ghc-options:          -Wall -fno-warn-unused-imports -threaded   -- other-modules:           -- default-extensions:      -- other-extensions:     @@ -62,7 +62,7 @@   -- default-extensions:      -- other-extensions:        other-modules:        NetSpider.RPL.CLISpec-  build-depends:        base, net-spider-rpl-cli, net-spider, net-spider-rpl, optparse-applicative, +  build-depends:        base, net-spider-rpl-cli, net-spider, net-spider-rpl, optparse-applicative, net-spider-cli,                         hspec >=2.5.5,                         ip >=1.3.0 && <1.7 
src/NetSpider/RPL/CLI.hs view
@@ -28,6 +28,7 @@ import Data.Time (getZonedTime, ZonedTime(zonedTimeToLocalTime), LocalTime(localDay), toGregorian) import NetSpider.GraphML.Writer (writeGraphML) import qualified NetSpider.CLI.Snapshot as CLIS+import NetSpider.CLI.Snapshot (CLISnapshotQuery) import NetSpider.CLI.Spider (SpiderConfig, parserSpiderConfig) import NetSpider.Input   ( defConfig, logThreshold,@@ -63,9 +64,7 @@  main :: IO () main = do-  cli_conf <- Opt.execParser $ Opt.info (Opt.helper <*> optionParser) $ mconcat $-              [ Opt.progDesc "net-spider front-end for RPL data model."-              ]+  cli_conf <- Opt.execParser optionParserInfo   let sconf = cliSpiderConfig cli_conf       cmd = cliCmd cli_conf   case cmd of@@ -100,7 +99,13 @@       putNodes (castSpiderConfig sconf) dao_nodes       return (dio_nodes, dao_nodes) -    doSnapshot sconf query = do+    makeQuery cli_query = do+      let base_q :: Query IPv6ID () () ()+          base_q = defQuery []+      returnWithHelp $ CLIS.makeSnapshotQuery base_q cli_query++    doSnapshot sconf cli_query = doSnapshot' sconf =<< makeQuery cli_query+    doSnapshot' sconf query = do       let start_node_num = length $ startsFrom query       hPutStrLn stderr ("---- Query starts from " ++ (show start_node_num) ++ " nodes")       when (start_node_num == 0) $ do@@ -121,7 +126,8 @@       hPutStrLn stderr ("---- Format DIO+DAO SnapshotGraph into GraphML")       TLIO.putStr $ writeGraphML com_graph -    doCIS sconf input_params query_base = do+    doCIS sconf input_params cli_query = do+      query_base <- makeQuery cli_query       doClear sconf       (dio_nodes, dao_nodes) <- doInput sconf input_params       -- Make a query from the FoundNodes just loaded.@@ -129,7 +135,7 @@                    ++                    (map (ipv6Only . subjectNode) dio_nodes)           q = query_base { startsFrom = starts }-      doSnapshot sconf q+      doSnapshot' sconf q     isVerboseDebug sconf = logThreshold sconf <= LevelDebug  @@ -166,9 +172,22 @@ -- | CLI subcommands and their arguments. data Cmd = CmdClear -- ^ Clear the entire database.          | CmdInput InputParams -- ^ Input FoundNodes to the database-         | CmdSnapshot (Query IPv6ID () () ()) -- ^ Get a snapshot graph.-         | CmdCIS InputParams (Query IPv6ID () () ()) -- ^ Clear + Input + Snapshot+         | CmdSnapshot (CLISnapshotQuery IPv6ID) -- ^ Get a snapshot graph.+         | CmdCIS InputParams (CLISnapshotQuery IPv6ID) -- ^ Clear + Input + Snapshot +returnWithHelp :: Either String a -> IO a+returnWithHelp (Right a) = return a+returnWithHelp (Left e) = do+  hPutStrLn stderr ("Error: " <> e)+  void $ Opt.handleParseResult $ Opt.execParserPure Opt.defaultPrefs optionParserInfo ["--help"]+  error "This should not happen."++optionParserInfo :: Opt.ParserInfo (CLIConfig n na fla)+optionParserInfo =+  Opt.info (Opt.helper <*> optionParser) $ mconcat $+  [ Opt.progDesc "net-spider front-end for RPL data model."+  ]+ optionParser :: Opt.Parser (CLIConfig n na fla) optionParser = CLIConfig <$> parserSpiderConfig <*> parserCommands   where@@ -195,7 +214,6 @@       CLIS.parserSnapshotQuery $       CLIS.SnapshotConfig       { CLIS.nodeIDReader = ipv6Reader,-        CLIS.basisSnapshotQuery = defQuery [],         CLIS.startsFromAsArguments = parse_arg       }     parserFilter = Opt.option readerFilter $ mconcat
test/NetSpider/RPL/CLISpec.hs view
@@ -3,7 +3,8 @@ import Data.Monoid (mempty) import qualified Options.Applicative as Opt import Net.IPv6 (ipv6)-import NetSpider.Query (startsFrom)+import NetSpider.CLI.Snapshot (makeSnapshotQuery)+import NetSpider.Query (startsFrom, defQuery) import NetSpider.RPL.FindingID (IPv6ID(..)) import Test.Hspec @@ -27,8 +28,9 @@     specify "--starts-from" $ do       let parse_result = runParser optionParser ["snapshot", "-s", "fd00::212:4b00:13a4:c554"]       case parse_result of-        Right (CLIConfig _ (CmdSnapshot got_q)) ->-          startsFrom got_q `shouldBe` [IPv6ID $ ipv6 0xfd00 0 0 0 0x0212 0x4b00 0x13a4 0xc554]+        Right (CLIConfig _ (CmdSnapshot got_cq)) -> do+          let got_s = fmap startsFrom $ makeSnapshotQuery (defQuery []) got_cq+          got_s `shouldBe` Right [IPv6ID $ ipv6 0xfd00 0 0 0 0x0212 0x4b00 0x13a4 0xc554]         Right _ ->           expectationFailure ("Unexpected CLIConfig obtained.")         Left err ->