Files
fil/fix-go-bindings.sh

68 lines
2.5 KiB
Bash
Raw Permalink Normal View History

2026-06-01 23:40:55 +02:00
#!/bin/bash
# Post-generation fix for Go bindings
# Maps unresolved office metadata struct types to json.RawMessage
# This is a workaround until alef resolves cross-module struct types correctly
set -euo pipefail
BINDING_FILE="packages/go/v5/binding.go"
if [ ! -f "$BINDING_FILE" ]; then
echo "Error: $BINDING_FILE not found"
exit 1
fi
# Step 1: Map struct field types to json.RawMessage
replacements=(
# DocxMetadata fields
"s/CoreProperties \*string/CoreProperties json.RawMessage/g"
"s/AppProperties \*string/AppProperties json.RawMessage/g"
"s/CustomProperties \*string/CustomProperties json.RawMessage/g"
# OdtMetadata fields
"s/OdtMetaProperties \*string/OdtMetaProperties json.RawMessage/g"
# PptxMetadata fields
"s/PptxAppProperties \*string/PptxAppProperties json.RawMessage/g"
# XlsxMetadata fields
"s/XlsxAppProperties \*string/XlsxAppProperties json.RawMessage/g"
)
for replacement in "${replacements[@]}"; do
sed -i "" "$replacement" "$BINDING_FILE"
done
# Step 2: Fix builder functions to accept json.RawMessage
# Change from: func WithDocxMetadataCoreProperties(v string) DocxMetadataOption
# Change to: func WithDocxMetadataCoreProperties(v json.RawMessage) DocxMetadataOption
builder_fixes=(
"s/func (WithDocxMetadataCoreProperties)(v string)/func \1(v json.RawMessage)/g"
"s/func (WithDocxMetadataAppProperties)(v string)/func \1(v json.RawMessage)/g"
"s/func (WithDocxMetadataCustomProperties)(v string)/func \1(v json.RawMessage)/g"
"s/func (WithOdtMetadataOdtMetaProperties)(v string)/func \1(v json.RawMessage)/g"
"s/func (WithPptxMetadataPptxAppProperties)(v string)/func \1(v json.RawMessage)/g"
"s/func (WithXlsxMetadataXlsxAppProperties)(v string)/func \1(v json.RawMessage)/g"
)
for fix in "${builder_fixes[@]}"; do
sed -i "" "$fix" "$BINDING_FILE"
done
# Step 3: Fix assignments in builder functions
# Change from: return func(c *DocxMetadata) { c.CoreProperties = &v }
# Change to: return func(c *DocxMetadata) { c.CoreProperties = v }
assignment_fixes=(
"s/c\.CoreProperties = &v/c.CoreProperties = v/g"
"s/c\.AppProperties = &v/c.AppProperties = v/g"
"s/c\.CustomProperties = &v/c.CustomProperties = v/g"
"s/c\.OdtMetaProperties = &v/c.OdtMetaProperties = v/g"
"s/c\.PptxAppProperties = &v/c.PptxAppProperties = v/g"
"s/c\.XlsxAppProperties = &v/c.XlsxAppProperties = v/g"
)
for fix in "${assignment_fixes[@]}"; do
sed -i "" "$fix" "$BINDING_FILE"
done
echo "Fixed Go bindings: mapped office metadata types to json.RawMessage"