|author||Joey Hess||2015-05-27 11:54:49 -0400|
|committer||Joey Hess||2015-05-27 11:54:49 -0400|
Diffstat (limited to 'doc/forum/running_propellor_as_a_library/comment_1_a7b8279508cd68e8cfbba238178a7643._comment')
1 files changed, 49 insertions, 0 deletions
diff --git a/doc/forum/running_propellor_as_a_library/comment_1_a7b8279508cd68e8cfbba238178a7643._comment b/doc/forum/running_propellor_as_a_library/comment_1_a7b8279508cd68e8cfbba238178a7643._comment
new file mode 100644
@@ -0,0 +1,49 @@
+ subject="""comment 1"""
+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
+Although there is the problem that `PROPELLOR_DEBUG` relies on
+Utility.Process adding calls to debugging functions, so you'd need to do that
+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.)