From e5698138bb32df673ee832ebf2eab53250ae8446 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 21 Feb 2025 14:25:36 -0300 Subject: [PATCH 1/5] pre-push hook to validate version --- .github/hooks/pre-push | 7 +++++++ lib/split/rpc/message.ex | 4 ++-- scripts/validate_version.exs | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 .github/hooks/pre-push create mode 100644 scripts/validate_version.exs diff --git a/.github/hooks/pre-push b/.github/hooks/pre-push new file mode 100644 index 0000000..dcdf139 --- /dev/null +++ b/.github/hooks/pre-push @@ -0,0 +1,7 @@ +#!/bin/sh + +# Run version validation script +elixir scripts/validate_version.exs +if [ $? -ne 0 ]; then + exit 1 +fi diff --git a/lib/split/rpc/message.ex b/lib/split/rpc/message.ex index 3a74147..69486c4 100644 --- a/lib/split/rpc/message.ex +++ b/lib/split/rpc/message.ex @@ -5,7 +5,7 @@ defmodule Split.RPC.Message do use Split.RPC.Opcodes @protocol_version 0x01 - @client_id "Splitd_Elixir-" <> to_string(Application.spec(:split, :vsn)) + @client_id "Splitd_Elixir-0.2.0" @type opcode :: unquote(Enum.reduce(@opcodes, &{:|, [], [&1, &2]})) @type protocol_version :: unquote(@protocol_version) @@ -37,7 +37,7 @@ defmodule Split.RPC.Message do ## Examples iex> Message.register() - %Message{v: 1, o: 0, a: ["123", "Splitd_Elixir-", 1]} + %Message{v: 1, o: 0, a: ["123", "Splitd_Elixir-0.2.0", 1]} """ @spec register() :: t() def register, do: %__MODULE__{o: @register_opcode, a: ["123", @client_id, 1]} diff --git a/scripts/validate_version.exs b/scripts/validate_version.exs new file mode 100644 index 0000000..56bb7b6 --- /dev/null +++ b/scripts/validate_version.exs @@ -0,0 +1,22 @@ +#!/usr/bin/env elixir + +# Read mix.exs version +{:ok, mix_content} = File.read("mix.exs") +version = Regex.run(~r/version: "([^"]+)"/, mix_content) +|> Enum.at(1) + +# Read message.ex client_id +{:ok, message_content} = File.read("lib/split/rpc/message.ex") +client_id_version = Regex.run(~r/@client_id "Splitd_Elixir-([^"]+)"/, message_content) +|> Enum.at(1) + +if version != client_id_version do + IO.puts :stderr, """ + Error: Version mismatch! + mix.exs version: #{version} + message.ex @client_id version: #{client_id_version} + + Please update the @client_id in lib/split/rpc/message.ex to match the version in mix.exs + """ + System.halt(1) +end From c1b180fb60c1fa5ffa297191ca28efca8e259035 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 21 Feb 2025 14:26:43 -0300 Subject: [PATCH 2/5] make the hook executable --- .github/hooks/pre-push | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/hooks/pre-push diff --git a/.github/hooks/pre-push b/.github/hooks/pre-push old mode 100644 new mode 100755 From c864f59227fbf7de7a3cea27ac050e461d5f57d7 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 21 Feb 2025 14:32:56 -0300 Subject: [PATCH 3/5] rc --- lib/split/rpc/message.ex | 4 ++-- mix.exs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/split/rpc/message.ex b/lib/split/rpc/message.ex index 69486c4..4dbd5cc 100644 --- a/lib/split/rpc/message.ex +++ b/lib/split/rpc/message.ex @@ -5,7 +5,7 @@ defmodule Split.RPC.Message do use Split.RPC.Opcodes @protocol_version 0x01 - @client_id "Splitd_Elixir-0.2.0" + @client_id "Splitd_Elixir-0.2.1-rc.0" @type opcode :: unquote(Enum.reduce(@opcodes, &{:|, [], [&1, &2]})) @type protocol_version :: unquote(@protocol_version) @@ -37,7 +37,7 @@ defmodule Split.RPC.Message do ## Examples iex> Message.register() - %Message{v: 1, o: 0, a: ["123", "Splitd_Elixir-0.2.0", 1]} + %Message{v: 1, o: 0, a: ["123", "Splitd_Elixir-0.2.1-rc.0", 1]} """ @spec register() :: t() def register, do: %__MODULE__{o: @register_opcode, a: ["123", @client_id, 1]} diff --git a/mix.exs b/mix.exs index 2caeccf..409c057 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule SplitThinElixir.MixProject do def project do [ app: :split, - version: "0.2.0", + version: "0.2.1-rc.0", elixir: "~> 1.14", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, From f04c36cea397f00fe9614e534563613afe2cda7b Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 21 Feb 2025 14:37:40 -0300 Subject: [PATCH 4/5] Update changelog entry --- CHANGES.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index fb909ee..c4a33fd 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,6 @@ +0.2.1 (February 24, 2025): + - Fixed the SDK language version to correctly reflect the package version when it's installed from hex.pm. + 0.2.0 (February 14, 2025): - Added new variations of the get treatment functions to support evaluating flags in given flag set/s: `Split.get_treatments_by_flag_set/3`, `Split.get_treatments_by_flag_sets/3`, `Split.get_treatments_with_config_by_flag_set/3`, and `Split.get_treatments_with_config_by_flag_sets/3`. - Updated the `:socket_path` option for `Split.Supervisor.start_link/1` to be optional, defaulting to `"/var/run/splitd.sock"`. From 9522499ab58641cfb88673bf55f589070d93ddcb Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 21 Feb 2025 15:29:05 -0300 Subject: [PATCH 5/5] Polishing --- .github/hooks/pre-push | 2 +- scripts/validate_version.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/hooks/pre-push b/.github/hooks/pre-push index dcdf139..661e72b 100755 --- a/.github/hooks/pre-push +++ b/.github/hooks/pre-push @@ -1,7 +1,7 @@ #!/bin/sh -# Run version validation script elixir scripts/validate_version.exs + if [ $? -ne 0 ]; then exit 1 fi diff --git a/scripts/validate_version.exs b/scripts/validate_version.exs index 56bb7b6..fe9cfe0 100644 --- a/scripts/validate_version.exs +++ b/scripts/validate_version.exs @@ -5,7 +5,7 @@ version = Regex.run(~r/version: "([^"]+)"/, mix_content) |> Enum.at(1) -# Read message.ex client_id +# Read message.ex @client_id {:ok, message_content} = File.read("lib/split/rpc/message.ex") client_id_version = Regex.run(~r/@client_id "Splitd_Elixir-([^"]+)"/, message_content) |> Enum.at(1)