#!/usr/bin/env python3
"""
Pre-build script for PlatformIO
Downloads xterm.js files for local hosting (optional)
To use local files instead of CDN, run:
python scripts/download_xterm.py --local
Then update data/index.html to use local paths instead of CDN URLs.
"""
import os
import sys
# This script runs before build but doesn't do anything by default
# The HTML uses CDN links which work fine when you have internet
def main():
# Check if --local flag was passed
if '--local' in sys.argv:
try:
import urllib.request
data_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data')
js_dir = os.path.join(data_dir, 'js')
css_dir = os.path.join(data_dir, 'css')
os.makedirs(js_dir, exist_ok=True)
os.makedirs(css_dir, exist_ok=True)
files = [
('https://cdn.jsdelivr.net/npm/xterm@5.3.0/lib/xterm.min.js',
os.path.join(js_dir, 'xterm.min.js')),
('https://cdn.jsdelivr.net/npm/xterm@5.3.0/css/xterm.min.css',
os.path.join(css_dir, 'xterm.min.css')),
('https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.8.0/lib/xterm-addon-fit.min.js',
os.path.join(js_dir, 'xterm-addon-fit.min.js')),
('https://cdn.jsdelivr.net/npm/xterm-addon-web-links@0.9.0/lib/xterm-addon-web-links.min.js',
os.path.join(js_dir, 'xterm-addon-web-links.min.js')),
]
for url, path in files:
if not os.path.exists(path):
print(f'Downloading {url}...')
urllib.request.urlretrieve(url, path)
print(f' -> {path}')
print('\nLocal files downloaded!')
print('Update index.html to use local paths:')
print(' ')
print(' ')
print(' etc.')
except Exception as e:
print(f'Warning: Could not download xterm.js files: {e}')
print('The HTML will use CDN links instead.')
# Normal build - do nothing
pass
if __name__ == '__main__':
main()