TSFastifyExample/start.sh

140 lines
3.5 KiB
Bash
Raw Normal View History

2024-08-08 08:24:20 -04:00
#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
2024-08-08 08:24:20 -04:00
cd "$SCRIPT_DIR"
if [ ! -f "package.json" ]; then
2024-08-08 08:24:20 -04:00
echo "package.json not found in $SCRIPT_DIR"
exit 1
fi
PKG_MANAGER="bun"
MODE="dev"
next_is_value=0
last_key=""
2024-08-08 08:24:20 -04:00
for arg in "$@"; do
if [ "$next_is_value" == "1" ]; then
if [ "$last_key" == "manager" ]; then
2024-08-08 08:24:20 -04:00
PKG_MANAGER="$arg"
fi
if [ "$last_key" == "mode" ]; then
2024-08-08 08:24:20 -04:00
MODE="$arg"
fi
next_is_value=0
fi
if [ "$arg" == "clean" ] || [ "$arg" == "cleanup" ]; then
goto_cleanup=1
fi
if [ "$arg" == "manager" ]; then
last_key="manager"
next_is_value=1
fi
if [ "$arg" == "mode" ]; then
last_key="mode"
next_is_value=1
fi
2024-08-08 08:24:20 -04:00
done
ALLOWED_MANAGERS=("bun" "npm" "yarn" "pnpm")
ALLOWED_MODES=("dev" "prod" "development" "production")
2024-08-08 08:24:20 -04:00
manager_allowed=0
for allowed_manager in "${ALLOWED_MANAGERS[@]}"; do
if [ "$PKG_MANAGER" == "$allowed_manager" ]; then
2024-08-08 08:24:20 -04:00
manager_allowed=1
fi
done
mode_allowed=0
for allowed_mode in "${ALLOWED_MODES[@]}"; do
if [ "$MODE" == "$allowed_mode" ]; then
2024-08-08 08:24:20 -04:00
mode_allowed=1
fi
done
if [ "$manager_allowed" == "0" ]; then
echo "$PKG_MANAGER is not a valid package manager, please use one of the following: ${ALLOWED_MANAGERS[@]}"
2024-08-08 08:24:20 -04:00
exit 1
fi
if [ "$mode_allowed" == "0" ]; then
echo "$MODE is not a valid mode, please use one of the following: ${ALLOWED_MODES[@]}"
2024-08-08 08:24:20 -04:00
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"
if [ "$PKG_MANAGER" == "npm" ]; then
INSTALL_CMD="npm install"
RUN_CMD="npm run $MODE"
CURRENT_MARKER="$NPM_MARKER"
elif [ "$PKG_MANAGER" == "yarn" ]; then
INSTALL_CMD="yarn"
RUN_CMD="yarn $MODE"
CURRENT_MARKER="$YARN_MARKER"
elif [ "$PKG_MANAGER" == "pnpm" ]; then
INSTALL_CMD="pnpm install"
RUN_CMD="pnpm $MODE"
CURRENT_MARKER="$PNPM_MARKER"
elif [ "$PKG_MANAGER" == "bun" ]; then
INSTALL_CMD="bun install"
RUN_CMD="bun $MODE"
CURRENT_MARKER="$BUN_MARKER"
2024-08-08 08:24:20 -04:00
fi
if [ -f "$NPM_MARKER" ] && [ "$CURRENT_MARKER" != "$NPM_MARKER" ]; then goto_cleanup=1; fi
if [ -f "$YARN_MARKER" ] && [ "$CURRENT_MARKER" != "$YARN_MARKER" ]; then goto_cleanup=1; fi
if [ -f "$PNPM_MARKER" ] && [ "$CURRENT_MARKER" != "$PNPM_MARKER" ]; then goto_cleanup=1; fi
if [ -f "$BUN_MARKER" ] && [ "$CURRENT_MARKER" != "$BUN_MARKER" ]; then goto_cleanup=1; fi
if [ "$goto_cleanup" == "1" ]; 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")
2024-08-08 08:24:20 -04:00
echo "Cleaning up files and folders..."
for file in "${files_to_delete[@]}"; do
if [ -f "$file" ]; then
2024-08-08 08:24:20 -04:00
echo "Found $file in $SCRIPT_DIR - deleting..."
rm -f "$file"
fi
done
for folder in "${folders_to_delete[@]}"; do
if [ -d "$folder" ]; then
2024-08-08 08:24:20 -04:00
echo "Found $folder in $SCRIPT_DIR - deleting..."
rm -rf "$folder"
fi
done
for marker in "${markers_to_delete[@]}"; do
if [ -f "$marker" ]; then
2024-08-08 08:24:20 -04:00
rm -f "$marker"
fi
done
exit 0
2024-08-08 08:24:20 -04:00
fi
if [ -n "$RUN_CMD" ]; then
2024-08-08 08:24:20 -04:00
echo "Running $RUN_CMD..."
$INSTALL_CMD
$RUN_CMD
else
echo "No run command set, exiting..."
fi
exit 0