From bfbd9cfb2543896c86091174c3a9dc3f7ae2986e Mon Sep 17 00:00:00 2001 From: Magnus Ottenklinger Date: Mon, 25 Oct 2021 09:37:07 +0200 Subject: [PATCH 1/3] Crash if metadata cannot be retrieved --- rustler_mix/lib/rustler/compiler/config.ex | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/rustler_mix/lib/rustler/compiler/config.ex b/rustler_mix/lib/rustler/compiler/config.ex index 69262d8c..d04936aa 100644 --- a/rustler_mix/lib/rustler/compiler/config.ex +++ b/rustler_mix/lib/rustler/compiler/config.ex @@ -77,14 +77,8 @@ defmodule Rustler.Compiler.Config do defp external_resources(crate_path, crate) do crate_str = to_string(crate) - metadata = - case System.cmd("cargo", ~w(metadata --format-version=1), cd: crate_path) do - {metadata, 0} -> - metadata - - {_error, code} -> - System.stop(code) - end + {metadata, 0} = + System.cmd("cargo", ~w(metadata --format-version=1), cd: crate_path) json = Jason.decode!(metadata) From 0976bd80f6c9fdf4fcec4e994db081e69ac7cf98 Mon Sep 17 00:00:00 2001 From: Magnus Ottenklinger Date: Mon, 25 Oct 2021 09:42:18 +0200 Subject: [PATCH 2/3] Raise proper message on error --- rustler_mix/lib/rustler/compiler/config.ex | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rustler_mix/lib/rustler/compiler/config.ex b/rustler_mix/lib/rustler/compiler/config.ex index d04936aa..18465331 100644 --- a/rustler_mix/lib/rustler/compiler/config.ex +++ b/rustler_mix/lib/rustler/compiler/config.ex @@ -77,8 +77,14 @@ defmodule Rustler.Compiler.Config do defp external_resources(crate_path, crate) do crate_str = to_string(crate) - {metadata, 0} = - System.cmd("cargo", ~w(metadata --format-version=1), cd: crate_path) + metadata = + case System.cmd("cargo", ~w(metadata --format-version=1), cd: crate_path) do + {metadata, 0} -> + metadata + + {output, code} -> + raise "calling `cargo metadata` failed. Output:\n" <> output + end json = Jason.decode!(metadata) From c6492f640408f878b50aef86323d7552d4cca20d Mon Sep 17 00:00:00 2001 From: Magnus Ottenklinger Date: Tue, 26 Oct 2021 16:48:27 +0200 Subject: [PATCH 3/3] Drop "Output: " string If no output is produced, `Output:` is misleading as the stack trace will be right after it. --- rustler_mix/lib/rustler/compiler/config.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rustler_mix/lib/rustler/compiler/config.ex b/rustler_mix/lib/rustler/compiler/config.ex index 18465331..f8cfcf19 100644 --- a/rustler_mix/lib/rustler/compiler/config.ex +++ b/rustler_mix/lib/rustler/compiler/config.ex @@ -83,7 +83,7 @@ defmodule Rustler.Compiler.Config do metadata {output, code} -> - raise "calling `cargo metadata` failed. Output:\n" <> output + raise "calling `cargo metadata` failed.\n" <> output end json = Jason.decode!(metadata)