#!/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=$(printf '%s\n' "$file_version" "$tool_version" | sort -V | tail -n1) if [[ "$higher_version" != "$tool_version" ]]; then printf 'Latest used bindgen version was %s\n' "$file_version" >&2 printf 'Currently installed bindgen CLI version is %s\n\n' "$tool_version" >&2 # shellcheck disable=SC2016 printf 'You must upgrade bindgen CLI first with `cargo install bindgen-cli`\n' >&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"