From 77bd9580d476af67bc004ddee9c3a32c021564bb Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 31 Aug 2020 15:01:42 -0400 Subject: [PATCH] Report fwup version to nerves hub Why: * NH needs to know the fwup version to make decisions about delta updates * Resolves Issue #43 This change addresses the need by: * Grab fwup version when creating config * Add fwup version to config params * Add a spec to check that fwup version key is present --- lib/nerves_hub_link/configurator.ex | 9 ++++++++- test/nerves_hub_link/configurator_test.exs | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/nerves_hub_link/configurator.ex b/lib/nerves_hub_link/configurator.ex index 77a5187..b3b103d 100644 --- a/lib/nerves_hub_link/configurator.ex +++ b/lib/nerves_hub_link/configurator.ex @@ -48,7 +48,9 @@ defmodule NervesHubLink.Configurator do |> Keyword.put_new(:verify, :verify_peer) |> Keyword.put_new(:server_name_indication, to_charlist(base.device_api_sni)) - %{base | params: Nerves.Runtime.KV.get_all_active(), socket: socket, ssl: ssl} + params = Map.put(Nerves.Runtime.KV.get_all_active(), "nerves_fw_fwup_version", fwup_version()) + + %{base | params: params, socket: socket, ssl: ssl} end defp do_build(configurator) when is_atom(configurator) do @@ -71,4 +73,9 @@ defmodule NervesHubLink.Configurator do Default end end + + defp fwup_version do + {version_string, 0} = System.cmd("fwup", ["--version"]) + version_string |> String.trim() + end end diff --git a/test/nerves_hub_link/configurator_test.exs b/test/nerves_hub_link/configurator_test.exs index a119c02..33d4075 100644 --- a/test/nerves_hub_link/configurator_test.exs +++ b/test/nerves_hub_link/configurator_test.exs @@ -15,4 +15,9 @@ defmodule NervesHubLink.ConfiguratorTest do config = NervesHubLink.Configurator.build() assert config.socket[:transport_opts][:socket_opts] == ssl end + + test "fwup_version is included in params" do + config = NervesHubLink.Configurator.build() + assert Map.has_key?(config.params, "nerves_fw_fwup_version") + end end