on_Crawl__45_singlefile_install.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python3
  2. """
  3. Emit single-file Binary dependency for the crawl.
  4. """
  5. import json
  6. import os
  7. import sys
  8. def get_env(name: str, default: str = '') -> str:
  9. return os.environ.get(name, default).strip()
  10. def get_env_bool(name: str, default: bool = False) -> bool:
  11. val = get_env(name, '').lower()
  12. if val in ('true', '1', 'yes', 'on'):
  13. return True
  14. if val in ('false', '0', 'no', 'off'):
  15. return False
  16. return default
  17. def output_binary(name: str, binproviders: str, overrides: dict | None = None):
  18. """Output Binary JSONL record for a dependency."""
  19. machine_id = os.environ.get('MACHINE_ID', '')
  20. record = {
  21. 'type': 'Binary',
  22. 'name': name,
  23. 'binproviders': binproviders,
  24. 'machine_id': machine_id,
  25. }
  26. if overrides:
  27. record['overrides'] = overrides
  28. print(json.dumps(record))
  29. def main():
  30. singlefile_enabled = get_env_bool('SINGLEFILE_ENABLED', True)
  31. if not singlefile_enabled:
  32. sys.exit(0)
  33. output_binary(
  34. name='single-file',
  35. binproviders='npm,env',
  36. overrides={'npm': {'packages': ['single-file-cli']}},
  37. )
  38. sys.exit(0)
  39. if __name__ == '__main__':
  40. main()