Skip to content

Commit a85a0b0

Browse files
committed
GTFS-Archive: compat with calendar.txt & /r characters
1 parent df62e1f commit a85a0b0

File tree

1 file changed

+30
-13
lines changed

1 file changed

+30
-13
lines changed

shared-opt-dir/agency-parser/archive.sh

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,51 @@ fi
2525

2626
START_DATE=""
2727
END_DATE=""
28-
if [[ -f "${FILES_DIR}/calendars.txt" ]]; then
29-
echo "TODO: Using calendars.txt";
30-
exit 1
31-
elif [[ -f "${FILES_DIR}/calendar_dates.txt" ]]; then
32-
echo "- Using calendar_dates.txt";
33-
HEADERS=$(head -n 1 "${FILES_DIR}/calendar_dates.txt")
28+
FILE_CALENDAR="${FILES_DIR}/calendar.txt";
29+
FILE_CALENDAR_DATES="${FILES_DIR}/calendar_dates.txt";
30+
if [[ -f "$FILE_CALENDAR" ]]; then
31+
echo "Using $FILE_CALENDAR...";
32+
HEADERS=$(head -n 1 "$FILE_CALENDAR" | tr -d '\r')
33+
IFS="," read -r -a HEADERS_ARRAY <<< "$HEADERS"
34+
START_DATE_INDEX=$(getArrayIndex HEADERS_ARRAY "start_date")
35+
checkResult $?;
36+
END_DATE_INDEX=$(getArrayIndex HEADERS_ARRAY "end_date")
37+
checkResult $?;
38+
CUT_START_DATE_INDEX=$((START_DATE_INDEX+1))
39+
CUT_END_DATE_INDEX=$((END_DATE_INDEX+1))
40+
mapfile -t START_DATES < <(tail -n +2 "${FILE_CALENDAR}" | tr -d '\r' | cut -d ',' -f $CUT_START_DATE_INDEX)
41+
mapfile -t END_DATES < <(tail -n +2 "${FILE_CALENDAR}" | tr -d '\r' | cut -d ',' -f $CUT_END_DATE_INDEX)
42+
readarray -t START_DATES_SORTED < <(printf '%s\n' "${START_DATES[@]}" | sort)
43+
readarray -t END_DATES_SORTED < <(printf '%s\n' "${END_DATES[@]}" | sort)
44+
START_DATE=${START_DATES_SORTED[0]}
45+
echo "- start date: ${START_DATE}"
46+
END_DATE=${END_DATES_SORTED[-1]}
47+
echo "- end date: ${END_DATE}"
48+
elif [[ -f "$FILE_CALENDAR_DATES" ]]; then
49+
echo "- Using $FILE_CALENDAR_DATES...";
50+
HEADERS=$(head -n 1 "$FILE_CALENDAR_DATES" | tr -d '\r')
3451
IFS="," read -r -a HEADERS_ARRAY <<< "$HEADERS"
3552
DATE_INDEX=$(getArrayIndex HEADERS_ARRAY "date")
3653
checkResult $?;
3754
CUT_INDEX=$((DATE_INDEX+1))
38-
mapfile -t DATES < <(tail -n +2 "${FILES_DIR}/calendar_dates.txt" | cut -d ',' -f $CUT_INDEX)
55+
mapfile -t DATES < <(tail -n +2 "${FILE_CALENDAR_DATES}" | tr -d '\r' | cut -d ',' -f $CUT_INDEX)
3956
readarray -t DATES_SORTED < <(printf '%s\n' "${DATES[@]}" | sort)
4057
START_DATE=${DATES_SORTED[0]}
41-
echo "- start date: ${START_DATE}"
58+
echo "- start date: '${START_DATE}'"
4259
END_DATE=${DATES_SORTED[-1]}
43-
echo "- end date: ${END_DATE}"
60+
echo "- end date: '${END_DATE}'"
4461
else
4562
echo "ERROR: GTFS files not found in ${FILES_DIR}";
4663
exit 1;
4764
fi
4865

4966
ARCHIVE_DIR="${SCRIPT_DIR}/archive";
50-
echo "- Archive dir: $ARCHIVE_DIR";
67+
echo "- archive dir: $ARCHIVE_DIR";
68+
69+
mkdir -p "$ARCHIVE_DIR";
5170

5271
YESTERDAY=$(date -d "yesterday" +%Y%m%d); # service can start yesterday and finish today
53-
echo "- Yesterday: $YESTERDAY";
72+
echo "- yesterday: $YESTERDAY";
5473

5574
for ZIP_FILE in $(ls -a ${ARCHIVE_DIR}/*.zip) ; do
5675
echo "--------------------"
@@ -82,8 +101,6 @@ for ZIP_FILE in $(ls -a ${ARCHIVE_DIR}/*.zip) ; do
82101
echo "--------------------"
83102
done
84103

85-
mkdir -p "$ARCHIVE_DIR";
86-
87104
ARCHIVE_FILE="${ARCHIVE_DIR}/${START_DATE}-${END_DATE}.zip";
88105
cp "$GTFS_FILE" "$ARCHIVE_FILE";
89106
checkResult $?;

0 commit comments

Comments
 (0)