85 lines
2.5 KiB
Bash
85 lines
2.5 KiB
Bash
#!/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
|