File size: 2,029 Bytes
d25ffd1
dc70e52
 
 
 
 
 
 
d25ffd1
dc70e52
d25ffd1
 
dc70e52
 
d25ffd1
 
dc70e52
 
 
 
 
d25ffd1
 
dc70e52
d25ffd1
dc70e52
 
d25ffd1
dc70e52
 
 
 
 
 
 
 
 
 
 
 
 
d25ffd1
 
dc70e52
 
d25ffd1
dc70e52
 
 
d25ffd1
 
dc70e52
d25ffd1
dc70e52
 
 
 
 
 
d25ffd1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const fs = require('fs'); // 保留 fs 以防万一其他地方用到
const path = require('path');

/**
 * 检查必要的环境变量是否已设置
 * @returns {Object} 检查结果,包含是否通过和缺失的变量列表
 */
function checkRequiredEnvVars() {
  // 定义应用启动绝对必要的核心环境变量列表
  const requiredVars = [
    'API_KEYS' // 假设管理员密码是启动和基本操作所必需的
    // 根据你的应用逻辑,如果还有其他绝对必需的变量,请加在这里
  ];

  // 如果启用了自动刷新,则检查 GitHub 相关配置是否完整
  // 这些变量的值你已经在 Secrets 中设置了
  if (process.env.ENABLE_AUTO_REFRESH === 'true') {
    requiredVars.push(
      'GITHUB_TOKEN',
      'GITHUB_OWNER',
      'GITHUB_REPO',
      'GITHUB_WORKFLOW_ID'
      // 'TRIGGER_WORKFLOW' - 这个通常可以有默认值或者不影响启动,除非你的代码强制需要它
    );
    // 注意:我们不检查 REGISTER_* 变量,因为它们更可能是 workflow 参数,而非应用启动的必需项。
  }

  // 检查每个必要的环境变量是否在 process.env 中有定义
  const missingVars = requiredVars.filter(varName => !process.env[varName]);

  return {
    passed: missingVars.length === 0,
    missingVars
  };
}

/**
 * 执行环境检查,如果不符合要求则退出程序
 */
function enforceEnvCheck() {
  console.log('正在检查环境配置...');

  // 检查必要的环境变量是否在 process.env 中设置 (来自 Secrets)
  const { passed, missingVars } = checkRequiredEnvVars();
  if (!passed) {
    console.error('\n错误: 缺少以下必要的环境变量:');
    missingVars.forEach(varName => {
      console.error(`  - ${varName}`);
    });
    console.error('\n请在 Hugging Face Space Secrets 中设置这些变量后重试。\n');
    process.exit(1); // 退出程序
  }

  console.log('环境检查通过,继续启动程序...');
}

module.exports = {
  checkRequiredEnvVars,
  enforceEnvCheck
};