comment
This commit is contained in:
parent
716ce552b1
commit
5492c4f12c
|
@ -0,0 +1,49 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 1"""
|
||||||
|
date="2015-05-27T15:24:07Z"
|
||||||
|
content="""
|
||||||
|
The Utility.* modules are shared amoung several of my projects (git-annex,
|
||||||
|
propeller, github-backup, ..), but I'm not really happy enough with them to
|
||||||
|
make them a proper haskell library.
|
||||||
|
|
||||||
|
For one thing, there's no unifying principle; it's just whatever bits of
|
||||||
|
code I happened to write that were refactorable out of the main program. I
|
||||||
|
don't want to end up with another MissingH like tarball library here.
|
||||||
|
|
||||||
|
And for another thing, I don't think I want to commit to api stability, or
|
||||||
|
even api versioning for all of that stuff.
|
||||||
|
|
||||||
|
Some parts of it, I'm somewhat happier with, and hope to eventually break
|
||||||
|
out into proper haskell libraries. For example, Utility.Scheduled is pretty
|
||||||
|
good (and mostly re-exported from Propellor.Property.Scheduled anyway).
|
||||||
|
|
||||||
|
OTOH, Utility.Process .. not happy with that at all from a design POV.
|
||||||
|
I'd recommend you just use System.Process, or
|
||||||
|
[Data.Streaming.Process](http://hackage.haskell.org/package/streaming-commons-0.1.12/docs/Data-Streaming-Process.html).
|
||||||
|
Although there is the problem that `PROPELLOR_DEBUG` relies on
|
||||||
|
Utility.Process adding calls to debugging functions, so you'd need to do that
|
||||||
|
by hand.
|
||||||
|
|
||||||
|
Maybe what makes sense is for some part of propellor to re-export qualified
|
||||||
|
subsets of `Utility.*`, on a case-by-case basis as users find need for them.
|
||||||
|
I counted the Utility imports inside Propellor.Property, they are:
|
||||||
|
|
||||||
|
17 import Utility.SafeCommand
|
||||||
|
8 import Utility.FileMode
|
||||||
|
2 import Utility.Path
|
||||||
|
2 import Utility.Env
|
||||||
|
2 import Utility.DataUnits
|
||||||
|
1 import Utility.ThreadScheduler
|
||||||
|
1 import Utility.Scheduled
|
||||||
|
1 import Utility.FileSystemEncoding
|
||||||
|
1 import Utility.Applicative
|
||||||
|
|
||||||
|
So, I'm inclined to have Propellor.Property.Cmd re-export Utility.SafeCommand,
|
||||||
|
and leave it at that for now. It makes sense that propellor export a primitive
|
||||||
|
that runs a command to a Bool, does any requested debug output, for use by the
|
||||||
|
many Properties that involve running commands.
|
||||||
|
|
||||||
|
(If you want to break out some part of Utility into a separate library
|
||||||
|
and maintain it, I'd be ok with that too.)
|
||||||
|
"""]]
|
Loading…
Reference in New Issue