#!/bin/sh # Settings CSV_URL="https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv" # Constants EXIT_SUCCESS=0 EXIT_FAILURE=1 # Verify the required runtime environment if ! command -v curl >/dev/null; then echo "This script requires \"curl\" to be installed. Please install it and try again." exit $EXIT_FAILURE fi if ! command -v nkf >/dev/null; then echo "This script requires \"nkf\" to be installed. Please install it and try again." exit $EXIT_FAILURE fi # Logging CURRENT_MONTH=$(date "+%Yw%U%z") SCRIPT_NAME=$(basename $0) LOG_DIR="log" LOG_FILE="$LOG_DIR/$SCRIPT_NAME_$CURRENT_MONTH" get_current_time() { date "+%Y-%m-%d %H:%M:%S%z" } log() { local timestamp=$(get_current_time) local message=$1 echo "$timestamp $message" >>$LOG_FILE } # Acquire the lock or exit LOCK_DIR="lock" if ! mkdir "$LOCK_DIR" 2>/dev/null; then echo "Another process is holding the lock. Exiting." exit $EXIT_FAILURE fi mkdir -p $LOG_DIR # Internal configuration settings TMP_CSV_FILE="holidays-jp-tmp.csv" RAW_CSV_FILE="holidays-jp-raw.csv" CSV_FILE="holidays-jp.csv" # Run curl -sS -L -o $TMP_CSV_FILE $CSV_URL if ! diff -q $RAW_CSV_FILE $TMP_CSV_FILE >/dev/null 2>&1; then mv $TMP_CSV_FILE $RAW_CSV_FILE nkf -w $RAW_CSV_FILE >$CSV_FILE log "Changed" else log "No Change" rm $TMP_CSV_FILE fi # Release the lock rmdir "$LOCK_DIR" # Exit exit $EXIT_SUCCESS