-- | Maintainer: FĂ©lix Sipma module Propellor.Property.Prosody where import Propellor.Base import qualified Propellor.Property.File as File import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Service as Service type ConfigFile = [String] type Conf = String confEnabled :: Conf -> ConfigFile -> RevertableProperty DebianLike DebianLike confEnabled conf cf = enable disable where enable = dir `File.isSymlinkedTo` target `describe` ("prosody conf enabled " ++ conf) `requires` confAvailable conf cf `requires` installed `onChange` reloaded where target = confValRelativePath conf dir = confValPath conf confValRelativePath conf' = File.LinkTarget $ "../conf.avail" conf' <.> "cfg.lua" disable = File.notPresent (confValPath conf) `describe` ("prosody conf disabled " ++ conf) `requires` installed `onChange` reloaded confAvailable :: Conf -> ConfigFile -> Property DebianLike confAvailable conf cf = ("prosody conf available " ++ conf) ==> tightenTargets (confAvailPath conf `File.hasContent` (comment : cf)) where comment = "-- deployed with propellor, do not modify" confAvailPath :: Conf -> FilePath confAvailPath conf = "/etc/prosody/conf.avail" conf <.> "cfg.lua" confValPath :: Conf -> FilePath confValPath conf = "/etc/prosody/conf.d" conf <.> "cfg.lua" installed :: Property DebianLike installed = Apt.installed ["prosody"] restarted :: Property DebianLike restarted = Service.restarted "prosody" reloaded :: Property DebianLike reloaded = Service.reloaded "prosody"