create_delivery_zip.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env python3
  2. #ident "@(#)$Format:LocalFoodAI:create_delivery_zip.py:%an:%ae:%ad:%cn:%ce:%cd:%H:%D:%N$"
  3. import os
  4. import zipfile
  5. import pathspec
  6. def main():
  7. repo_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  8. gitignore_path = os.path.join(repo_root, ".gitignore")
  9. if os.path.exists(gitignore_path):
  10. with open(gitignore_path, 'r') as f:
  11. spec = pathspec.PathSpec.from_lines(pathspec.patterns.GitWildMatchPattern, f)
  12. else:
  13. spec = pathspec.PathSpec([])
  14. # Standard ignores
  15. spec.patterns.append(pathspec.patterns.GitWildMatchPattern('.git/'))
  16. spec.patterns.append(pathspec.patterns.GitWildMatchPattern('*.zip'))
  17. zip_path = os.path.join(repo_root, "delivery.zip")
  18. print(f"Building {zip_path}...")
  19. network_mode = 'server'
  20. llm_model = 'your_llm_model'
  21. env_path = os.path.join(repo_root, ".env")
  22. if os.path.exists(env_path):
  23. with open(env_path, 'r') as f:
  24. for line in f:
  25. if line.startswith('NETWORK_MODE='):
  26. network_mode = line.strip().split('=', 1)[1]
  27. elif line.startswith('LLM_MODEL='):
  28. llm_model = line.strip().split('=', 1)[1]
  29. dummy_env = f"""# ==========================================
  30. # LOCAL FOOD AI - DUMMY CONFIGURATION
  31. # ==========================================
  32. # ------------------------------------------
  33. # 1. NETWORK & ENVIRONMENT MODE
  34. # ------------------------------------------
  35. # NETWORK_MODE: Controls network call execution.
  36. # Possible values: 'local' (or 'server')
  37. NETWORK_MODE={network_mode}
  38. LLM_MODEL={llm_model}
  39. # ------------------------------------------
  40. # 2. DATABASE CREDENTIALS (MySQL)
  41. # ------------------------------------------
  42. MYSQL_ROOT_PASSWORD=your_mysql_root_pass
  43. DB_READER_PASS=your_db_reader_pass
  44. DB_LOADER_PASS=your_db_loader_pass
  45. DB_APP_AUTH_PASS=your_db_auth_pass
  46. MYSQL_ZABBIX_PASSWORD=your_mysql_zabbix_pass
  47. # ------------------------------------------
  48. # 3. ZABBIX & SNMP CREDENTIALS
  49. # ------------------------------------------
  50. ZABBIX_USER=Admin
  51. ZABBIX_PASS=your_zabbix_pass
  52. ZABBIX_SNMP_USER=zabbix_snmp
  53. ZABBIX_SNMP_AUTHKEY=your_snmp_authkey
  54. ZABBIX_SNMP_PRIVKEY=your_snmp_privkey
  55. DISCORD_WEBHOOK=your_discord_webhook
  56. # ------------------------------------------
  57. # 4. EMAIL ALERTS CONFIGURATION
  58. # ------------------------------------------
  59. EMAIL_USER=your_email@gmail.com
  60. EMAIL_PASS=your_email_app_password
  61. # ------------------------------------------
  62. # 5. TAIGA PROJECT MANAGEMENT CREDENTIALS
  63. # ------------------------------------------
  64. TAIGA_URL=your_taiga_url
  65. TAIGA_USER=your_taiga_user
  66. TAIGA_PASS=your_taiga_pass
  67. """
  68. with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
  69. zipf.writestr('.env', dummy_env)
  70. for root, dirs, files in os.walk(repo_root):
  71. for file in files:
  72. full_path = os.path.join(root, file)
  73. rel_path = os.path.relpath(full_path, repo_root)
  74. posix_path = rel_path.replace(os.sep, '/')
  75. # Check against .gitignore rules
  76. if not spec.match_file(posix_path):
  77. zipf.write(full_path, rel_path)
  78. print(f"Successfully created: delivery.zip")
  79. if __name__ == "__main__":
  80. main()