|
| 1 | +{-# LANGUAGE CPP #-} |
| 2 | + |
1 | 3 | -- | Parse the shell environment for configuration
|
2 | 4 | --
|
3 | 5 | -- A minor extension of [envparse](https://hackage.haskell.org/package/envparse).
|
@@ -38,15 +40,21 @@ module Freckle.App.Env
|
38 | 40 | import Prelude
|
39 | 41 |
|
40 | 42 | import Control.Error.Util (note)
|
41 |
| -import Data.Bifunctor (first, second) |
42 | 43 | import Data.Char (isDigit)
|
43 | 44 | import Data.Text (Text)
|
44 | 45 | import Data.Text qualified as T
|
45 | 46 | import Data.Time (UTCTime, defaultTimeLocale, parseTimeM)
|
46 |
| -import Env hiding (flag) |
47 | 47 | import Env qualified
|
48 | 48 | import Prelude qualified as Unsafe (read)
|
49 | 49 |
|
| 50 | +#if MIN_VERSION_envparse(0,5,2) |
| 51 | +import Data.Bifunctor (second) |
| 52 | +import Env hiding (eitherReader, flag) |
| 53 | +#else |
| 54 | +import Data.Bifunctor (first, second) |
| 55 | +import Env hiding (flag) |
| 56 | +#endif |
| 57 | + |
50 | 58 | -- | Designates the value of a parameter when a flag is not provided.
|
51 | 59 | newtype Off a = Off a
|
52 | 60 |
|
@@ -83,9 +91,13 @@ flag (Off f) (On t) n m = Env.flag f t n m
|
83 | 91 | --
|
84 | 92 | -- This is a building-block for other 'Reader's
|
85 | 93 | eitherReader :: (String -> Either String a) -> Env.Reader Error a
|
| 94 | +#if MIN_VERSION_envparse(0,5,2) |
| 95 | +eitherReader = Env.eitherReader |
| 96 | +#else |
86 | 97 | eitherReader f s = first (unread . suffix) $ f s
|
87 | 98 | where
|
88 | 99 | suffix x = x <> ": " <> show s
|
| 100 | +#endif |
89 | 101 |
|
90 | 102 | -- | Read a time value using the given format
|
91 | 103 | --
|
|
0 commit comments