This seems so much more complex then needed. I would also question why path is the be all and end all of the conversation. I could just as easily have different git repos for a dependency based on environment.
So why not a dead simple change to the way we can assign dependencies and have fun. For example - if one were to add an ability to declare deps as a map (which could easily be reduced back to the exact same format internally so it's as small a change as possible) - we would be able to do something like this def project do [ deps: Map.merge(deps, deps_env) ] end defp deps do %{ dep_x:, {"~> 2.1"} } end defp deps_env do case Mix.env do :prod -> %{} :test -> %{} :dev -> %{ dep_x: {git: "https:/xxx", tag: "3.0-dev"}, dep_y: {"-> 1.0"} } end end The merge would override dep_x with the local version in dev (or test or prod if you wanted) with the exact same format as you would normally declare it with (assuming the map option). Doesn't that do everything you would want? More importantly it doesn't set any "rules" on anything at all - it just allows for very nicely laid out options. John -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAPhAwGwvR_n1AHxYPUyqMzML6XRoOmypvDWQzRbGCs3PxbV%2BPg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.