from_quote : Str -> Try(Tool, [BadQuotedBytes(Str)])
Tool
Tool :: # (opaque)
A tool a package source supplies, written <source>#<name>: the source is
one the configuration declares with Packages, and the name is that
source's own for the package. The source is always written: no source is
implied, so a name alone is refused here, where it is written. Whether the
source is declared, and its grammar for the name, are checked during
whole-project validation.
unqualified : Str -> Str
What to write instead of a tool with no source: both ways out, since only the author knows whether the tool is to be installed or is the machine's own.
to_spec : Tool -> Tool