Can you explain what you mean, or how would you use it?
E.g do you mean having the cabal commands as functions, into which you can pass a directory structure (with file contents included) as data types?
Pretty much yes.
Since I believe the code is well written, my feeling is it might not be a huge amount of work though I haven't had time to look into the details.
The hardest part might be working out the name of the library unless cabal-install becomes a BinLib package. ;o)
I think there are quite a few packages that make use of cabal-install and so yes better and safer to have a library then having always to call out to a subprocess...