File prepare_vendor.sh of Package nodejs-bash-language-server
#!/bin/bash
# shellcheck disable=2181
BASHLS_URL="$(rpmspec -P ./*.spec | grep Source0 | sed -e 's/Source0:[ ]*//g')"
BASHLS_TARBALL="$(basename "${BASHLS_URL}")"
BASHLS_PKGVERSION="$(rpmspec -P ./*.spec | grep ^Version | sed -e 's/Version:[ ]*//g')"
BASHLS_PKGNAME="bash-language-server"
BASHLS_PKGDIR="$(pwd)"
BASHLS_TMPDIR="$(mktemp --tmpdir -d bashls-XXXXXXXX)"
BASHLS_PATH="${BASHLS_TMPDIR}/${BASHLS_PKGNAME}-server-${BASHLS_PKGVERSION}"
echo "URL: ${BASHLS_URL}"
echo "TARBALL: ${BASHLS_TARBALL}"
echo "NAME: ${BASHLS_PKGNAME}"
echo "VERSION: ${BASHLS_PKGVERSION}"
echo "PATH: ${BASHLS_PATH}"
cleanup_tmpdir() {
popd 2>/dev/null || true
rm -rf "${BASHLS_TMPDIR}"
}
trap cleanup_tmpdir SIGINT
cleanup_and_exit() {
cleanup_tmpdir
if test "$1" = 0 -o -z "$1" ; then
exit 0
else
exit "${1}"
fi
}
if [ ! -w "${BASHLS_TARBALL}" ]; then
wget "$BASHLS_URL"
fi
tar -xf "${BASHLS_TARBALL}" -C "${BASHLS_TMPDIR}"
pushd "${BASHLS_PATH}" || cleanup_and_exit 1
PNPM_STORE_DIR="$(pwd)/.pnpm-store"
echo ">>>>>> Install npm modules"
pnpm install --store-dir="${PNPM_STORE_DIR}"
if [ $? -ne 0 ]; then
echo "ERROR: yarn install failed"
cleanup_and_exit 1
fi
echo ">>>>>> Cleanup object dirs"
find "${PNPM_STORE_DIR}/" -type d -name "__pycache__" -print0 | xargs -0 rm -rf
find "${PNPM_STORE_DIR}/" -type d -name "*.o.d" -print0 | xargs -0 rm -rf
echo ">>>>>> Cleanup object files"
find "${PNPM_STORE_DIR}/" -name "*.node" -print0 | xargs -0 rm -rf
find "${PNPM_STORE_DIR}/" -name "*.dll" | grep -v signal-client | xargs rm -f
find "${PNPM_STORE_DIR}/" -name "*.dylib" -delete
find "${PNPM_STORE_DIR}/" -name "*.so" -delete
find "${PNPM_STORE_DIR}/" -name "*.o" -delete
find "${PNPM_STORE_DIR}/" -name "*.a" -delete
find "${PNPM_STORE_DIR}/" -name "*.snyk-*.flag" -delete
find "${PNPM_STORE_DIR}/" -name "builderror.log" -delete
find "${PNPM_STORE_DIR}/" -name ".deps" -type d -print0 | xargs -0 rm -rf
echo ">>>>>> Cleanup build info"
find "${PNPM_STORE_DIR}/" -name "Makefile" -delete
find "${PNPM_STORE_DIR}/" -name "*.target.mk" -delete
find "${PNPM_STORE_DIR}/" -name "config.gypi" -delete
find "${PNPM_STORE_DIR}/" -name "package.json" -exec sed -i "s#${BASHLS_PATH}#/tmp#g" {} \;
echo ">>>>>> Package vendor files"
rm -f "${BASHLS_PKGDIR}/${BASHLS_PKGNAME}-${BASHLS_PKGVERSION}-vendor.tar.zst"
XZ_OPT="-T$(nproc)" tar --zstd -cf "${BASHLS_PKGDIR}/${BASHLS_PKGNAME}-${BASHLS_PKGVERSION}-vendor.tar.zst" .pnpm-store
if [ $? -ne 0 ]; then
cleanup_and_exit 1
fi
popd || cleanup_and_exit 1
cleanup_and_exit 0