       #=> "Mixfile is: MyApp.MixProject"
 
   """
-  @spec in_project(atom, Path.t, keyword, (module -> result)) :: result when result: term
+  @spec in_project(atom, Path.t(), keyword, (module -> result)) :: result when result: term
   def in_project(app, path, post_config \\ [], fun)
 
   def in_project(app, ".", post_config, fun) do
-    cached = try do
-      load_project(app, post_config)
-    rescue
-      any ->
-        Mix.shell.error "Error while loading project #{inspect app} at #{File.cwd!}"
-        reraise any, System.stacktrace
-    end
+    cached =
+      try do
+        load_project(app, post_config)
+      rescue
+        any ->
+          Mix.shell().error("Error while loading project #{inspect(app)} at #{File.cwd!()}")
+          reraise any, System.stacktrace()
+      end
 
     try do
       fun.(cached)
     after
-      Mix.Project.pop
+      Mix.Project.pop()
     end
   end
 
   def in_project(app, path, post_config, fun) do
-    File.cd! path, fn ->
+    File.cd!(path, fn ->
       in_project(app, ".", post_config, fun)
-    end
+    end)
   end
 
   @doc """


  defp path_with_mix_exs_otherwise_warn(app, apps_path) do
    path = Path.join(apps_path, Atom.to_string(app))
    cond do
      File.regular?(Path.join(path, "mix.exs")) ->
        path

      File.dir?(path) ->
        Mix.shell.error "warning: path #{inspect Path.relative_to_cwd(path)} is a directory but " <>
                        "it has no mix.exs. Mix won't consider this directory as part of your " <>
                        "umbrella application. Please add a \"mix.exs\" or set the \":apps\" key " <>
                        "in your umbrella configuration with all relevant apps names as atoms"
        nil

      true ->

      #=> "/path/to/project/_build/dev/lib/app/ebin"

  """
  @spec compile_path(keyword) :: Path.t()
  def compile_path(config \\ config()) do
    Path.join(app_path(config), "ebin")
  end
