• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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