mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-08 09:37:47 +03:00
27 lines
1.3 KiB
Bash
Executable File
27 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
source=${1:?usage: script/ghostty-bindings /path/to/pinned/ghostty}
|
|
revision=$(cat "$root/ghostty-revision")
|
|
test "$(git -C "$source" rev-parse HEAD)" = "$revision"
|
|
test "$(bindgen --version)" = "bindgen 0.72.1"
|
|
|
|
# Only regeneration needs bindgen/libclang. Normal builds use this checked-in
|
|
# subset of the official C header, not a third-party Ghostty Rust crate.
|
|
bindgen "$source/include/ghostty/vt.h" \
|
|
--allowlist-function 'ghostty_terminal_(new|free|resize|set|vt_write|get|grid_ref|scroll_viewport|point_from_grid_ref|selection_format_buf)' \
|
|
--allowlist-function 'ghostty_formatter_(terminal_new|format_buf|format_alloc|free)' \
|
|
--allowlist-function 'ghostty_free' \
|
|
--allowlist-type 'GhosttyString' \
|
|
--allowlist-type 'GhosttyTerminal(WritePty|TitleChanged)Fn' \
|
|
--no-prepend-enum-name --no-doc-comments --with-derive-default \
|
|
--rust-target 1.85 --rust-edition 2024 \
|
|
--raw-line "// Ghostty revision: $revision" \
|
|
--raw-line '// Generated from the official C API; regenerate with script/ghostty-bindings.' \
|
|
--raw-line '#![allow(dead_code, non_camel_case_types, non_snake_case, non_upper_case_globals, clippy::all)]' \
|
|
--output "$root/src/ghostty/ffi.rs" \
|
|
-- -std=c17 -I"$source/include"
|
|
|
|
rustfmt --edition 2024 "$root/src/ghostty/ffi.rs"
|