 
   defp process_command({:eval, expr}, _config) when is_binary(expr) do
     Code.eval(expr, [])
+    :ok
   end
 
   defp process_command({:app, app}, _config) when is_binary(app) do
     case Application.Behaviour.start(binary_to_atom(app)) do
       { :error, reason } ->
-        IO.puts(:stderr, "Could not start application #{app}: #{inspect reason}")
-        System.halt(1)
+        { :error, "--app : Could not start application #{app}: #{inspect reason}" }
       :ok ->
         :ok
     end
   end
 
   defp process_command({:require, file}, _config) when is_binary(file) do
-    Code.require_file(file)
+    if File.regular?(file) do
+      Code.require_file(file)
+      :ok
+    else
+      { :error, "-r : No file named #{file}" }
+    end
   end
 
   defp process_command({:parallel_require, pattern}, _config) when is_binary(pattern) do

    files = Enum.uniq(files)
    files = Enum.filter files, File.regular?(&1)

    if files == [] do
      IO.puts(:stderr, "-pr : No files matched pattern #{pattern}")
      System.halt(1)
    else
      Kernel.ParallelRequire.files(files)
    end
  end


  defp process_shared(["-r",h|t], config) do
    files = Path.wildcard(h)
    if files == [] do
      process_shared t, config.update_errors ["-r : No files matched pattern #{h}" | &1]
    else
      process_shared t, Enum.reduce(files, config, fn path, config ->
        config.update_commands [{:require,path}|&1]
