1#!/usr/bin/env node 2// Usage: tools/update-timezone.mjs 3import { execSync } from 'node:child_process'; 4import { renameSync, readdirSync, rmSync } from 'node:fs'; 5 6const fileNames = [ 7 'zoneinfo64.res', 8 'windowsZones.res', 9 'timezoneTypes.res', 10 'metaZones.res', 11]; 12 13const availableVersions = readdirSync('icu-data/tzdata/icunew', { withFileTypes: true }) 14.filter((dirent) => dirent.isDirectory()) 15.map((dirent) => dirent.name); 16 17const latestVersion = availableVersions.sort().at(-1); 18 19execSync('bzip2 -d deps/icu-small/source/data/in/icudt*.dat.bz2'); 20fileNames.forEach((file) => { 21 renameSync(`icu-data/tzdata/icunew/${latestVersion}/44/le/${file}`, `deps/icu-small/source/data/in/${file}`); 22 execSync(`icupkg -a ${file} icudt*.dat`, { cwd: 'deps/icu-small/source/data/in/' }); 23 rmSync(`deps/icu-small/source/data/in/${file}`); 24}); 25execSync('bzip2 -z deps/icu-small/source/data/in/icudt*.dat'); 26rmSync('icu-data', { recursive: true }); 27