ArchiveBox_ArchiveBox/archivebox/plugins/singlefile/on_Crawl__45_singlefile_install.py
2026-01-19 01:00:53 -08:00

55 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Emit single-file Binary dependency for the crawl.
"""
import json
import os
import sys
def get_env(name: str, default: str = '') -> str:
return os.environ.get(name, default).strip()
def get_env_bool(name: str, default: bool = False) -> bool:
val = get_env(name, '').lower()
if val in ('true', '1', 'yes', 'on'):
return True
if val in ('false', '0', 'no', 'off'):
return False
return default
def output_binary(name: str, binproviders: str, overrides: dict | None = None):
"""Output Binary JSONL record for a dependency."""
machine_id = os.environ.get('MACHINE_ID', '')
record = {
'type': 'Binary',
'name': name,
'binproviders': binproviders,
'machine_id': machine_id,
}
if overrides:
record['overrides'] = overrides
print(json.dumps(record))
def main():
singlefile_enabled = get_env_bool('SINGLEFILE_ENABLED', True)
if not singlefile_enabled:
sys.exit(0)
output_binary(
name='single-file',
binproviders='npm,env',
overrides={'npm': {'packages': ['single-file-cli']}},
)
sys.exit(0)
if __name__ == '__main__':
main()