File prepare_vendor.sh of Package nodejs-vscode-tree-sitter-wasm
#!/bin/sh -eux
# dnf install cargo-vendor-filterer curl gzip moreutils tar
PKGDIR="$(pwd)"
TMPDIR="$(mktemp --tmpdir -d tree-sitter-XXXXXXXX)"
version=$(rpmspec -P ./*.spec | grep ^Version | sed -e 's/Version:[ ]*//g')
wget -nc https://github.com/microsoft/vscode-tree-sitter-wasm/archive/refs/tags/v${version}.tar.gz
tree_sitter_version=$(grep '%global tree_sitter_version' *.spec | sed -e 's/^.*version *//')
cd $TMPDIR
tar -xvvf "${PKGDIR}/v${version}.tar.gz"
cd vscode-tree-sitter-wasm-${version}
npm ci --ignore-scripts --verbose
INI_SHA=$( grep -A 5 'tree-sitter-ini' build/main.ts | grep -oE '[0-9a-f]{40}')
cd node_modules
curl -L https://github.com/justinmk/tree-sitter-ini/archive/"${INI_SHA}".tar.gz | tar --gzip -xvv
mv -v tree-sitter-ini-* tree-sitter-ini
cd ..
curl -L https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v${tree_sitter_version}/tree-sitter-${tree_sitter_version}.tar.gz | tar --gzip -xvv
mv -v tree-sitter-* tree-sitter
cd tree-sitter
mkdir -pv .cargo
cargo vendor-filterer --platform='*-unknown-linux-gnu' --platform='*-unknown-linux-gnueabihf' --all-features > .cargo/config
cd lib/binding_web
npm ci --verbose --ignore-scripts
cd ../../..
echo ">>>>>> Remove non-free binaries"
find . -type f -name "*.jar" -print -delete
find . -type f -name "*.wasm" -print -delete
find . -type f -name "*.pyc" -print -delete
find . -type f -name "*.pyd" -print -delete
find . -type f -name "*.exe" -print -delete
find . -type f -name "*.node" -print -delete
find . -type f -name "*.dll" -print -delete
find . -type f -name "*.dylib" -print -delete
find . -type f -name "*.so" -print -delete
find . -type f -name "*.o" -print -delete
find . -type f -name "*.a" -print -delete
#We use sponge to avoid a race condition between find and rm
find -type f | sponge | xargs -P$(nproc) -- sh -c 'file "$@" | grep -v '\'' .*script'\'' | grep '\'' .*executable'\'' | tee /dev/stderr | sed '\''s/: .*//'\'' | xargs rm -fv'
ZSTD_CLEVEL=19 ZSTD_NBTHREADS=$(nproc) tar --zstd --sort=name -vvScf ${PKGDIR}/vendor.tar.zst node_modules tree-sitter
cd /tmp
rm -rf "${TMPDIR}"