diff --git a/haskell/README.md b/haskell/README.md new file mode 100644 index 0000000..e8cb455 --- /dev/null +++ b/haskell/README.md @@ -0,0 +1,4 @@ + +# P2PRC Haskell library doc + + diff --git a/haskell/lib/API.hs b/haskell/lib/API.hs index 2fec7cc..361c519 100644 --- a/haskell/lib/API.hs +++ b/haskell/lib/API.hs @@ -1,6 +1,6 @@ module API - ( P2prAPI(..) + ( P2PRCapi(..) , MapPortRequest(..) , getP2prcAPI ) @@ -32,7 +32,7 @@ import Environment ( cleanEnvironment ) -data P2prAPI = MkP2prAPI +data P2PRCapi = MkP2PRCapi { startServer :: IOEitherError ProcessHandle , execInitConfig :: IOEitherError P2prcConfig , execListServers :: IOEitherError IPAdressTable @@ -44,7 +44,7 @@ data MapPortRequest = MkMapPortRequest Int String -getP2prcAPI :: IOEitherError P2prAPI +getP2prcAPI :: IOEitherError P2PRCapi getP2prcAPI = do cleanEnvironment @@ -64,23 +64,23 @@ getP2prcAPI = do in do - Right $ MkP2prAPI + Right $ MkP2PRCapi { startServer = spawnProcP2Prc p2prcCmd [ MkOptAtomic "--s" ] , execListServers = execProcP2PrcParser [ MkOptAtomic "--ls" ] MkEmptyStdInput , execMapPort = - \ (MkMapPortRequest portNumber _) -> + \ (MkMapPortRequest portNumber domainName) -> execProcP2PrcParser [ MkOptTuple ( "--mp" , show portNumber ) - -- , MkOptTuple -- TODO: add domain parameter - -- ( "--dm" - -- , domainName - -- ) + , MkOptTuple + ( "--dn" + , domainName + ) ] MkEmptyStdInput diff --git a/haskell/lib/P2Prc.hs b/haskell/lib/P2Prc.hs index 2970ff3..9b710f4 100644 --- a/haskell/lib/P2Prc.hs +++ b/haskell/lib/P2Prc.hs @@ -7,8 +7,8 @@ import System.Process ( terminateProcess ) import Control.Concurrent ( threadDelay ) import API - ( P2prAPI(..) - , MapPortRequest(..) + ( P2PRCapi(..) + , MapPortRequest(MkMapPortRequest) , getP2prcAPI ) @@ -37,13 +37,14 @@ import API runP2Prc :: IO () runP2Prc = do - + -- + -- TODO: add quickcheck testing (quickchecking-dynamic) -- -- TODO: Change Standard Library -- TODO: add GDTA syntax to data types + -- -- TODO: need monad transformers to refactor the code -- - -- TODO: add quickcheck testing (quickchecking-dynamic) -- -- TODO: parse IO arguments; -- TODO: create DSL from the standard input @@ -68,7 +69,7 @@ runP2Prc = do case eitherP2prcAPI of (Right p2prcAPI) -> do let - ( MkP2prAPI + ( MkP2PRCapi { startServer = startServer , execInitConfig = execInitConfig , execListServers = execListServers diff --git a/haskell/p2prc.cabal b/haskell/p2prc.cabal index d5b8f8a..db05be8 100644 --- a/haskell/p2prc.cabal +++ b/haskell/p2prc.cabal @@ -1,13 +1,7 @@ cabal-version: 3.0 - --- http://haskell.org/cabal/users-guide/ - --- The name of the package. name: p2prc - --- The package version. -- See the Haskell package versioning policy (PVP) for standards -- guiding when and how versions should be incremented. -- https://pvp.haskell.org @@ -16,59 +10,43 @@ name: p2prc -- | | | +--- code changes with no API change version: 0.1.0.0 --- A short (one-line) description of the package. synopsis: p2prc haskell library --- A longer description of the package. -description: Implements a client interface to the P2Prc networking runtime +description: Implements a client interface to the P2PRC networking runtime --- The license under which the package is released. license: GPL-3.0-only --- The file containing the license text. license-file: LICENSE --- The package author(s). author: xecarlox94 --- An email address to which users can send suggestions, bug reports, and patches. maintainer: jf94.uk@gmail.com --- A copyright notice. --- copyright: category: Network build-type: Simple --- Extra doc files to be distributed with the package, such as a CHANGELOG or a README. -extra-doc-files: CHANGELOG.md +extra-doc-files: README.md --- Extra source files to be distributed with the package, such as examples, or a tutorial module. --- extra-source-files: common warnings ghc-options: -Wall executable p2prc - -- Import common warning flags. + import: warnings - -- Directories containing source files. hs-source-dirs: src - -- .hs or .lhs file containing the Main module. main-is: Main.hs -- Modules included in this executable, other than Main. -- other-modules: Example - -- LANGUAGE extensions used by modules in this package. other-extensions: OverloadedStrings - -- Other library packages from which modules are imported. build-depends: base , p2prc - -- Base language which the package is written in. default-language: GHC2021 library diff --git a/haskell/src/Main.hs b/haskell/src/Main.hs index 33b16b7..55d6b1d 100644 --- a/haskell/src/Main.hs +++ b/haskell/src/Main.hs @@ -1,5 +1,4 @@ - module Main where import P2Prc (runP2Prc)