// init 初始化 import log // 临时日志 var gLog = log( "awin" ); var gDebug = false; namespace init{ import fsys import string import web.json // 日志对象 getDebug = function(){ return gDebug; } // 日志对象 getLog = function(){ return gLog; } // 配置载入函数 loadConfigs = function() { gLog.print("dir"); var configs = {}; var currentPath = fsys.getCurDir(); gLog.print("currentPath", currentPath); var appDataPath = string.getenv("APPDATA"); gLog.print("appDataPath", appDataPath); // 读取当前路径下的 config.json var currentConfigPath = currentPath ++ "/config.json"; if (io.exist(currentConfigPath)) { var currentConfigContent = string.load(currentConfigPath); configs = web.json.parse(currentConfigContent); } // 从当前路径下的 config.json 中读取 app 值 var appValue = configs.app; if (!appValue) { error("'app' value not found in the config file."); } gLog.print("app", appValue); // 构建 %APPDATA%/%app% 路径 var appDir = appDataPath ++ "/" ++ appValue; if (! io.exist( appDir )) { fsys.createDir( appDir ) } var appDataConfigPath = appDataPath ++ "/" ++ appValue ++ "/config.json"; // 读取 %APPDATA%/%app% 路径下的 config.json if (io.exist(appDataConfigPath)) { var appDataConfigContent = string.load(appDataConfigPath); var appDataConfig = web.json.parse(appDataConfigContent); // 合并配置,后读取的覆盖先读取的 object.merge(configs, appDataConfig, true); } return configs; }; checkConfig = function (config){ if( ! config.window ){ config.window = {} } if( ! config.window.width ) { config.window.width = 500 } if( ! config.window.height ) { config.window.height = 500 } return config; } /* 载入配置,配置文件读取顺序,后读的可以覆盖先读的值。 1. 读取当前路径下的 config.json 2. 读取 %APPDATA%/%app% 路径下的 config.json。其中 %APPDATA% 为操作系统提供的当前用户软件目录。 %app% 为当前路径下的 config.json 中配置的 app */ init = function(){ gLog.print("init") gConfig = {} // 使用示例 try { gLog.print("loadConfigs") io.print("") gConfig = loadConfigs() io.print("2") gConfig = checkConfig( gConfig ) gLog.print(configs); } catch (e) { io.print("错误会中断try语句块" ++ e) gLog.print(e); } } }