packages feed

Monadoro 0.1.2.0 → 0.2.0.0

raw patch · 11 files changed

+194/−18 lines, 11 filesdep +argparserdep +doctestdep +ncurses

Dependencies added: argparser, doctest, ncurses, optparse-applicative

Files

− ChangeLog.md
@@ -1,5 +0,0 @@-# Changelog for Monadoro--1. Switch to literate Haskell in library.--## Unreleased changes
Monadoro.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 653a2abf4fa16463894ecf07ecb4a16eb86a20534df5d73e02b76c8419c18b46+-- hash: 924fd821c4ec1f5d5265fc59902a3058d01b0e57e4c3a131948ce2e4ff3533f1  name:           Monadoro-version:        0.1.2.0+version:        0.2.0.0 synopsis:       A minimalistic CLI Pomodoro timer, based on a library of the same purpose. description:    Please see the README on GitLab at <https://gitlab.com/kocielnik/monadoro#readme> category:       Tools@@ -21,7 +21,7 @@ build-type:     Simple extra-source-files:     README.md-    ChangeLog.md+    changelog  source-repository head   type: git@@ -30,7 +30,11 @@  library   exposed-modules:+      ArgParse+      Clock+      FullScreen       Lib+      MyHelp       Pomodoro       Timer   other-modules:@@ -39,7 +43,11 @@       src   build-depends:       ansi-terminal >=0.8 && <1+    , argparser >=0.3 && <0.4     , base >=4.7 && <5+    , doctest >=0.8+    , ncurses >=0.2+    , optparse-applicative >=0.14     , process >=1.6 && <2     , time >=1.8 && <2   default-language: Haskell2010@@ -54,7 +62,11 @@   build-depends:       Monadoro     , ansi-terminal >=0.8 && <1+    , argparser >=0.3 && <0.4     , base >=4.7 && <5+    , doctest >=0.8+    , ncurses >=0.2+    , optparse-applicative >=0.14     , process >=1.6 && <2     , time >=1.8 && <2   default-language: Haskell2010@@ -70,7 +82,11 @@   build-depends:       Monadoro     , ansi-terminal >=0.8 && <1+    , argparser >=0.3 && <0.4     , base >=4.7 && <5+    , doctest >=0.8+    , ncurses >=0.2+    , optparse-applicative >=0.14     , process >=1.6 && <2     , time >=1.8 && <2   default-language: Haskell2010
README.md view
@@ -3,3 +3,8 @@ A Pomodoro timer to track work time in 4-pomodoro sessions.  To run, execute `monadoro`.++## Goal++The simplest Pomodoro counter, ready to deploy at once on most command-line platformsto enable you to focus on your work in just a few moments, for weeks to come.+
app/Main.hs view
@@ -1,7 +1,7 @@ module Main where -import Pomodoro ( worker )+import ArgParse ( parse_args )  main :: IO ()-main = worker+main = parse_args 
+ changelog view
@@ -0,0 +1,7 @@+monadoro (2.0.0)++	* Add option for a long (4-pomodoro) session.++monadoro (1.0.0)++	* Initial release.
+ src/ArgParse.hs view
@@ -0,0 +1,26 @@+#!/usr/bin/env stack+--stack --install-ghc runghc++module ArgParse (parse_args) where++-- Here we will service arguments passed to the program in the simplest manner+-- possible.++import System.Environment+import System.Exit+import Pomodoro (worker)+import Clock    (countdown)++main = parse_args++parse_args = getArgs >>= parse++parse ["-h"] = usage   >> exit+parse ["-v"] = version >> exit+parse ["--session"] = worker+parse []     = countdown++usage   = putStrLn "Usage: monadoro [-vh] [file ...]"+version = putStrLn "Monadoro 1.1"+exit    = exitWith ExitSuccess+die     = exitWith (ExitFailure 1)
+ src/Clock.lhs view
@@ -0,0 +1,59 @@+#!/usr/bin/env stack+> --stack --install-ghc runghc --package markdown-unlit -- "-pgmL markdown-unlit"++> {-# LANGUAGE OverloadedStrings #-}++This is a simple countdown clock module.++> module Clock (countdown) where++> import Control.Concurrent  (threadDelay)+> import System.Process      (system, rawSystem)+> import System.Console.ANSI (clearLine,+>                             clearFromCursorToScreenEnd,+>                             setCursorColumn,+>                             hideCursor,+>                             showCursor,+>                             saveCursor,+>                             restoreCursor)+> import System.Environment  (getArgs)+> import System.IO           (hFlush,+>                             stdout)+> import Timer               (secToTimestamp)+>  +> -- >>> putStrLn "Hello world!"+> -- Hello world!+> --+> -- >>> putStrLn "Test complete!"+> -- Test complete!+ +> countdown :: IO()+> countdown = do+>     wait_seconds $ 25 * 60 + 1++> wait_seconds :: Int -> IO()+> wait_seconds 0 = do+>     putStrLn ""+> wait_seconds n = do+>     putStr ""+>     setCursorColumn 0+>     putStr $ secToTimestamp $ n - 1+>     hFlush stdout+>     delay 1+>     wait_seconds $ n - 1++> delay :: Int -> IO()+> delay n = del n+> +> del :: Int -> IO()+> del n = do+>     threadDelay $ n * 1000 * 1000+>+> no_del :: Int -> IO()+> no_del n = do+>     return ()+> +> main :: IO()+> main = do+>     countdown+
+ src/FullScreen.lhs view
@@ -0,0 +1,58 @@+> module FullScreen where+>+> import Timer (secToTimestamp)+> import Control.Concurrent (threadDelay)+> import UI.NCurses+> import System.IO (+>                   hFlush,+>                   stdout)+> import System.Console.ANSI (clearLine,+>                             clearFromCursorToScreenEnd,+>                             setCursorColumn,+>                             hideCursor,+>                             showCursor,+>                             saveCursor,+>                             restoreCursor,+>                            )+>+> main :: IO ()+> main = ncurses_clock+>+> wait_seconds :: Int -> IO()+> wait_seconds 0 = do+>     putStr ""+> wait_seconds n = do+>     restoreCursor+>     putStr $ secToTimestamp $ n - 1+>     hFlush stdout+>     delay 1+>     wait_seconds $ n - 1++> delay :: Int -> IO()+> delay n = del n+> +> del :: Int -> IO()+> del n = do+>     threadDelay $ n * 1000 * 1000++> ncurses_clock :: IO ()+> ncurses_clock = runCurses $ do+>     setEcho False+>     w <- defaultWindow+>     updateWindow w $ do+>         moveCursor 1 10+>         drawString "Hello world!"+>         moveCursor 3 10+>         drawString "(press q to quit)"+>         moveCursor 0 0+>     render+>     waitFor w (\ev -> ev == EventCharacter 'q' || ev == EventCharacter 'Q')+> +> waitFor :: Window -> (Event -> Bool) -> Curses ()+> waitFor w p = loop where+>     loop = do+>         ev <- getEvent w Nothing+>         case ev of+>             Nothing -> loop+>             Just ev' -> if p ev' then return () else loop+> 
+ src/MyHelp.hs view
@@ -0,0 +1,4 @@+module MyHelp (show_help) where++show_help :: IO ()+show_help = putStrLn "Welcome to Monadoro - your personal Pomodoro counter!"
src/Pomodoro.lhs view
@@ -1,8 +1,3 @@-#!/usr/bin/env stack-> --stack --install-ghc runghc --package markdown-unlit -- "-pgmL markdown-unlit"--> {-# LANGUAGE OverloadedStrings #-}- This is a command-line Pomodoro counter.  > module Pomodoro (worker) where@@ -25,7 +20,16 @@ >   > data Pomodoro = First | Second | Third | Fourth >     deriving (Eq, Ord, Show, Read, Bounded, Enum)->  ++> -- | Manage Pomodoro sessions+> -- Examples:+> --+> -- >>> putStrLn "Hello world!"+> -- Hello world!+> --+> -- >>> putStrLn "Test complete!"+> -- Test complete!+  > pom m = do >     putStr $ show m ++ " pomodoro" ++ " | " >     saveCursor@@ -42,7 +46,7 @@ > pomodoro Fourth = do >     pom Fourth >     putStrLn "Take a 30-minute rest now. You just completed 4 pomodoros."->     putStrLn "Thank you for tracking your time with Haskomodoro."+>     putStrLn "Thank you for tracking your time with Monadoro." > pomodoro m = do >     pom m >     delay $ 5 * 60
test/Spec.hs view
@@ -1,2 +1,4 @@+import Test.DocTest+ main :: IO ()-main = putStrLn "Test suite not yet implemented"+main = doctest ["-isrc", "src/Pomodoro.lhs", "src/Clock.lhs", "src/Timer.hs"]