74 lines
2.2 KiB
Bash
Executable File
74 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# How we use rsync
|
|
RSYNC_OPTS="--archive --delete --itemize-changes --human-readable"
|
|
|
|
# Set the destination base directory
|
|
DEST_DIR="$HOME/Code/typst-packages-fork/packages/preview"
|
|
|
|
# Ensure the destination base directory exists
|
|
mkdir -p "$DEST_DIR"
|
|
|
|
# ANSI color codes
|
|
BOLD="\033[1m"
|
|
BLUE="\033[34m"
|
|
GREEN="\033[32m"
|
|
RED="\033[31m"
|
|
CYAN="\033[36m"
|
|
RESET="\033[0m"
|
|
|
|
echo -e "${BOLD}${BLUE}============================="
|
|
echo -e " Typst Sync Tool"
|
|
echo -e "=============================${RESET}\n"
|
|
|
|
# Loop through all subdirectories in the current directory
|
|
for dir in */; do
|
|
if [ -d "$dir" ]; then
|
|
# Remove trailing slash from directory name
|
|
dir=${dir%/}
|
|
|
|
# Check if typst.toml exists in the directory
|
|
TYPST_TOML="$dir/typst.toml"
|
|
if [ ! -f "$TYPST_TOML" ]; then
|
|
echo -e "${RED}Warning:${RESET} $TYPST_TOML not found. Skipping ${CYAN}$dir${RESET}."
|
|
continue
|
|
fi
|
|
|
|
# Extract the version number from typst.toml
|
|
version=$(awk -F '"' '/^version/ {print $2}' "$TYPST_TOML")
|
|
|
|
if [ -z "$version" ]; then
|
|
echo -e "${RED}Warning:${RESET} Could not determine version for ${CYAN}$dir${RESET}. Skipping."
|
|
continue
|
|
fi
|
|
|
|
# Construct the destination directory path including version
|
|
VERSIONED_DEST_DIR="$DEST_DIR/$dir/$version"
|
|
|
|
# Create a shortened path representation, replacing the DEST_DIR part with '...'
|
|
SHORT_PATH="\$${VERSIONED_DEST_DIR#$DEST_DIR}"
|
|
|
|
# Ensure the versioned destination directory exists
|
|
mkdir -p "$VERSIONED_DEST_DIR"
|
|
|
|
echo -e "${BLUE}----------------------------------------------------------------${RESET}"
|
|
echo -e "${BOLD}${BLUE}Syncing ${CYAN}$dir${BLUE} to ${CYAN}$SHORT_PATH${BLUE}${RESET}"
|
|
echo -e "${BLUE}----------------------------------------------------------------${RESET}"
|
|
|
|
# Run rsync and colorize output
|
|
rsync $RSYNC_OPTS "$dir/" "$VERSIONED_DEST_DIR/" | while IFS= read -r line; do
|
|
if [[ "$line" == *"deleting "* ]]; then
|
|
echo -e "${RED}$line${RESET}"
|
|
elif [[ "$line" == ">"* || "$line" == "<"* ]]; then
|
|
echo -e "${GREEN}$line${RESET}"
|
|
else
|
|
echo "$line"
|
|
fi
|
|
done
|
|
|
|
echo -e "${BOLD}${CYAN}Done syncing ${dir}${RESET}\n"
|
|
fi
|
|
done
|
|
|
|
echo -e "${BOLD}${GREEN}Sync complete!${RESET}"
|