com-lihaoyi / mill

Mill is a fast JVM build tool that supports Java and Scala. 2-3x faster than Gradle and 5-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible
https://mill-build.org/
MIT License
2.04k stars 331 forks source link

Make all arg-like APIs take `os.Shellable` instead of `Seq[String]` #3481

Open lihaoyi opened 4 weeks ago

lihaoyi commented 4 weeks ago

They mean the same thing, but os.Shellable is much more ergonomic: you can pass in os.Paths, numbers, Seq[String]s, Seq[os.Shellable]s, Options, PathRefs and it all just works.

Might need to do a bit of digging to figure out what APIs need to be updated, but all the runSubprocess APIs are candidates, mainArgs/jvmArgs, etc. This should let us clean up tons of boilerplate .path.toStrings everywhere

Might need to wait till 0.13.0 when we can break bincompat, but may be able to do it earlier with some careful overloading