mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 09:58:03 +02:00
JsonConfig: make all non-module keys case-sensitive
This commit is contained in:
+21
-25
@@ -13,13 +13,11 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
if (!object) return NULL;
|
||||
if (!yyjson_is_obj(object)) return "Property 'display' must be an object";
|
||||
|
||||
yyjson_val *key_, *val;
|
||||
yyjson_val *key, *val;
|
||||
size_t idx, max;
|
||||
yyjson_obj_foreach(object, idx, max, key_, val)
|
||||
yyjson_obj_foreach(object, idx, max, key, val)
|
||||
{
|
||||
const char* key = yyjson_get_str(key_);
|
||||
|
||||
if (ffStrEqualsIgnCase(key, "stat"))
|
||||
if (unsafe_yyjson_equals_str(key, "stat"))
|
||||
{
|
||||
if (yyjson_is_bool(val))
|
||||
{
|
||||
@@ -39,21 +37,21 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
else
|
||||
return "display.stat must be a boolean or a positive integer";
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "pipe"))
|
||||
else if (unsafe_yyjson_equals_str(key, "pipe"))
|
||||
options->pipe = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "showErrors"))
|
||||
else if (unsafe_yyjson_equals_str(key, "showErrors"))
|
||||
options->showErrors = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "disableLinewrap"))
|
||||
else if (unsafe_yyjson_equals_str(key, "disableLinewrap"))
|
||||
options->disableLinewrap = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "hideCursor"))
|
||||
else if (unsafe_yyjson_equals_str(key, "hideCursor"))
|
||||
options->hideCursor = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "separator"))
|
||||
else if (unsafe_yyjson_equals_str(key, "separator"))
|
||||
ffStrbufSetJsonVal(&options->keyValueSeparator, val);
|
||||
else if (ffStrEqualsIgnCase(key, "color"))
|
||||
else if (unsafe_yyjson_equals_str(key, "color"))
|
||||
{
|
||||
if (yyjson_is_str(val))
|
||||
{
|
||||
ffOptionParseColor(yyjson_get_str(val), &options->colorKeys);
|
||||
ffOptionParseColor(unsafe_yyjson_get_str(val), &options->colorKeys);
|
||||
ffStrbufSet(&options->colorTitle, &options->colorKeys);
|
||||
}
|
||||
else if (yyjson_is_obj(val))
|
||||
@@ -74,9 +72,9 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
else
|
||||
return "display.color must be either a string or an object";
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "brightColor"))
|
||||
else if (unsafe_yyjson_equals_str(key, "brightColor"))
|
||||
options->brightColor = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "duration"))
|
||||
else if (unsafe_yyjson_equals_str(key, "duration"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "display.duration must be an object";
|
||||
@@ -98,7 +96,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
options->durationSpaceBeforeUnit = (FFSpaceBeforeUnitType) value;
|
||||
}
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "size"))
|
||||
else if (unsafe_yyjson_equals_str(key, "size"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "display.size must be an object";
|
||||
@@ -154,7 +152,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
options->sizeSpaceBeforeUnit = (FFSpaceBeforeUnitType) value;
|
||||
}
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "temp"))
|
||||
else if (unsafe_yyjson_equals_str(key, "temp"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "display.temp must be an object";
|
||||
@@ -211,7 +209,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
options->tempSpaceBeforeUnit = (FFSpaceBeforeUnitType) value;
|
||||
}
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "percent"))
|
||||
else if (unsafe_yyjson_equals_str(key, "percent"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "display.percent must be an object";
|
||||
@@ -259,7 +257,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
yyjson_val* width = yyjson_obj_get(val, "width");
|
||||
if (width) options->percentWidth = (uint8_t) yyjson_get_uint(width);
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "bar"))
|
||||
else if (unsafe_yyjson_equals_str(key, "bar"))
|
||||
{
|
||||
if (yyjson_is_obj(val))
|
||||
{
|
||||
@@ -369,7 +367,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
else
|
||||
return "display.bar must be an object";
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "fraction"))
|
||||
else if (unsafe_yyjson_equals_str(key, "fraction"))
|
||||
{
|
||||
if (yyjson_is_obj(val))
|
||||
{
|
||||
@@ -386,11 +384,9 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
else
|
||||
return "display.fraction must be an object";
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "noBuffer"))
|
||||
else if (unsafe_yyjson_equals_str(key, "noBuffer"))
|
||||
options->noBuffer = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "keyWidth"))
|
||||
return "display.keyWidth has been renamed to display.key.width";
|
||||
else if (ffStrEqualsIgnCase(key, "key"))
|
||||
else if (unsafe_yyjson_equals_str(key, "key"))
|
||||
{
|
||||
if (yyjson_is_obj(val))
|
||||
{
|
||||
@@ -420,7 +416,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
else
|
||||
return "display.key must be an object";
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "constants"))
|
||||
else if (unsafe_yyjson_equals_str(key, "constants"))
|
||||
{
|
||||
if (!yyjson_is_arr(val))
|
||||
return "display.constants must be an array";
|
||||
@@ -429,7 +425,7 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va
|
||||
yyjson_arr_foreach(val, idx, max, item)
|
||||
ffStrbufInitJsonVal(ffListAdd(&options->constants), item);
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "freq"))
|
||||
else if (unsafe_yyjson_equals_str(key, "freq"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "display.freq must be an object";
|
||||
|
||||
+10
-10
@@ -12,30 +12,28 @@ const char* ffOptionsParseGeneralJsonConfig(FFOptionsGeneral* options, yyjson_va
|
||||
if (!object) return NULL;
|
||||
if (!yyjson_is_obj(object)) return "Property 'general' must be an object";
|
||||
|
||||
yyjson_val *key_, *val;
|
||||
yyjson_val *key, *val;
|
||||
size_t idx, max;
|
||||
yyjson_obj_foreach(object, idx, max, key_, val)
|
||||
yyjson_obj_foreach(object, idx, max, key, val)
|
||||
{
|
||||
const char* key = yyjson_get_str(key_);
|
||||
|
||||
if (ffStrEqualsIgnCase(key, "thread"))
|
||||
if (unsafe_yyjson_equals_str(key, "thread"))
|
||||
options->multithreading = yyjson_get_bool(val);
|
||||
else if (ffStrEqualsIgnCase(key, "processingTimeout"))
|
||||
else if (unsafe_yyjson_equals_str(key, "processingTimeout"))
|
||||
options->processingTimeout = (int32_t) yyjson_get_int(val);
|
||||
else if (ffStrEqualsIgnCase(key, "preRun"))
|
||||
else if (unsafe_yyjson_equals_str(key, "preRun"))
|
||||
{
|
||||
if (!yyjson_is_str(val))
|
||||
return "general.preRun must be a string";
|
||||
if (system(unsafe_yyjson_get_str(val)) < 0)
|
||||
return "Failed to execute preRun command";
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "detectVersion"))
|
||||
else if (unsafe_yyjson_equals_str(key, "detectVersion"))
|
||||
options->detectVersion = yyjson_get_bool(val);
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__sun) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__HAIKU__)
|
||||
else if (ffStrEqualsIgnCase(key, "playerName"))
|
||||
else if (unsafe_yyjson_equals_str(key, "playerName"))
|
||||
ffStrbufSetJsonVal(&options->playerName, val);
|
||||
else if (ffStrEqualsIgnCase(key, "dsForceDrm"))
|
||||
else if (unsafe_yyjson_equals_str(key, "dsForceDrm"))
|
||||
{
|
||||
if (yyjson_is_str(val))
|
||||
{
|
||||
@@ -127,6 +125,8 @@ void ffOptionsGenerateGeneralJsonConfig(FFOptionsGeneral* options, yyjson_mut_do
|
||||
|
||||
yyjson_mut_obj_add_int(doc, obj, "processingTimeout", options->processingTimeout);
|
||||
|
||||
yyjson_mut_obj_add_bool(doc, obj, "detectVersion", options->detectVersion);
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__sun) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__HAIKU__)
|
||||
|
||||
yyjson_mut_obj_add_strbuf(doc, obj, "playerName", &options->playerName);
|
||||
|
||||
+16
-21
@@ -269,13 +269,11 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
|
||||
if (!yyjson_is_obj(object)) return "Property 'logo' must be an object";
|
||||
|
||||
yyjson_val *key_, *val;
|
||||
yyjson_val *key, *val;
|
||||
size_t idx, max;
|
||||
yyjson_obj_foreach(object, idx, max, key_, val)
|
||||
yyjson_obj_foreach(object, idx, max, key, val)
|
||||
{
|
||||
const char* key = yyjson_get_str(key_);
|
||||
|
||||
if (ffStrEqualsIgnCase(key, "type"))
|
||||
if (unsafe_yyjson_equals_str(key, "type"))
|
||||
{
|
||||
int value;
|
||||
const char* error = ffJsonConfigParseEnum(val, &value, (FFKeyValuePair[]) {
|
||||
@@ -302,22 +300,21 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
options->type = (FFLogoType) value;
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "source"))
|
||||
else if (unsafe_yyjson_equals_str(key, "source"))
|
||||
{
|
||||
ffStrbufSetJsonVal(&options->source, val);
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "color"))
|
||||
else if (unsafe_yyjson_equals_str(key, "color"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "Property 'color' must be an object";
|
||||
|
||||
yyjson_val *key_c, *valc;
|
||||
yyjson_val *keyc, *valc;
|
||||
size_t idxc, maxc;
|
||||
yyjson_obj_foreach(val, idxc, maxc, key_c, valc)
|
||||
yyjson_obj_foreach(val, idxc, maxc, keyc, valc)
|
||||
{
|
||||
const char* keyc = yyjson_get_str(key_c);
|
||||
uint32_t index = (uint32_t) strtoul(keyc, NULL, 10);
|
||||
uint32_t index = (uint32_t) strtoul(unsafe_yyjson_get_str(keyc), NULL, 10);
|
||||
if (index < 1 || index > FASTFETCH_LOGO_MAX_COLORS)
|
||||
return "Keys of property 'color' must be a number between 1 to 9";
|
||||
|
||||
@@ -325,7 +322,7 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "width"))
|
||||
else if (unsafe_yyjson_equals_str(key, "width"))
|
||||
{
|
||||
if (yyjson_is_null(val))
|
||||
options->width = 0;
|
||||
@@ -338,7 +335,7 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "height"))
|
||||
else if (unsafe_yyjson_equals_str(key, "height"))
|
||||
{
|
||||
if (yyjson_is_null(val))
|
||||
options->height = 0;
|
||||
@@ -351,7 +348,7 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "padding"))
|
||||
else if (unsafe_yyjson_equals_str(key, "padding"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "Logo padding must be an object";
|
||||
@@ -370,24 +367,22 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
#undef FF_PARSE_PADDING_POSITON
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "printRemaining"))
|
||||
else if (unsafe_yyjson_equals_str(key, "printRemaining"))
|
||||
{
|
||||
options->printRemaining = yyjson_get_bool(val);
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "preserveAspectRatio"))
|
||||
else if (unsafe_yyjson_equals_str(key, "preserveAspectRatio"))
|
||||
{
|
||||
options->preserveAspectRatio = yyjson_get_bool(val);
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "recache"))
|
||||
else if (unsafe_yyjson_equals_str(key, "recache"))
|
||||
{
|
||||
options->recache = yyjson_get_bool(val);
|
||||
continue;
|
||||
}
|
||||
else if(ffStrEqualsIgnCase(key, "separate"))
|
||||
return "logo.separate has been renamed to logo.position\n";
|
||||
else if (ffStrEqualsIgnCase(key, "position"))
|
||||
else if (unsafe_yyjson_equals_str(key, "position"))
|
||||
{
|
||||
int value;
|
||||
const char* error = ffJsonConfigParseEnum(val, &value, (FFKeyValuePair[]) {
|
||||
@@ -401,7 +396,7 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo
|
||||
options->position = (FFLogoPosition) value;
|
||||
continue;
|
||||
}
|
||||
else if (ffStrEqualsIgnCase(key, "chafa"))
|
||||
else if (unsafe_yyjson_equals_str(key, "chafa"))
|
||||
{
|
||||
if (!yyjson_is_obj(val))
|
||||
return "Chafa config must be an object";
|
||||
|
||||
Reference in New Issue
Block a user