configifier 0.0.5 → 0.0.6
raw patch · 3 files changed
+38/−4 lines, 3 filesdep +template-haskellPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: template-haskell
API changes (from Hackage documentation)
- Data.Configifier: freezeIncompleteAtPath :: Error -> [String]
- Data.Configifier: fromTagged :: Tagged cfg -> ToConfig cfg Id
- Data.Configifier: fromTaggedM :: TaggedM cfg -> ToConfig cfg Maybe
- Data.Configifier: instance [overlap ok] (CanonicalizePartial cfg, CanonicalizePartial cfg') => CanonicalizePartial ('Record cfg cfg')
- Data.Configifier: instance [overlap ok] (Eq a, Eq b) => Eq (a :*> b)
- Data.Configifier: instance [overlap ok] (Freeze a, Freeze b) => Freeze ('Record a b)
- Data.Configifier: instance [overlap ok] (FromJSON (TaggedM cfg), KnownSymbol s) => FromJSON (TaggedM ('Label s cfg))
- Data.Configifier: instance [overlap ok] (FromJSON (TaggedM cfg1), FromJSON (TaggedM cfg2)) => FromJSON (TaggedM ('Record cfg1 cfg2))
- Data.Configifier: instance [overlap ok] (HasParseShellEnv a, HasParseShellEnv b) => HasParseShellEnv ('Record a b)
- Data.Configifier: instance [overlap ok] (HasToDoc a, HasToDoc b) => HasToDoc ('Record a b)
- Data.Configifier: instance [overlap ok] (HasToDoc a, KnownSymbol path, KnownSymbol descr) => HasToDoc ('Descr ('Label path a) descr)
- Data.Configifier: instance [overlap ok] (KnownSymbol path, HasParseShellEnv a) => HasParseShellEnv ('Label path a)
- Data.Configifier: instance [overlap ok] (KnownSymbol path, HasToDoc a) => HasToDoc ('Label path a)
- Data.Configifier: instance [overlap ok] (KnownSymbol s, Freeze t) => Freeze ('Label s t)
- Data.Configifier: instance [overlap ok] (Monoid (TaggedM a), Monoid (TaggedM b)) => Monoid (TaggedM ('Record a b))
- Data.Configifier: instance [overlap ok] (Ord a, Ord b) => Ord (a :*> b)
- Data.Configifier: instance [overlap ok] (Show a, Show b) => Show (a :*> b)
- Data.Configifier: instance [overlap ok] (ToConfig ('Descr a s) Maybe ~ ToConfig a Maybe, ToConfig a Maybe ~ Maybe a', Monoid (TaggedM a)) => Monoid (TaggedM ('Descr a s))
- Data.Configifier: instance [overlap ok] (ToConfig ('Descr cfg s) Maybe ~ ToConfig cfg Maybe, FromJSON (TaggedM cfg)) => FromJSON (TaggedM ('Descr cfg s))
- Data.Configifier: instance [overlap ok] (ToConfig ('Descr cfg s) Maybe ~ ToConfig cfg Maybe, HasParseShellEnv cfg) => HasParseShellEnv ('Descr cfg s)
- Data.Configifier: instance [overlap ok] (ToConfig ('Descr cfg s) Maybe ~ ToConfig cfg Maybe, ToJSON (TaggedM cfg)) => ToJSON (TaggedM ('Descr cfg s))
- Data.Configifier: instance [overlap ok] (ToConfig ('Descr t s) Maybe ~ ToConfig t Maybe, ToConfig ('Descr t s) Id ~ ToConfig t Id, Freeze t) => Freeze ('Descr t s)
- Data.Configifier: instance [overlap ok] (ToConfig ('Option c) Maybe ~ MaybeO tm, ToConfig ('Option c) Id ~ MaybeO ti, tm ~ ToConfig c Maybe, ti ~ ToConfig c Id, Freeze c) => Freeze ('Option c)
- Data.Configifier: instance [overlap ok] (ToJSON (TaggedM cfg), KnownSymbol s) => ToJSON (TaggedM ('Label s cfg))
- Data.Configifier: instance [overlap ok] (Typeable a, FromJSON (TaggedM ('Type a))) => HasParseShellEnv ('Type a)
- Data.Configifier: instance [overlap ok] (cfg ~ 'Descr cfg' s, CanonicalizePartial cfg') => CanonicalizePartial ('Descr cfg' s)
- Data.Configifier: instance [overlap ok] (cfg ~ 'Descr cfg' s, Sel cfg' ps, ToConfig ('Descr cfg' s) Id ~ ToConfig cfg' Id) => Sel ('Descr cfg' s) ps
- Data.Configifier: instance [overlap ok] (cfg ~ 'Label p cfg', Sel cfg' ps, KnownSymbol p) => Sel ('Label p cfg') (p : ps)
- Data.Configifier: instance [overlap ok] (cfg ~ 'Label s cfg', CanonicalizePartial cfg') => CanonicalizePartial ('Label s cfg')
- Data.Configifier: instance [overlap ok] (cfg ~ 'List cfg', CanonicalizePartial cfg') => CanonicalizePartial ('List cfg')
- Data.Configifier: instance [overlap ok] (cfg ~ 'Option cfg', CanonicalizePartial cfg') => CanonicalizePartial ('Option cfg')
- Data.Configifier: instance [overlap ok] (cfg ~ 'Option cfg', NothingValue (ToVal cfg' ps), Sel cfg' ps) => Sel ('Option cfg') ps
- Data.Configifier: instance [overlap ok] (cfg ~ 'Record cfg' cfg'', Sel cfg' (p : ps), Sel cfg'' (p : ps)) => Sel ('Record cfg' cfg'') (p : ps)
- Data.Configifier: instance [overlap ok] (t ~ ToConfig cfg Id, ToVal cfg '[] ~ 'Just t) => Sel' cfg '[]
- Data.Configifier: instance [overlap ok] (t ~ ToConfig cfg Maybe, ToConfig ('Option cfg) Maybe ~ MaybeO t'', ToJSON (TaggedM cfg)) => ToJSON (TaggedM ('Option cfg))
- Data.Configifier: instance [overlap ok] (t ~ ToConfig cfg Maybe, ToJSON (TaggedM cfg)) => ToJSON (TaggedM ('List cfg))
- Data.Configifier: instance [overlap ok] (t1 ~ ToConfig cfg1 Maybe, ToJSON (TaggedM cfg1), t2 ~ ToConfig cfg2 Maybe, ToJSON (TaggedM cfg2)) => ToJSON (TaggedM ('Record cfg1 cfg2))
- Data.Configifier: instance [overlap ok] CanonicalizePartial ('Type a)
- Data.Configifier: instance [overlap ok] Eq (ToConfig cfg Id) => Eq (Tagged cfg)
- Data.Configifier: instance [overlap ok] Eq (ToConfig cfg Maybe) => Eq (TaggedM cfg)
- Data.Configifier: instance [overlap ok] Eq Doc
- Data.Configifier: instance [overlap ok] Eq DocOptional
- Data.Configifier: instance [overlap ok] Eq Source
- Data.Configifier: instance [overlap ok] Eq a => Eq (Id a)
- Data.Configifier: instance [overlap ok] Eq a => Eq (MaybeO a)
- Data.Configifier: instance [overlap ok] Exception Error
- Data.Configifier: instance [overlap ok] Freeze ('Type c)
- Data.Configifier: instance [overlap ok] Freeze c => Freeze ('List c)
- Data.Configifier: instance [overlap ok] FromJSON (TaggedM cfg) => FromJSON (TaggedM ('List cfg))
- Data.Configifier: instance [overlap ok] FromJSON (TaggedM cfg) => FromJSON (TaggedM ('Option cfg))
- Data.Configifier: instance [overlap ok] FromJSON a => FromJSON (TaggedM ('Type a))
- Data.Configifier: instance [overlap ok] HasParseShellEnv a => HasParseShellEnv ('List a)
- Data.Configifier: instance [overlap ok] HasParseShellEnv a => HasParseShellEnv ('Option a)
- Data.Configifier: instance [overlap ok] HasParseShellEnv cfg => HasParseCommandLine cfg
- Data.Configifier: instance [overlap ok] HasRenderDoc CommandLine
- Data.Configifier: instance [overlap ok] HasRenderDoc ConfigFile
- Data.Configifier: instance [overlap ok] HasRenderDoc ShellEnv
- Data.Configifier: instance [overlap ok] HasToDoc a => HasToDoc ('List a)
- Data.Configifier: instance [overlap ok] HasToDoc a => HasToDoc ('Option a)
- Data.Configifier: instance [overlap ok] Monoid (TaggedM ('Label s ('Type a)))
- Data.Configifier: instance [overlap ok] Monoid (TaggedM ('List a))
- Data.Configifier: instance [overlap ok] Monoid (TaggedM a) => Monoid (TaggedM ('Label s a))
- Data.Configifier: instance [overlap ok] Monoid (TaggedM a) => Monoid (TaggedM ('Option a))
- Data.Configifier: instance [overlap ok] NothingValue 'Nothing
- Data.Configifier: instance [overlap ok] NothingValue ('Just x)
- Data.Configifier: instance [overlap ok] Ord Doc
- Data.Configifier: instance [overlap ok] Ord DocOptional
- Data.Configifier: instance [overlap ok] Ord Source
- Data.Configifier: instance [overlap ok] Ord a => Ord (Id a)
- Data.Configifier: instance [overlap ok] Ord a => Ord (MaybeO a)
- Data.Configifier: instance [overlap ok] Read Doc
- Data.Configifier: instance [overlap ok] Read DocOptional
- Data.Configifier: instance [overlap ok] Sel ('Record cfg' cfg'') '[]
- Data.Configifier: instance [overlap ok] Sel' cfg ps => Sel cfg ps
- Data.Configifier: instance [overlap ok] Show (ToConfig cfg Id) => Show (Tagged cfg)
- Data.Configifier: instance [overlap ok] Show (ToConfig cfg Maybe) => Show (TaggedM cfg)
- Data.Configifier: instance [overlap ok] Show Doc
- Data.Configifier: instance [overlap ok] Show DocOptional
- Data.Configifier: instance [overlap ok] Show Error
- Data.Configifier: instance [overlap ok] Show Source
- Data.Configifier: instance [overlap ok] Show a => Show (Id a)
- Data.Configifier: instance [overlap ok] Show a => Show (MaybeO a)
- Data.Configifier: instance [overlap ok] ToJSON a => ToJSON (TaggedM ('Type a))
- Data.Configifier: instance [overlap ok] ToVal cfg (p : ps) ~ 'Nothing => Sel' cfg (p : ps)
- Data.Configifier: instance [overlap ok] Typeable (:*>)
- Data.Configifier: instance [overlap ok] Typeable (:>)
- Data.Configifier: instance [overlap ok] Typeable (:>:)
- Data.Configifier: instance [overlap ok] Typeable Doc
- Data.Configifier: instance [overlap ok] Typeable DocOptional
- Data.Configifier: instance [overlap ok] Typeable Error
- Data.Configifier: instance [overlap ok] Typeable Id
- Data.Configifier: instance [overlap ok] Typeable MaybeO
- Data.Configifier: instance [overlap ok] Typeable Source
- Data.Configifier: instance [overlap ok] Typeable a => HasToDoc ('Type a)
- Data.Configifier: invalidYamlFile :: Error -> FilePath
- Data.Configifier: invalidYamlInput :: Error -> SBS
- Data.Configifier: invalidYamlMsg :: Error -> ParseException
- Data.Configifier: shellEnvNoParseMsg :: Error -> String
- Data.Configifier: shellEnvNoParseType :: Error -> String
- Data.Configifier: shellEnvNoParseValue :: Error -> String
+ Data.Configifier: [freezeIncompleteAtPath] :: Error -> [String]
+ Data.Configifier: [fromTaggedM] :: TaggedM cfg -> ToConfig cfg Maybe
+ Data.Configifier: [fromTagged] :: Tagged cfg -> ToConfig cfg Id
+ Data.Configifier: [invalidYamlFile] :: Error -> FilePath
+ Data.Configifier: [invalidYamlInput] :: Error -> SBS
+ Data.Configifier: [invalidYamlMsg] :: Error -> ParseException
+ Data.Configifier: [shellEnvNoParseMsg] :: Error -> String
+ Data.Configifier: [shellEnvNoParseType] :: Error -> String
+ Data.Configifier: [shellEnvNoParseValue] :: Error -> String
+ Data.Configifier: cfgify :: QuasiQuoter
+ Data.Configifier: instance (Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM cfg), GHC.TypeLits.KnownSymbol s) => Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.Label s cfg))
+ Data.Configifier: instance (Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM cfg1), Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM cfg2)) => Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.Record cfg1 cfg2))
+ Data.Configifier: instance (Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM cfg), GHC.TypeLits.KnownSymbol s) => Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM ('Data.Configifier.Label s cfg))
+ Data.Configifier: instance (Data.Configifier.CanonicalizePartial cfg, Data.Configifier.CanonicalizePartial cfg') => Data.Configifier.CanonicalizePartial ('Data.Configifier.Record cfg cfg')
+ Data.Configifier: instance (Data.Configifier.Freeze a, Data.Configifier.Freeze b) => Data.Configifier.Freeze ('Data.Configifier.Record a b)
+ Data.Configifier: instance (Data.Configifier.HasParseShellEnv a, Data.Configifier.HasParseShellEnv b) => Data.Configifier.HasParseShellEnv ('Data.Configifier.Record a b)
+ Data.Configifier: instance (Data.Configifier.HasToDoc a, Data.Configifier.HasToDoc b) => Data.Configifier.HasToDoc ('Data.Configifier.Record a b)
+ Data.Configifier: instance (Data.Configifier.HasToDoc a, GHC.TypeLits.KnownSymbol path, GHC.TypeLits.KnownSymbol descr) => Data.Configifier.HasToDoc ('Data.Configifier.Descr ('Data.Configifier.Label path a) descr)
+ Data.Configifier: instance (Data.Configifier.ToConfig ('Data.Configifier.Descr a s) GHC.Base.Maybe ~ Data.Configifier.ToConfig a GHC.Base.Maybe, Data.Configifier.ToConfig a GHC.Base.Maybe ~ GHC.Base.Maybe a', GHC.Base.Monoid (Data.Configifier.TaggedM a)) => GHC.Base.Monoid (Data.Configifier.TaggedM ('Data.Configifier.Descr a s))
+ Data.Configifier: instance (Data.Configifier.ToConfig ('Data.Configifier.Descr cfg s) GHC.Base.Maybe ~ Data.Configifier.ToConfig cfg GHC.Base.Maybe, Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM cfg)) => Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.Descr cfg s))
+ Data.Configifier: instance (Data.Configifier.ToConfig ('Data.Configifier.Descr cfg s) GHC.Base.Maybe ~ Data.Configifier.ToConfig cfg GHC.Base.Maybe, Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM cfg)) => Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM ('Data.Configifier.Descr cfg s))
+ Data.Configifier: instance (Data.Configifier.ToConfig ('Data.Configifier.Descr cfg s) GHC.Base.Maybe ~ Data.Configifier.ToConfig cfg GHC.Base.Maybe, Data.Configifier.HasParseShellEnv cfg) => Data.Configifier.HasParseShellEnv ('Data.Configifier.Descr cfg s)
+ Data.Configifier: instance (Data.Configifier.ToConfig ('Data.Configifier.Descr t s) GHC.Base.Maybe ~ Data.Configifier.ToConfig t GHC.Base.Maybe, Data.Configifier.ToConfig ('Data.Configifier.Descr t s) Data.Configifier.Id ~ Data.Configifier.ToConfig t Data.Configifier.Id, Data.Configifier.Freeze t) => Data.Configifier.Freeze ('Data.Configifier.Descr t s)
+ Data.Configifier: instance (Data.Configifier.ToConfig ('Data.Configifier.Option c) GHC.Base.Maybe ~ Data.Configifier.MaybeO tm, Data.Configifier.ToConfig ('Data.Configifier.Option c) Data.Configifier.Id ~ Data.Configifier.MaybeO ti, tm ~ Data.Configifier.ToConfig c GHC.Base.Maybe, ti ~ Data.Configifier.ToConfig c Data.Configifier.Id, Data.Configifier.Freeze c) => Data.Configifier.Freeze ('Data.Configifier.Option c)
+ Data.Configifier: instance (Data.Configifier.ToVal cfg (p : ps) ~ 'GHC.Base.Nothing) => Data.Configifier.Sel' cfg (p : ps)
+ Data.Configifier: instance (Data.Typeable.Internal.Typeable a, Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.Type a))) => Data.Configifier.HasParseShellEnv ('Data.Configifier.Type a)
+ Data.Configifier: instance (GHC.Base.Monoid (Data.Configifier.TaggedM a), GHC.Base.Monoid (Data.Configifier.TaggedM b)) => GHC.Base.Monoid (Data.Configifier.TaggedM ('Data.Configifier.Record a b))
+ Data.Configifier: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (a Data.Configifier.:*> b)
+ Data.Configifier: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (a Data.Configifier.:*> b)
+ Data.Configifier: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (a Data.Configifier.:*> b)
+ Data.Configifier: instance (GHC.TypeLits.KnownSymbol path, Data.Configifier.HasParseShellEnv a) => Data.Configifier.HasParseShellEnv ('Data.Configifier.Label path a)
+ Data.Configifier: instance (GHC.TypeLits.KnownSymbol path, Data.Configifier.HasToDoc a) => Data.Configifier.HasToDoc ('Data.Configifier.Label path a)
+ Data.Configifier: instance (GHC.TypeLits.KnownSymbol s, Data.Configifier.Freeze t) => Data.Configifier.Freeze ('Data.Configifier.Label s t)
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Descr cfg' s, Data.Configifier.CanonicalizePartial cfg') => Data.Configifier.CanonicalizePartial ('Data.Configifier.Descr cfg' s)
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Descr cfg' s, Data.Configifier.Sel cfg' ps, Data.Configifier.ToConfig ('Data.Configifier.Descr cfg' s) Data.Configifier.Id ~ Data.Configifier.ToConfig cfg' Data.Configifier.Id) => Data.Configifier.Sel ('Data.Configifier.Descr cfg' s) ps
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Label p cfg', Data.Configifier.Sel cfg' ps, GHC.TypeLits.KnownSymbol p) => Data.Configifier.Sel ('Data.Configifier.Label p cfg') (p : ps)
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Label s cfg', Data.Configifier.CanonicalizePartial cfg') => Data.Configifier.CanonicalizePartial ('Data.Configifier.Label s cfg')
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.List cfg', Data.Configifier.CanonicalizePartial cfg') => Data.Configifier.CanonicalizePartial ('Data.Configifier.List cfg')
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Option cfg', Data.Configifier.CanonicalizePartial cfg') => Data.Configifier.CanonicalizePartial ('Data.Configifier.Option cfg')
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Option cfg', Data.Configifier.NothingValue (Data.Configifier.ToVal cfg' ps), Data.Configifier.Sel cfg' ps) => Data.Configifier.Sel ('Data.Configifier.Option cfg') ps
+ Data.Configifier: instance (cfg ~ 'Data.Configifier.Record cfg' cfg'', Data.Configifier.Sel cfg' (p : ps), Data.Configifier.Sel cfg'' (p : ps)) => Data.Configifier.Sel ('Data.Configifier.Record cfg' cfg'') (p : ps)
+ Data.Configifier: instance (t ~ Data.Configifier.ToConfig cfg Data.Configifier.Id, Data.Configifier.ToVal cfg '[] ~ 'GHC.Base.Just t) => Data.Configifier.Sel' cfg '[]
+ Data.Configifier: instance (t ~ Data.Configifier.ToConfig cfg GHC.Base.Maybe, Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM cfg)) => Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM ('Data.Configifier.List cfg))
+ Data.Configifier: instance (t ~ Data.Configifier.ToConfig cfg GHC.Base.Maybe, Data.Configifier.ToConfig ('Data.Configifier.Option cfg) GHC.Base.Maybe ~ Data.Configifier.MaybeO t'', Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM cfg)) => Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM ('Data.Configifier.Option cfg))
+ Data.Configifier: instance (t1 ~ Data.Configifier.ToConfig cfg1 GHC.Base.Maybe, Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM cfg1), t2 ~ Data.Configifier.ToConfig cfg2 GHC.Base.Maybe, Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM cfg2)) => Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM ('Data.Configifier.Record cfg1 cfg2))
+ Data.Configifier: instance Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM cfg) => Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.List cfg))
+ Data.Configifier: instance Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM cfg) => Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.Option cfg))
+ Data.Configifier: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Data.Configifier.TaggedM ('Data.Configifier.Type a))
+ Data.Configifier: instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (Data.Configifier.TaggedM ('Data.Configifier.Type a))
+ Data.Configifier: instance Data.Configifier.CanonicalizePartial ('Data.Configifier.Type a)
+ Data.Configifier: instance Data.Configifier.Freeze ('Data.Configifier.Type c)
+ Data.Configifier: instance Data.Configifier.Freeze c => Data.Configifier.Freeze ('Data.Configifier.List c)
+ Data.Configifier: instance Data.Configifier.HasParseShellEnv a => Data.Configifier.HasParseShellEnv ('Data.Configifier.List a)
+ Data.Configifier: instance Data.Configifier.HasParseShellEnv a => Data.Configifier.HasParseShellEnv ('Data.Configifier.Option a)
+ Data.Configifier: instance Data.Configifier.HasParseShellEnv cfg => Data.Configifier.HasParseCommandLine cfg
+ Data.Configifier: instance Data.Configifier.HasRenderDoc Data.Configifier.CommandLine
+ Data.Configifier: instance Data.Configifier.HasRenderDoc Data.Configifier.ConfigFile
+ Data.Configifier: instance Data.Configifier.HasRenderDoc Data.Configifier.ShellEnv
+ Data.Configifier: instance Data.Configifier.HasToDoc a => Data.Configifier.HasToDoc ('Data.Configifier.List a)
+ Data.Configifier: instance Data.Configifier.HasToDoc a => Data.Configifier.HasToDoc ('Data.Configifier.Option a)
+ Data.Configifier: instance Data.Configifier.NothingValue 'GHC.Base.Nothing
+ Data.Configifier: instance Data.Configifier.NothingValue ('GHC.Base.Just x)
+ Data.Configifier: instance Data.Configifier.Sel ('Data.Configifier.Record cfg' cfg'') '[]
+ Data.Configifier: instance Data.Configifier.Sel' cfg ps => Data.Configifier.Sel cfg ps
+ Data.Configifier: instance Data.Typeable.Internal.Typeable a => Data.Configifier.HasToDoc ('Data.Configifier.Type a)
+ Data.Configifier: instance GHC.Base.Monoid (Data.Configifier.TaggedM ('Data.Configifier.Label s ('Data.Configifier.Type a)))
+ Data.Configifier: instance GHC.Base.Monoid (Data.Configifier.TaggedM ('Data.Configifier.List a))
+ Data.Configifier: instance GHC.Base.Monoid (Data.Configifier.TaggedM a) => GHC.Base.Monoid (Data.Configifier.TaggedM ('Data.Configifier.Label s a))
+ Data.Configifier: instance GHC.Base.Monoid (Data.Configifier.TaggedM a) => GHC.Base.Monoid (Data.Configifier.TaggedM ('Data.Configifier.Option a))
+ Data.Configifier: instance GHC.Classes.Eq (Data.Configifier.ToConfig cfg Data.Configifier.Id) => GHC.Classes.Eq (Data.Configifier.Tagged cfg)
+ Data.Configifier: instance GHC.Classes.Eq (Data.Configifier.ToConfig cfg GHC.Base.Maybe) => GHC.Classes.Eq (Data.Configifier.TaggedM cfg)
+ Data.Configifier: instance GHC.Classes.Eq Data.Configifier.Doc
+ Data.Configifier: instance GHC.Classes.Eq Data.Configifier.DocOptional
+ Data.Configifier: instance GHC.Classes.Eq Data.Configifier.Source
+ Data.Configifier: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Configifier.Id a)
+ Data.Configifier: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Configifier.MaybeO a)
+ Data.Configifier: instance GHC.Classes.Ord Data.Configifier.Doc
+ Data.Configifier: instance GHC.Classes.Ord Data.Configifier.DocOptional
+ Data.Configifier: instance GHC.Classes.Ord Data.Configifier.Source
+ Data.Configifier: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Configifier.Id a)
+ Data.Configifier: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Configifier.MaybeO a)
+ Data.Configifier: instance GHC.Exception.Exception Data.Configifier.Error
+ Data.Configifier: instance GHC.Read.Read Data.Configifier.Doc
+ Data.Configifier: instance GHC.Read.Read Data.Configifier.DocOptional
+ Data.Configifier: instance GHC.Show.Show (Data.Configifier.ToConfig cfg Data.Configifier.Id) => GHC.Show.Show (Data.Configifier.Tagged cfg)
+ Data.Configifier: instance GHC.Show.Show (Data.Configifier.ToConfig cfg GHC.Base.Maybe) => GHC.Show.Show (Data.Configifier.TaggedM cfg)
+ Data.Configifier: instance GHC.Show.Show Data.Configifier.Doc
+ Data.Configifier: instance GHC.Show.Show Data.Configifier.DocOptional
+ Data.Configifier: instance GHC.Show.Show Data.Configifier.Error
+ Data.Configifier: instance GHC.Show.Show Data.Configifier.Source
+ Data.Configifier: instance GHC.Show.Show a => GHC.Show.Show (Data.Configifier.Id a)
+ Data.Configifier: instance GHC.Show.Show a => GHC.Show.Show (Data.Configifier.MaybeO a)
- Data.Configifier: parseConfigFile :: FromJSON (TaggedM cfg) => SBS -> Either Error (TaggedM cfg)
+ Data.Configifier: parseConfigFile :: (FromJSON (TaggedM cfg)) => SBS -> Either Error (TaggedM cfg)
- Data.Configifier: parseConfigFileWithIncludes :: FromJSON (TaggedM cfg) => FilePath -> IO (Either Error (TaggedM cfg))
+ Data.Configifier: parseConfigFileWithIncludes :: (FromJSON (TaggedM cfg)) => FilePath -> IO (Either Error (TaggedM cfg))
- Data.Configifier: primitiveParseCommandLine :: HasParseShellEnv cfg => [String] -> Either Error (TaggedM cfg)
+ Data.Configifier: primitiveParseCommandLine :: (HasParseShellEnv cfg) => [String] -> Either Error (TaggedM cfg)
Files
- configifier.cabal +2/−1
- src/Data/Configifier.hs +17/−0
- tests/Data/ConfigifierSpec.hs +19/−3
configifier.cabal view
@@ -1,5 +1,5 @@ name: configifier-version: 0.0.5+version: 0.0.6 synopsis: parser for config files, shell variables, command line args. description: See <https://github.com/zerobuzz/configifier/blob/master/README.md README> license: AGPL-3@@ -41,6 +41,7 @@ , regex-easy >=0.1.0.0 && <0.2 , safe >=0.3 && <0.4 , string-conversions >=0.3 && <0.5+ , template-haskell >=2.10 && <2.11 , unordered-containers >=0.2 && <0.3 , vector >=0.10 && <0.11 , yaml >=0.8 && <0.9
src/Data/Configifier.hs view
@@ -9,8 +9,10 @@ {-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PolyKinds #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-}@@ -22,6 +24,7 @@ import Control.Applicative ((<$>), (<|>)) import Control.Exception (Exception, throwIO)+import Data.ByteString.Char8 (pack) import Data.CaseInsensitive (mk) import Data.Char (toUpper) import Data.Either.Combinators (mapLeft)@@ -34,7 +37,10 @@ import Data.Yaml.Include (decodeFileEither) import Data.Yaml (ToJSON, FromJSON, Value(Object, Array, Null), object, toJSON, parseJSON, (.=)) import GHC.TypeLits (Symbol, KnownSymbol, symbolVal)+import Language.Haskell.TH.Quote (QuasiQuoter(..))+import Language.Haskell.TH (runQ) import System.Environment (getEnvironment, getArgs, getProgName)+import System.IO.Unsafe (unsafePerformIO) import qualified Data.ByteString as SBS import qualified Data.HashMap.Strict as HashMap@@ -1004,3 +1010,14 @@ "variable, you can also set with a long arg.)" : "" : []+++-- * template haskell++-- | QuasiQuoter for config files.+cfgify :: QuasiQuoter+cfgify = QuasiQuoter { quoteExp = \x -> runQ [| unsafePerformIO $ configify [YamlString $ pack x] |]+ , quotePat = error "cfgify: not application to Pat context"+ , quoteType = error "cfgify: not application to Type context"+ , quoteDec = error "cfgify: not application to Dec context"+ }
tests/Data/ConfigifierSpec.hs view
@@ -1,14 +1,16 @@ {-# LANGUAGE DataKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverlappingInstances #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Rank2Types #-}-{-# LANGUAGE GADTs #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeOperators #-} module Data.ConfigifierSpec where +import Control.Exception import Data.Either import Data.Monoid import Data.Proxy@@ -32,7 +34,9 @@ mergeSpec sourcesSpec readUserConfigFilesSpec+ stringAsCharList + miscSpec :: Spec miscSpec = do describe "misc" $ do@@ -362,3 +366,15 @@ [YamlFile "FILE", CommandLine ["2"]] readUserConfigFiles [CommandLine ["1", "--config=FILE"]] `shouldBe` [CommandLine ["1"], YamlFile "FILE"]+++stringAsCharList :: Spec+stringAsCharList = describe "a field of type String" $ do+ it "somewhat unexpectedly fails when being presented a String" $+ (configify [YamlString "x: wef\ny: ofs"]+ :: IO (Tagged (ToConfigCode ("x" :> ST :*> "y" :> String))))+ `shouldThrow` (\case (SomeException _) -> True)+ it "wants a list of chars!" $ do+ config :: Tagged (ToConfigCode ("x" :> ST :*> "y" :> String))+ <- configify [YamlString "x: wef\ny:\n- o\n- f\n- s"]+ config `shouldBe` (Tagged $ Id "wef" :*> Id "ofs")