@@ -17,52 +17,78 @@ set -e
1717# read settings file
1818. ./settings.config
1919
20- echo " Building $VZIC_RELEASE_NAME "
20+ if ! git diff-index --quiet HEAD --; then
21+ echo " Error: Git worktree is not clean. Please commit or stash your changes before proceeding."
22+ exit 1
23+ fi
2124
22- mkdir -p build/out
25+ echo " Building vzic"
26+ eval " make -C '` pwd` /vzic' -B OLSON_DIR=tzdata $VZIC_MAKE_ARGS "
2327
24- if [[ ${VZIC_TZDATA_ARCHIVE_URL} ]]; then
25- echo " Downloading tzdata from $VZIC_TZDATA_ARCHIVE_URL "
26- wget -q -O build/tzdata$VZIC_RELEASE_NAME .tar.gz $VZIC_TZDATA_ARCHIVE_URL
27- export VZIC_TZDATA_ARCHIVE_PATH=build/tzdata$VZIC_RELEASE_NAME .tar.gz
28- fi
28+ tzversions=$( wget -q -O - $VZIC_TZDB_RELEASES_URL | grep -oP ' tzdata\K[\d]+[a-z](?=\.tar\.gz)' | awk ' {print ($0 ~ /^9/ ? "19" $0 : $0)}' | sort | uniq)
2929
30- if [[ ${VZIC_TZDATA_ARCHIVE_PATH} ]]; then
31- echo " Extracting new tzdata"
32- if [ -d tzdata ]; then rm -rf tzdata; fi
33- mkdir -p tzdata
34- tar -xzf $VZIC_TZDATA_ARCHIVE_PATH -C tzdata
30+ # Filter tzversions to skip versions before VZIC_START_RELEASE_NAME
31+ tzversions=$( echo " $tzversions " | awk -v start=" $VZIC_START_RELEASE_NAME " ' $0 >= start' )
3532
36- cp $VZIC_TZDATA_ARCHIVE_PATH build/out
37- fi
33+ for version in $tzversions ; do
3834
39- echo " Building vzic "
40- eval " make -C ' ` pwd ` /build/vzic' -B OLSON_DIR=tzdata $VZIC_MAKE_ARGS "
35+ export VZIC_RELEASE_NAME= $version
36+ tagname= " release_ $VZIC_RELEASE_NAME "
4137
42- echo " Running vzic "
43- if [ -d build/zoneinfo ] ; then rm -r build/zoneinfo ; fi
44- mkdir -p build/zoneinfo
45- eval " ./build/vzic/vzic --olson-dir tzdata --output-dir build/zoneinfo $VZIC_INVOCATION_ARGS "
38+ if git rev-parse " $tagname " > /dev/null 2>&1 ; then
39+ echo " Tag $tagname already exists. Skipping version $version . "
40+ continue
41+ fi
4642
47- export VZIC_ZONEINFO_NEW= ` pwd ` /build/zoneinfo
43+ echo " Processing version: $version " ;
4844
49- if [[ -d zoneinfo ]]; then
50- export VZIC_ZONEINFO_MASTER=` pwd` /zoneinfo
45+ export VZIC_TZDATA_ARCHIVE_URL=$VZIC_TZDB_RELEASES_URL /tzdata$VZIC_RELEASE_NAME .tar.gz
46+ if [[ ${VZIC_TZDATA_ARCHIVE_URL} ]]; then
47+ echo " Downloading tzdata from $VZIC_TZDATA_ARCHIVE_URL "
48+ wget -q -O build/tzdata$VZIC_RELEASE_NAME .tar.gz $VZIC_TZDATA_ARCHIVE_URL
49+ export VZIC_TZDATA_ARCHIVE_PATH=build/tzdata$VZIC_RELEASE_NAME .tar.gz
50+ fi
5151
52- echo " Merging..."
53- ./build/vzic/vzic-merge.pl
52+ if [[ ${VZIC_TZDATA_ARCHIVE_PATH} ]]; then
53+ echo " Extracting new tzdata"
54+ if [ -d tzdata ]; then rm -rf tzdata; fi
55+ mkdir -p tzdata
56+ tar -xzf $VZIC_TZDATA_ARCHIVE_PATH -C tzdata
5457
55- # copy updated zones
56- cp -r $VZIC_ZONEINFO_NEW /zones. * $VZIC_ZONEINFO_MASTER
58+ cp $VZIC_TZDATA_ARCHIVE_PATH build/out
59+ fi
5760
58- else
59- cp -r " $VZIC_ZONEINFO_NEW " zoneinfo
60- export VZIC_ZONEINFO_MASTER=` pwd` /zoneinfo
61- echo " No master zoneinfo configured. The new zoneinfo will not be merged and kept as is."
62- fi
61+ echo " Running vzic"
62+ if [ -d build/zoneinfo ]; then rm -r build/zoneinfo; fi
63+ mkdir -p build/zoneinfo
64+ eval " ./vzic/vzic --olson-dir tzdata --output-dir build/zoneinfo $VZIC_INVOCATION_ARGS "
65+
66+ export VZIC_ZONEINFO_NEW=` pwd` /build/zoneinfo
67+
68+ if [[ -d zoneinfo ]]; then
69+ export VZIC_ZONEINFO_MASTER=` pwd` /zoneinfo
70+
71+ echo " Merging..."
72+ ./vzic/vzic-merge.pl
73+
74+ # copy updated zones
75+ cp -r $VZIC_ZONEINFO_NEW /zones.* $VZIC_ZONEINFO_MASTER
76+
77+ else
78+ cp -r " $VZIC_ZONEINFO_NEW " zoneinfo
79+ export VZIC_ZONEINFO_MASTER=` pwd` /zoneinfo
80+ echo " No master zoneinfo configured. The new zoneinfo will not be merged and kept as is."
81+ fi
82+
83+ echo " Creating output archive"
84+ VZIC_OUT_TAR=" ` pwd` /build/out/zoneinfo-$VZIC_RELEASE_NAME .tar.gz"
85+ pushd $VZIC_ZONEINFO_MASTER
86+ tar -czf " $VZIC_OUT_TAR " *
87+ popd
88+
89+ git add .
90+
91+ git commit -m " Update zoneinfo to $VZIC_RELEASE_NAME "
92+ git tag -a " $tagname " -m " Release $VZIC_RELEASE_NAME "
6393
64- echo " Creating output archive"
65- VZIC_OUT_TAR=" ` pwd` /build/out/zoneinfo-$VZIC_RELEASE_NAME .tar.gz"
66- pushd $VZIC_ZONEINFO_MASTER
67- tar -czf " $VZIC_OUT_TAR " *
68- popd
94+ done
0 commit comments