create_delivery_zip.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python3
  2. #ident "@(#)$Format:LocalFoodAI:app.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. # 6. SERVER DEPLOYMENT CREDENTIALS
  69. # ------------------------------------------
  70. SERVER_HOST=your_server_host
  71. SERVER_USER=your_server_user
  72. SERVER_PASS=your_server_pass
  73. """
  74. with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
  75. zipf.writestr('.env', dummy_env)
  76. for root, dirs, files in os.walk(repo_root):
  77. for file in files:
  78. full_path = os.path.join(root, file)
  79. rel_path = os.path.relpath(full_path, repo_root)
  80. posix_path = rel_path.replace(os.sep, '/')
  81. # Check against .gitignore rules
  82. if not spec.match_file(posix_path):
  83. zipf.write(full_path, rel_path)
  84. print(f"Successfully created: delivery.zip")
  85. if __name__ == "__main__":
  86. main()