summaryrefslogtreecommitdiff
path: root/src/Propellor/Types
AgeCommit message (Collapse)Author
2016-03-27refactorJoey Hess
2016-03-26ported propagateContainerJoey Hess
Renamed several utility functions along the way.
2016-03-25cleanup warningsJoey Hess
2016-03-25continued portingJoey Hess
2016-03-25ported Property.AptJoey Hess
2016-03-25fix CheckCombinableJoey Hess
Was wrong when there was a non-target in the MetaTypes list. Also, rework to improve type checker errors.
2016-03-25use MetaTypes moreJoey Hess
2016-03-25add type alias for Sing to be less confusing for usersJoey Hess
2016-03-24fix combineWith to only accept properties that have common targetsJoey Hess
2016-03-24fix bug in NonTargets implJoey Hess
2016-03-24convert ensurePropertyJoey Hess
Moved to its own module to keep everything related in one place.
2016-03-24IncludesInfoJoey Hess
2016-03-24refactorJoey Hess
2016-03-241st stage integrating MetaTypesJoey Hess
2016-03-24renameJoey Hess
2016-03-24temporarily remove UsedPortJoey Hess
This can come back later as a full Resource data type. For now, I want to focus on merging what I have working.
2016-03-24fix exportJoey Hess
2016-03-20flip to modern versionJoey Hess
2016-03-20rename for consistency with singletons libraryJoey Hess
2016-03-20really bad implementation of type level OS detectionJoey Hess
2016-03-20use + rather than :+: type operatorJoey Hess
This seems to not overlap with the + function and is nicer to read and write
2016-03-20rename moduleJoey Hess
2016-03-20renameJoey Hess
2016-03-20fix tick warningJoey Hess
2016-03-20cleanupJoey Hess
2016-03-20finished conversion to singletonsJoey Hess
2016-03-20fix tightenTargetsJoey Hess
2016-03-19wipJoey Hess
2016-03-19wipJoey Hess
2016-03-19typoJoey Hess
2016-03-19haddockJoey Hess
2016-03-19fix type errorJoey Hess
2016-03-18wipJoey Hess
2016-03-18wipJoey Hess
Converted to singletons. Type level functions not updated yet.
2016-03-17wipJoey Hess
2016-03-17commentsJoey Hess
2016-03-17add OuterTargetJoey Hess
Separate data type to guarantee that ensureProperty is passed the actual outer target, and not some other Targeting value from eg, unixLike.
2016-03-17let's not try to get outertarget from monadJoey Hess
To get outertarget from the Propellor monad, the monad would have to be parameteriszed with an outertarget type, since there's no single type. For example: newtype Propellor target p = Propellor { runWithHost :: RWST target () () IO p } deriving (Monad, Applicative, Functor) But then mkProperty becomes a problem, since the Propellor action passed to it needs to already be of UnixLike type: mkProperty :: Propellor UnixLike () -> Property UnixLike mkProperty a = Property unixLike a Could maybe live with that, but then `target` type check fails: Expected type: Propellor (Targeting combinedtarget) () Actual type: Propellor (Targeting oldtarget) () Problem being that it's reusing the `a` which is a Propellor target () target newtarget (Property oldtarget a) = Property (intersectTarget oldtarget newtarget) a And, the new Property has a different target, so it can't use the old `a`. So, I'd need a way to cast one Propellor target () to a different target. Maybe: target newtarget (Property oldtarget (Propellor a)) = let combinedtarget = intersectTarget oldtarget newtarget in Property combinedtarget (Propellor (unsafeCoerce a)) But is that safe?? Even if it is, I can't see how to make ensureProperty get the outertarget type. It returns Propellor (Targeting outertarget) (), which can read the target from the RWST monad, but how to use that where the type of the function is defined? Rather than all that complication, it doesn't seem too bad to require outertarget be passed to ensureProperty.
2016-03-16wipJoey Hess
2016-03-16wipJoey Hess
2016-03-11fix ensureProperty superset checkingJoey Hess
2016-03-09note bugJoey Hess
2016-03-09improveJoey Hess
2016-03-09rename to TargetJoey Hess
2016-03-09added protype of ensureProperty that prevents running properties in the wrong OSJoey Hess
2016-03-08backported to ghc 7.6.3Joey Hess
Works on debian stable!
2016-03-08simplifyJoey Hess
2016-03-08make it a type error to intersect two OS lists if the result is emptyJoey Hess
2016-03-08fixed it!Joey Hess
2016-03-08simplfyJoey Hess