summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Postfix.hs
AgeCommit message (Collapse)Author
2016-03-28type safe targets for propertiesJoey Hess
* Property types have been improved to indicate what systems they target. This prevents using eg, Property FreeBSD on a Debian system. Transition guide for this sweeping API change: - Change "host name & foo & bar" to "host name $ props & foo & bar" - Similarly, `propertyList` and `combineProperties` need `props` to be used to combine together properties; they no longer accept lists of properties. (If you have such a list, use `toProps`.) - And similarly, Chroot, Docker, and Systemd container need `props` to be used to combine together the properies used inside them. - The `os` property is removed. Instead use `osDebian`, `osBuntish`, or `osFreeBSD`. These tell the type checker the target OS of a host. - Change "Property NoInfo" to "Property UnixLike" - Change "Property HasInfo" to "Property (HasInfo + UnixLike)" - Change "RevertableProperty NoInfo" to "RevertableProperty UnixLike UnixLike" - Change "RevertableProperty HasInfo" to "RevertableProperty (HasInfo + UnixLike) UnixLike" - GHC needs {-# LANGUAGE TypeOperators #-} to use these fancy types. This is enabled by default for all modules in propellor.cabal. But if you are using propellor as a library, you may need to enable it manually. - If you know a property only works on a particular OS, like Debian or FreeBSD, use that instead of "UnixLike". For example: "Property Debian" - It's also possible make a property support a set of OS's, for example: "Property (Debian + FreeBSD)" - Removed `infoProperty` and `simpleProperty` constructors, instead use `property` to construct a Property. - Due to the polymorphic type returned by `property`, additional type signatures tend to be needed when using it. For example, this will fail to type check, because the type checker cannot guess what type you intend the intermediate property "go" to have: foo :: Property UnixLike foo = go `requires` bar where go = property "foo" (return NoChange) To fix, specify the type of go: go :: Property UnixLike - `ensureProperty` now needs to be passed a witness to the type of the property it's used in. change this: foo = property desc $ ... ensureProperty bar to this: foo = property' desc $ \w -> ... ensureProperty w bar - General purpose properties like cmdProperty have type "Property UnixLike". When using that to run a command only available on Debian, you can tighten the type to only the OS that your more specific property works on. For example: upgraded :: Property Debian upgraded = tightenTargets (cmdProperty "apt-get" ["upgrade"]) - Several utility functions have been renamed: getInfo to fromInfo propertyInfo to getInfo propertyDesc to getDesc propertyChildren to getChildren * The new `pickOS` property combinator can be used to combine different properties, supporting different OS's, into one Property that chooses which to use based on the Host's OS. * Re-enabled -O0 in propellor.cabal to reign in ghc's memory use handling these complex new types. * Added dependency on concurrent-output; removed embedded copy.
2015-12-31actually parse service linesJoey Hess
So whitespace etc changes don't matter
2015-12-31inet services cannot be private; adjust typeJoey Hess
2015-12-31propellor spinJoey Hess
2015-12-31Postfix: Add service property to enable/disable services in master.cf.Joey Hess
2015-12-06allow using `check` on a UncheckedProperty, which yields a PropertyJoey Hess
2015-12-06add isNewerThan and use it to avoid unnecessary running of newaliasesJoey Hess
2015-12-06setting the same sasl password updates the mtime of the file, but the ↵Joey Hess
contents remain the same Don't much like using Data.Hash.MD5, but it's available in dependencies and pulling in a real hash library would be overkill. And md5 is a perfectly ok hash to use here.
2015-12-06check for changes to sasldb2Joey Hess
2015-12-05remove trivialJoey Hess
2015-12-05UncheckedProperty for cmdProperty et alJoey Hess
* Properties that run an arbitrary command, such as cmdProperty and scriptProperty are converted to use UncheckedProperty, since they cannot tell on their own if the command truely made a change or not. (API Change) Transition guide: - When GHC complains about an UncheckedProperty, add: `assume` MadeChange - Since these properties used to always return MadeChange, that change is always safe to make. - Or, if you know that the command should modifiy a file, use: `changesFile` filename * A few properties have had their Result improved, for example Apt.buldDep and Apt.autoRemove now check if a change was made or not.
2015-11-26Added Propellor.Property.Fail2Ban.Joey Hess
2015-11-25make trivial since it updates the password each timeJoey Hess
2015-11-25Added Postfix.saslPasswdSet.Joey Hess
2015-10-10propellor spinJoey Hess
2015-06-29Further docstring improvements.Iustin Pop
2015-06-29Fix a couple of trivial typos in Postfix docstringIustin Pop
2015-05-29Fix Postfix.satellite bug; the default relayhost was set to the domain, not ↵Joey Hess
to smtp.domain as documented.
2015-04-22API change: Added User and Group newtypes, and Properties that used to use ↵Joey Hess
the type UserName = String were changed to use them. Note that UserName is kept and PrivData still uses it in its sum type. This is to avoid breaking PrivData serialization.
2015-03-12seems that setting postfix/destinations to " " makes debconf put in aJoey Hess
default config, not appropriate for a client relay. Set to localhost instead.
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-02-01propellor spinJoey Hess
2015-01-24GADT properties seem to work (untested)Joey Hess
* Property has been converted to a GADT, and will be Property NoInfo or Property HasInfo. This was done to make sure that ensureProperty is only used on properties that do not have Info. Transition guide: - Change all "Property" to "Property NoInfo" or "Property WithInfo" (The compiler can tell you if you got it wrong!) - To construct a RevertableProperty, it is useful to use the new (<!>) operator - Constructing a list of properties can be problimatic, since Property NoInto and Property WithInfo are different types and cannot appear in the same list. To deal with this, "props" has been added, and can built up a list of properties of different types, using the same (&) and (!) operators that are used to build up a host's properties.
2015-01-19avoid haddock warningsJoey Hess
2014-12-09improve haddock formating of filenamesJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-18propellor spinJoey Hess
2014-07-17propellor spinJoey Hess
2014-07-17propellor spinJoey Hess
2014-07-17propellor spinJoey Hess
2014-07-17propellor spinJoey Hess
2014-07-17propellor spinJoey Hess
2014-05-31simplified record accessorsJoey Hess
2014-05-14moved source code to srcJoey Hess
This is to work around OSX's brain-damange regarding filename case insensitivity. Avoided moving config.hs, because it's a config file. Put in a symlink to make build work.