bitwalker / distillery

Simplify deployments in Elixir with OTP releases!
MIT License
2.96k stars 397 forks source link

Validate every app before adding to graph #614

Closed fazibear closed 5 years ago

fazibear commented 5 years ago

There is a case when you want to add an application to release which don't exist. For example umbrella app or an app from debian package.

Right now you'll get a nasty error:

  nil.name()
    (distillery) lib/mix/lib/releases/models/release.ex:532: Mix.Releases.Release.do_add_app/4
    (distillery) lib/mix/lib/releases/models/release.ex:547: Mix.Releases.Release.do_add_children/4
    (distillery) lib/mix/lib/releases/models/release.ex:507: Mix.Releases.Release.add_apps/3
    (distillery) lib/mix/lib/releases/models/release.ex:476: Mix.Releases.Release.apps/1
    (distillery) lib/mix/lib/releases/models/release.ex:330: Mix.Releases.Release.apply_configuration/3
    (distillery) lib/mix/lib/releases/assembler.ex:28: Mix.Releases.Assembler.pre_assemble/1
    (distillery) lib/mix/lib/releases/assembler.ex:46: Mix.Releases.Assembler.assemble/1

This PR fixes this case. Now you'll get:

==> Release failed, during .boot generation:
        Undefined applications: [backend]
bitwalker commented 5 years ago

Thanks!