VulpesOS/tools/refresh-camera-modules.py
2026-11-04 12:52:20 +01:00

27 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""Update changed source modules in the existing Gaia Camera bundle."""
import json,re,subprocess
from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
TARGET=ROOT/'overrides/camera.gaiamobile.org/js/main.js'
dcf=ROOT/'overrides/camera.gaiamobile.org/js/lib/dcf.js'
dcf.parent.mkdir(parents=True,exist_ok=True)
dcf.write_text((ROOT/'gaia/apps/camera/js/lib/dcf.js').read_text())
for name in [
'app',
'lib/camera/camera',
'lib/storage',
'controllers/activity',
'controllers/battery',
'controllers/overlay',
'controllers/settings',
'controllers/storage',
'controllers/viewfinder',
'views/viewfinder',
]:
source=(ROOT/'gaia/apps/camera/js'/f'{name}.js').read_text()
deps=list(dict.fromkeys(re.findall(r"require\(['\"]([^'\"]+)['\"]\)",source)))
source=source.replace('define(function(require, exports, module)', 'define('+json.dumps(name)+','+json.dumps(['require','exports','module',*deps])+',function(require, exports, module)',1)
start,end=json.loads(subprocess.check_output(['/usr/bin/node',str(ROOT/'tools/amd-module-range.cjs'),str(TARGET),name],text=True))
bundle=TARGET.read_text();TARGET.write_text(bundle[:start]+source[source.index('define('):].rstrip()+'\n'+bundle[end:])
subprocess.run(['/usr/bin/node','--check',str(TARGET)],check=True)