packages feed

keera-hails-reactive-polling 0.0.3.3 → 0.8.0

raw patch · 5 files changed

+229/−48 lines, 5 filesdep +directorydep +filepathdep +hlintnew-uploaderPVP ok

version bump matches the API change (PVP)

Dependencies added: directory, filepath, hlint, process, regex-posix

API changes (from Hackage documentation)

Files

LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2015, Ivan Perez+Copyright (c) 2015-2020, Keera Studios Ltd  All rights reserved. @@ -13,9 +13,9 @@       disclaimer in the documentation and/or other materials provided       with the distribution. -    * Neither the name of Ivan Perez nor the names of other-      contributors may be used to endorse or promote products derived-      from this software without specific prior written permission.+    * Neither the name of Keera Studios, nor the names of other contributors+      may be used to endorse or promote products derived from this software+      without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
keera-hails-reactive-polling.cabal view
@@ -1,56 +1,118 @@--- hails.cabal auto-generated by cabal init. For additional options,--- see--- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.--- The name of the package.-Name:                keera-hails-reactive-polling+-- Copyright   : (C) Keera Studios Ltd, 2013+-- License     : All Rights Reserved+-- Maintainer  : support@keera.co.uk+--+cabal-version: >= 1.10+build-type:    Simple --- The package version. See the Haskell package versioning policy--- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for--- standards guiding when and how versions should be incremented.-Version:             0.0.3.3+name:          keera-hails-reactive-polling+version:       0.8.0+author:        Ivan Perez+maintainer:    support@keera.co.uk+homepage:      http://www.keera.co.uk/blog/community/+license:       BSD3+license-file:  LICENSE+copyright:     (C) 2013 Keera Studios Ltd+category:      Development+synopsis:      Haskell on Rails - Polling based Readable RVs+description:+  Keera Hails is a rapid application development system.+  .+  The idea behind Hails is that you should be able to build cross platform+  applications with minimal effort, very quickly, and the result should be easy+  to maintain.+  .+  Large Hails applications are structured following an optimized MVC+  architecture. Values are updated either from the view to the model, or from+  the model to the view. Internally, rules use a notion of direction in the+  update to determine how different components must be updated.+  .+  This library provides a construct to create RVs based on an operation+  to be polled a regular intervals. --- A short (one-line) description of the package.-Synopsis:            Haskell on Rails - Polling based Readable RVs+source-repository head+  type: git+  location: git://github.com/keera-studios/keera-hails+  subdir: keera-hails-reactive-polling --- URL for the project homepage or repository.-Homepage:            http://www.keera.es/blog/community/ --- The license under which the package is released.-License:             BSD3+-- You can disable the hlint test suite with -f-test-hlint+flag test-hlint+  default: False+  manual:  True --- The file containing the license text.-License-file:        LICENSE+-- You can disable the haddock coverage test suite with -f-test-doc-coverage+flag test-doc-coverage+  default: False+  manual:  True --- The package author(s).-Author:              Ivan Perez --- An email address to which users can send suggestions, bug reports,--- and patches.-Maintainer:          ivan.perez@keera.co.uk+library --- A copyright notice.--- Copyright:           +  exposed-modules:+    Hails.Polling -Category:            Development+  build-depends:+      base >= 4 && < 5 -Build-type:          Simple+    , keera-hails-reactivevalues+    , keera-callbacks --- Extra files to be distributed with the package, such as examples or--- a README.--- Extra-source-files:  +  default-language:+    Haskell2010 --- Constraint on the version of Cabal needed to build this package.-Cabal-version:       >=1.2+  hs-source-dirs:+    src/ -Library-  hs-source-dirs: src/-  -  ghc-options: -Wall -fno-warn-unused-do-bind -O2+  ghc-options:+    -Wall -fno-warn-unused-do-bind -O2 -  -- Modules exported by the library.-  Exposed-modules: Hails.Polling-  -  -- Packages needed in order to build this package.-  Build-depends: base >= 4 && < 5-               , keera-hails-reactivevalues-               , keera-callbacks++test-suite hlint++  type:+    exitcode-stdio-1.0++  main-is:+    HLintMain.hs++  default-language:+    Haskell2010++  hs-source-dirs:+    tests++  if !flag(test-hlint)+    buildable: False+  else+    build-depends:+        base  >= 4   && < 5+      , hlint >= 1.7++-- Verify that the code is thoroughly documented+test-suite haddock-coverage++  type:+    exitcode-stdio-1.0++  main-is:+    HaddockCoverage.hs++  default-language:+    Haskell2010++  hs-source-dirs:+    tests++  ghc-options:+    -Wall++  if !flag(test-doc-coverage)+    buildable: False+  else+    build-depends:+        base        >= 4 && < 5+      , directory+      , filepath+      , process+      , regex-posix
src/Hails/Polling.hs view
@@ -1,3 +1,8 @@+-- |+--+-- Copyright   : (C) Keera Studios Ltd, 2015+-- License     : BSD3+-- Maintainer  : support@keera.co.uk module Hails.Polling where  import Control.Concurrent (forkIO, threadDelay)@@ -5,7 +10,7 @@ import Data.CBMVar import Data.ReactiveValue -pollingReactive :: IO a +pollingReactive :: IO a                 -> Maybe Int                 -> IO (ReactiveFieldRead IO a) pollingReactive sensor delay = do@@ -15,7 +20,7 @@   forkIO $ forever $ do v <- sensor                         writeCBMVar mvar v                         maybe (return ()) (void . threadDelay) delay-              +   -- RV fields   let getter   = readCBMVar mvar       notifier = installCallbackCBMVar mvar
+ tests/HLintMain.hs view
@@ -0,0 +1,23 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Main (hlint)+-- Copyright   :  (C) 2013 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  provisional+-- Portability :  portable+--+-- This module runs HLint on the lens source tree.+-----------------------------------------------------------------------------+module Main where++import Control.Monad+import Language.Haskell.HLint+import System.Environment+import System.Exit++main :: IO ()+main = do+    args <- getArgs+    hints <- hlint $ ["src", "--cross", "--hint=tests/HLint.hs" ] ++ args+    unless (null hints) exitFailure
+ tests/HaddockCoverage.hs view
@@ -0,0 +1,91 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Main (HaddockCoverage)+-- Copyright   :  (C) 2015 Ivan Perez+-- License     :  BSD-style (see the file LICENSE)+-- Maintainer  :  Ivan Perez <ivan.perez@keera.co.uk>+-- Stability   :  provisional+-- Portability :  portable+--+-- Copyright notice: This file borrows code+-- https://hackage.haskell.org/package/lens-4.7/src/tests/doctests.hsc+-- which is itself licensed BSD-style as well.+--+-- Run haddock on a source tree and report if anything in any+-- module is not documented.+-----------------------------------------------------------------------------+module Main where++import Control.Applicative+import Control.Monad+import Data.List+import System.Directory+import System.Exit+import System.FilePath+import System.IO+import System.Process+import Text.Regex.Posix++main :: IO ()+main = do+  -- Find haskell modules+  -- TODO: Ideally cabal should do this (provide us with the+  -- list of modules). An alternative would be to use cabal haddock+  -- but that would need a --no-html argument or something like that.+  -- Alternatively, we could use cabal haddock with additional arguments.+  --+  -- See:+  -- https://github.com/keera-studios/haddock/commit/d5d752943c4e5c6c9ffcdde4dc136fcee967c495+  -- https://github.com/haskell/haddock/issues/309#issuecomment-150811929+  files <- getSources++  let haddockArgs = [ "--no-warnings", "--ignore-all-exports" ] ++ files+  let cabalArgs   = [ "exec", "--", "haddock" ] ++ haddockArgs+  (code, out, _err) <- readProcessWithExitCode "cabal" cabalArgs ""++  -- Filter out coverage lines, and find those that denote undocumented+  -- modules.+  --+  -- TODO: is there a way to annotate a function as self-documenting,+  -- in the same way we do with ANN for hlint?+  let isIncompleteModule :: String -> Bool+      isIncompleteModule line = isCoverageLine line && not (line =~ "^ *100%")+        where isCoverageLine :: String -> Bool+              isCoverageLine line = line =~ "^ *[0-9]+%"++  let incompleteModules :: [String]+      incompleteModules = filter isIncompleteModule $ lines out++  -- Based on the result of haddock, report errors and exit.+  -- Note that, unline haddock, this script does not+  -- output anything to stdout. It uses stderr instead+  -- (as it should).+  case (code, incompleteModules) of+    (ExitSuccess  , []) -> return ()+    -- (ExitFailure _, _)  -> exitFailure+    (_            , _)  -> do+      hPutStrLn stderr "The following modules are not fully documented:"+      mapM_ (hPutStrLn stderr) incompleteModules+      exitFailure++getSources :: IO [FilePath]+getSources = filter isHaskellFile <$> go "src"+  where+    go dir = do+      (dirs, files) <- getFilesAndDirectories dir+      (files ++) . concat <$> mapM go dirs++    isHaskellFile fp = (isSuffixOf ".hs" fp || isSuffixOf ".lhs" fp)+                     && not (any (`isSuffixOf` fp) excludedFiles)++    excludedFiles = [ ]++getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])+getFilesAndDirectories dir = do+  c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir+  (,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c++-- find-based implementation (not portable)+--+-- getSources :: IO [FilePath]+-- getSources = fmap lines $ readProcess "find" ["src/", "-iname", "*hs"] ""