1 {-# LANGUAGE DeriveGeneric #-}
2 {-# LANGUAGE OverloadedStrings #-}
7 import Data.Aeson.Encode.Pretty
8 import qualified Data.ByteString.Lazy as B
9 import qualified Data.Text as T
14 supportLevel :: SupportLevel,
17 deriving (Generic, Show)
19 instance ToJSON File where
20 toEncoding (File path supportLevel help) = pairs ("path" .= path <> "movable" .= supportLevel <> "help" .= help)
22 data Program = Program
26 deriving (Generic, Show)
28 instance ToJSON Program where
29 toEncoding = genericToEncoding defaultOptions
31 save :: Program -> IO ()
33 let path = ("./programs/" ++ (T.unpack (name program)) ++ ".json")
34 B.writeFile path (encodePretty program)
36 data SupportLevel = Unsupported | Alias | EnvVars | Supported
37 deriving (Generic, Show)
39 instance ToJSON SupportLevel where
40 toEncoding Unsupported = toEncoding ( Bool False )
41 toEncoding _ = toEncoding ( Bool True )