summaryrefslogtreecommitdiffstats
path: root/tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2020-10-18 19:25:11 +0200
committerlassulus <lassulus@lassul.us>2020-10-18 19:25:11 +0200
commit9ac104267009988ae2ae5c254984e256bd9a6957 (patch)
tree594aa3e871a5d465bf62a4604128ea27fd2a0ed2 /tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs
parent258365a1bad616440f08d6b505779a5dfb04f160 (diff)
parentc5222bc188414a753fe8e8260c6dac26f05ac2e9 (diff)
Merge remote-tracking branch 'ni/master'
Diffstat (limited to 'tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs')
-rw-r--r--tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs b/tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs
new file mode 100644
index 0000000..2a3a0e5
--- /dev/null
+++ b/tv/5pkgs/haskell/xmonad-tv/src/THEnv/JSON.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module THEnv.JSON where
+
+import Data.Aeson (eitherDecode,FromJSON)
+import Data.ByteString.Lazy.Char8 (pack)
+import Language.Haskell.TH.Syntax (Exp,Lift(lift),Q)
+import THEnv (getCompileEnv)
+import Control.Monad
+
+getCompileEnvJSON :: (FromJSON a) => String -> Q a
+getCompileEnvJSON name =
+ either error (id :: a -> a) . eitherDecode . pack <$> getCompileEnv name
+
+getCompileEnvJSONExp ::
+ forall proxy a. (FromJSON a, Lift a) => proxy a -> String -> Q Exp
+getCompileEnvJSONExp _ =
+ (lift :: a -> Q Exp) <=< getCompileEnvJSON
[cgit] Unable to lock slot /tmp/cgit/22000000.lock: No such file or directory (2)