AWin/aardiowin/lib/init.aardio

109 lines
2.8 KiB
Plaintext
Raw Normal View History

2024-08-20 06:19:23 +00:00
// 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() {
2024-08-20 07:40:27 +00:00
import io;
import util;
2024-08-20 06:19:23 +00:00
2024-08-20 07:40:27 +00:00
gLog.print("loadConfigs");
2024-08-20 06:19:23 +00:00
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);
}
2024-08-20 07:40:27 +00:00
gLog.print("configs", util.table.stringify(configs, true));
2024-08-20 06:19:23 +00:00
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);
}
}
}