FSharp.Management
FSharp.Management copied to clipboard
Support for libral
Description
I came across this libral project the other day and it seems like a decent candidate for a type provider, similar to powershell but for linux systems specifically. I'm not sure how much penetration it has, but it seems like an interesting idea.
In a nutshell, we could either invoke the ralsh executeable to discover things about a (possibly remote) system, or we could use p/invoke bindings to libral locally to do the same, and support an interface like:
let ral = Ral(target= "external hostname", sudo=true)
ral.Providers.User.Resource.User.List()
|> Seq.iter (fun u -> sprintf "%s-%s" u.Name u.Group)
ral.Providers.User.Resource.User.Add(User("chet", "sudoers"))
things like that. This is a good target for a type provider because the set of providers, the kinds of resources, and the operations that can be done on the resources are highly dynamic.