TSFastifyExample/start.sh
2024-08-08 08:24:20 -04:00

146 lines
3.3 KiB
Bash

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
if [ ! -f package.json ]; then
echo "package.json not found in $SCRIPT_DIR"
exit 1
fi
PKG_MANAGER="bun"
MODE="dev"
while [[ "$#" -gt 0 ]]; do
arg="$1"
shift
if [[ "$next_is_value" == "1" ]]; then
if [[ "$last_key" == "manager" ]]; then
PKG_MANAGER="$arg"
elif [[ "$last_key" == "mode" ]]; then
MODE="$arg"
fi
next_is_value=0
fi
case "$arg" in
clean|cleanup)
cleanup=true
;;
manager)
last_key="manager"
next_is_value=1
;;
mode)
last_key="mode"
next_is_value=1
;;
esac
done
ALLOWED_MANAGERS="bun npm yarn pnpm"
ALLOWED_MODES="dev prod development production"
manager_allowed=0
for allowed in $ALLOWED_MANAGERS; do
if [[ "$PKG_MANAGER" == "$allowed" ]]; then
manager_allowed=1
break
fi
done
mode_allowed=0
for allowed in $ALLOWED_MODES; do
if [[ "$MODE" == "$allowed" ]]; then
mode_allowed=1
break
fi
done
if [[ "$manager_allowed" == "0" ]]; then
echo "$PKG_MANAGER is not a valid package manager, please use one of the following: $ALLOWED_MANAGERS"
exit 1
fi
if [[ "$mode_allowed" == "0" ]]; then
echo "$MODE is not a valid mode, please use one of the following: $ALLOWED_MODES"
exit 1
fi
echo "Using package manager: $PKG_MANAGER"
echo "Mode: $MODE"
NPM_MARKER="node_modules/.npm_used"
YARN_MARKER="node_modules/.yarn_used"
PNPM_MARKER="node_modules/.pnpm_used"
BUN_MARKER="node_modules/.bun_used"
case "$PKG_MANAGER" in
npm)
INSTALL_CMD="npm install"
RUN_CMD="npm run $MODE"
CURRENT_MARKER="$NPM_MARKER"
;;
yarn)
INSTALL_CMD="yarn"
RUN_CMD="yarn $MODE"
CURRENT_MARKER="$YARN_MARKER"
;;
pnpm)
INSTALL_CMD="pnpm install"
RUN_CMD="pnpm $MODE"
CURRENT_MARKER="$PNPM_MARKER"
;;
bun)
INSTALL_CMD="bun install"
RUN_CMD="bun $MODE"
CURRENT_MARKER="$BUN_MARKER"
;;
esac
if [[ -f "$NPM_MARKER" && "$CURRENT_MARKER" != "$NPM_MARKER" ]] || \
[[ -f "$YARN_MARKER" && "$CURRENT_MARKER" != "$YARN_MARKER" ]] || \
[[ -f "$PNPM_MARKER" && "$CURRENT_MARKER" != "$PNPM_MARKER" ]] || \
[[ -f "$BUN_MARKER" && "$CURRENT_MARKER" != "$BUN_MARKER" ]]; then
cleanup=true
fi
if [[ "$cleanup" == "true" ]]; then
files_to_delete="package-lock.json yarn.lock pnpm-lock.yaml bun.lockb"
folders_to_delete="node_modules dist logs"
markers_to_delete="$NPM_MARKER $YARN_MARKER $PNPM_MARKER $BUN_MARKER"
echo "Cleaning up files and folders..."
for file in $files_to_delete; do
if [[ -f "$file" ]]; then
echo "Found $file in $SCRIPT_DIR - deleting..."
rm -f "$file"
fi
done
for folder in $folders_to_delete; do
if [[ -d "$folder" ]]; then
echo "Found $folder in $SCRIPT_DIR - deleting..."
rm -rf "$folder"
fi
done
for marker in $markers_to_delete; do
if [[ -f "$marker" ]]; then
rm -f "$marker"
fi
done
fi
if [[ -n "$RUN_CMD" ]]; then
echo "Running $RUN_CMD..."
$INSTALL_CMD
$RUN_CMD
else
echo "No run command set, exiting..."
fi
exit 0