Files
svelte-quill/bin/node/zera
2023-12-11 13:34:34 -03:00

95 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
DIR="$(cd $(dirname $0) && pwd)"
BIN_DIR="$(cd $DIR/.. && pwd)"
# Import functions
. $BIN_DIR/helper/fn
# Usage
usage() {
cat <<-EOF
Usage: $0 [options...]
Options:
-m, --manager <manager> Package manager: npm (default), yarn or pnpm
-s, --shame Shamefully hoist (only pnpm)
-h, --help Show usage
EOF
exit 2
}
unset CURR_FOLDER
CURR_FOLDER="$(pwd)"
unset ACTION
ACTION=npm
unset SHAME
SHAME=""
unset VERBOSE
VERBOSE=false
unset CMD_AVAILABLE
CMD_AVAILABLE=("npm" "yarn" "pnpm")
for i in "$@"; do
case $i in
-h|--help)
usage
;;
-m|--manager)
ACTION="${2}"
shift
;;
-s|--shame)
SHAME="--shamefully-hoist"
shift
;;
-*|--*)
abort "Unknown option $i"
;;
*)
;;
esac
done
# Check command available
[[ ! " ${CMD_AVAILABLE[*]} " =~ " ${ACTION} " ]] && usage
# Go to current directory
cd $CURR_FOLDER
# Remove current data
rm -rf \
"${CURR_FOLDER}/node_modules" \
"${CURR_FOLDER}/package-lock.json" \
"${CURR_FOLDER}/yarn.lock" \
"${CURR_FOLDER}/.yarn" \
"${CURR_FOLDER}/.yarnrc.yml" \
"${CURR_FOLDER}/.pnp.*" \
"${CURR_FOLDER}/pnpm-lock.yaml"
# Generate .yarnrc.yml
if [ "${ACTION}" = "yarn" ]; then
echo "" > "${CURR_FOLDER}/.yarnrc.yml"
yarn set version stable
echo "nodeLinker: node-modules" >> "${CURR_FOLDER}/.yarnrc.yml"
fi
# Install packages
if [ "${ACTION}" = "pnpm" ]; then
$ACTION install $SHAME
else
$ACTION install
fi
# Audit packages
test $? -ne 0 && abort "${ACTION} failed" || ok "zerado..."
test "${ACTION}" = "yarn" && yarn npm audit || $ACTION audit
exit 0