From 3b2c189083aed9489cefd9aee0f148efab078b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 13 Dec 2022 10:57:40 +0800 Subject: [PATCH] Packages: split brew-cellar and brew-cask (macOS) `brew info` shows number of `brew-cellar` packages only. Split `brew-cellar` out of `brew` to avoid users from confusion. --- presets/verbose | 2 +- src/detection/packages/packages.h | 1 + src/detection/packages/packages_apple.c | 21 ++++++++------------- src/modules/packages.c | 7 +++++-- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/presets/verbose b/presets/verbose index 3ab55d1c0..e9f09e939 100644 --- a/presets/verbose +++ b/presets/verbose @@ -3,7 +3,7 @@ --kernel-format Sysname: {}; Release: {}; Version: {} --uptime-format Days: {}; Hours: {}; Minutes: {}; Seconds: {} --processes-format Count: {} ---packages-format All: {}; pacman: {}; pacman branch: {}; dpkg: {}; rpm: {}; emerge: {}; xbps: {}; apk: {}; flatpak: {}; snap: {}; brew: {} +--packages-format All: {}; pacman: {}; pacman branch: {}; dpkg: {}; rpm: {}; emerge: {}; xbps: {}; apk: {}; flatpak: {}; snap: {}; brew: {}; brew-cask: {}; port: {}; scoop: {}; choco: {} --shell-format Process name: {}; Process path: {}; Process exe: {}; Process version: {}; User path: {}; User exe: {}; User version: {} --resolution-format Width: {}; Height: {}; Refresh rate: {} --de-format Process name: {}; Pretty name: {}; Version: {} diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index 1992b8d8d..ca8b3feea 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -9,6 +9,7 @@ typedef struct FFPackagesResult { uint32_t apk; uint32_t brew; + uint32_t brewCask; uint32_t choco; uint32_t dpkg; uint32_t emerge; diff --git a/src/detection/packages/packages_apple.c b/src/detection/packages/packages_apple.c index e1323e1e5..b8bc8a682 100644 --- a/src/detection/packages/packages_apple.c +++ b/src/detection/packages/packages_apple.c @@ -25,35 +25,30 @@ static uint32_t getNumElements(const char* dirname, unsigned char type) return num_elements; } -static uint32_t countBrewPackages(const char* dirname) +static void countBrewPackages(const char* dirname, FFPackagesResult* result) { FF_STRBUF_AUTO_DESTROY baseDir; ffStrbufInitS(&baseDir, dirname); - uint32_t result = 0; uint32_t baseDirLength = baseDir.length; ffStrbufAppendS(&baseDir, "/Caskroom"); - result += getNumElements(baseDir.chars, DT_DIR); + result->brewCask += getNumElements(baseDir.chars, DT_DIR); ffStrbufSubstrBefore(&baseDir, baseDirLength); ffStrbufAppendS(&baseDir, "/Cellar"); - result += getNumElements(baseDir.chars, DT_DIR); + result->brew += getNumElements(baseDir.chars, DT_DIR); ffStrbufSubstrBefore(&baseDir, baseDirLength); - - return result; } -static uint32_t getBrewPackages() +static void getBrewPackages(FFPackagesResult* result) { const char* prefix = getenv("HOMEBREW_PREFIX"); if(ffStrSet(prefix)) - return countBrewPackages(prefix); + return countBrewPackages(prefix, result); - uint32_t result = 0; - result += countBrewPackages(FASTFETCH_TARGET_DIR_ROOT"/opt/homebrew"); - result += countBrewPackages(FASTFETCH_TARGET_DIR_ROOT"/usr/local"); - return result; + countBrewPackages(FASTFETCH_TARGET_DIR_ROOT"/opt/homebrew", result); + countBrewPackages(FASTFETCH_TARGET_DIR_ROOT"/usr/local", result); } static uint32_t countMacPortsPackages(const char* dirname) @@ -77,6 +72,6 @@ static uint32_t getMacPortsPackages() void ffDetectPackagesImpl(const FFinstance* instance, FFPackagesResult* result) { FF_UNUSED(instance); - result->brew = getBrewPackages(); + getBrewPackages(result); result->port = getMacPortsPackages(); } diff --git a/src/modules/packages.c b/src/modules/packages.c index 3f9d6d990..799ab0d3c 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -3,7 +3,7 @@ #include "detection/packages/packages.h" #define FF_PACKAGES_MODULE_NAME "Packages" -#define FF_PACKAGES_NUM_FORMAT_ARGS 17 +#define FF_PACKAGES_NUM_FORMAT_ARGS 19 void ffPrintPackages(FFinstance* instance) { @@ -51,6 +51,7 @@ void ffPrintPackages(FFinstance* instance) FF_PRINT_PACKAGE(flatpak) FF_PRINT_PACKAGE(snap) FF_PRINT_PACKAGE(brew) + FF_PRINT_PACKAGE_NAME(brewCask, "brew-cask") FF_PRINT_PACKAGE(port) FF_PRINT_PACKAGE(scoop) FF_PRINT_PACKAGE(choco) @@ -78,8 +79,10 @@ void ffPrintPackages(FFinstance* instance) {FF_FORMAT_ARG_TYPE_UINT, &counts->flatpak}, {FF_FORMAT_ARG_TYPE_UINT, &counts->snap}, {FF_FORMAT_ARG_TYPE_UINT, &counts->brew}, + {FF_FORMAT_ARG_TYPE_UINT, &counts->brewCask}, {FF_FORMAT_ARG_TYPE_UINT, &counts->port}, - {FF_FORMAT_ARG_TYPE_UINT, &counts->scoop} + {FF_FORMAT_ARG_TYPE_UINT, &counts->scoop}, + {FF_FORMAT_ARG_TYPE_UINT, &counts->choco}, }); } }