#!/bin/bash output_path=lib/binding_rust/bindings.rs header_path='lib/include/tree_sitter/api.h' no_derive_copy=( TSInput TSLanguage TSLogger TSLookaheadIterator TSParser TSTree TSQuery TSQueryCursor TSQueryCapture TSQueryMatch TSQueryPredicateStep ) 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.*' \ --allowlist-function '^ts_.*' \ --allowlist-var "^TREE_SITTER.*" \ --blocklist-type '^__.*' \ --no-prepend-enum-name \ --no-copy "$no_copy" \ $header_path \ -- \ -D TREE_SITTER_FEATURE_WASM \ > $output_path