From 45aede8bf512fac04406d101f6468e41537e7856 Mon Sep 17 00:00:00 2001 From: Andrew Hlynskyi Date: Thu, 13 Jul 2023 00:36:16 +0300 Subject: [PATCH] script/generate-bindings - protect from using old incompatible bindgen versions --- script/generate-bindings | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/script/generate-bindings b/script/generate-bindings index e68a7e57..da1796ba 100755 --- a/script/generate-bindings +++ b/script/generate-bindings @@ -16,6 +16,18 @@ no_derive_copy=( ) no_copy=$(IFS='|'; echo "${no_derive_copy[*]}") +file_version=$(head -n1 "$output_path" | cut -d' ' -f6) +tool_version=$(bindgen --version | cut -d' ' -f2) +higher_version=$(echo -e "${file_version}\n${tool_version}" | sort -V | tail -n1) + +if [ "$higher_version" != "$tool_version" ]; then + echo "Latest used bindgen version was $file_version" >&2 + echo "Currently installed bindgen CLI version is $tool_version" >&2 + echo >&2 + echo "It's needed to upgrade bindgen CLI first with \`cargo install bindgen-cli\`" >&2 + exit 1 +fi + bindgen \ --no-layout-tests \ --allowlist-type '^TS.*' \ @@ -31,7 +43,7 @@ defines=( TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION ) -for define in ${defines[@]}; do - define_value=$(egrep "#define $define (.*)" $header_path | cut -d' ' -f3) +for define in "${defines[@]}"; do + define_value=$(grep -E "#define $define (.*)" $header_path | cut -d' ' -f3) echo "pub const $define: usize = $define_value;" >> $output_path done