diff --git a/doc/json_schema.json b/doc/json_schema.json index 23b06183..9b6b2d4c 100644 --- a/doc/json_schema.json +++ b/doc/json_schema.json @@ -2641,6 +2641,7 @@ "eopkg", "flatpak", "guix", + "hpkg", "linglong", "lpkg", "lpkgbuild", diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index b4e898d0..5e91173a 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -18,6 +18,8 @@ typedef struct FFPackagesResult uint32_t guixHome; uint32_t guixSystem; uint32_t guixUser; + uint32_t hpkgSystem; + uint32_t hpkgUser; uint32_t linglong; uint32_t lpkg; uint32_t lpkgbuild; diff --git a/src/detection/packages/packages_haiku.c b/src/detection/packages/packages_haiku.c index b66edefb..b48062a8 100644 --- a/src/detection/packages/packages_haiku.c +++ b/src/detection/packages/packages_haiku.c @@ -6,8 +6,9 @@ void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options) { // TODO: Use the Package Kit C++ API instead (would account for disabled packages) - if (!(options->disabled & FF_PACKAGES_FLAG_PKG_BIT)) - result->pkg = ffPackagesGetNumElements(FASTFETCH_TARGET_DIR_ROOT "/system/packages", false); - if (!(options->disabled & FF_PACKAGES_FLAG_PKGSRC_BIT)) - result->pkgsrc = ffPackagesGetNumElements(FASTFETCH_TARGET_DIR_ROOT "/boot/home/config/packages", false); + if (!(options->disabled & FF_PACKAGES_FLAG_HPKG_BIT)) + { + result->hpkgSystem = ffPackagesGetNumElements(FASTFETCH_TARGET_DIR_ROOT "/system/packages", false); + result->hpkgUser = ffPackagesGetNumElements(FASTFETCH_TARGET_DIR_ROOT "/boot/home/config/packages", false); + } } diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h index 726d74bb..a7b7255c 100644 --- a/src/modules/packages/option.h +++ b/src/modules/packages/option.h @@ -36,6 +36,7 @@ typedef enum __attribute__((__packed__)) FFPackagesFlags FF_PACKAGES_FLAG_MPORT_BIT = 1 << 26, FF_PACKAGES_FLAG_QI_BIT = 1 << 27, FF_PACKAGES_FLAG_PKGSRC_BIT = 1 << 28, + FF_PACKAGES_FLAG_HPKG_BIT = 1 << 29, FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT32_MAX, } FFPackagesFlags; static_assert(sizeof(FFPackagesFlags) == sizeof(uint32_t), ""); diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 6788d37d..8d8f986b 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -51,6 +51,8 @@ void ffPrintPackages(FFPackagesOptions* options) FF_PRINT_PACKAGE(apk) FF_PRINT_PACKAGE(pkg) FF_PRINT_PACKAGE(pkgsrc) + FF_PRINT_PACKAGE_NAME(hpkgSystem, counts.hpkgUser ? "hpkg-system" : "hpkg") + FF_PRINT_PACKAGE_NAME(hpkgUser, "hpkg-user") FF_PRINT_PACKAGE_NAME(flatpakSystem, counts.flatpakUser ? "flatpak-system" : "flatpak") FF_PRINT_PACKAGE_NAME(flatpakUser, "flatpak-user") FF_PRINT_PACKAGE(snap) @@ -84,6 +86,7 @@ void ffPrintPackages(FFPackagesOptions* options) uint32_t flatpakAll = counts.flatpakSystem + counts.flatpakUser; uint32_t brewAll = counts.brew + counts.brewCask; uint32_t guixAll = counts.guixSystem + counts.guixUser + counts.guixHome; + uint32_t hpkgAll = counts.hpkgSystem + counts.hpkgUser; FF_PRINT_FORMAT_CHECKED(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, ((FFformatarg[]){ FF_FORMAT_ARG(counts.all, "all"), FF_FORMAT_ARG(counts.pacman, "pacman"), @@ -123,10 +126,13 @@ void ffPrintPackages(FFPackagesOptions* options) FF_FORMAT_ARG(counts.qi, "qi"), FF_FORMAT_ARG(counts.amUser, "am-user"), FF_FORMAT_ARG(counts.pkgsrc, "pkgsrc"), + FF_FORMAT_ARG(counts.hpkgSystem, "hpkg-system"), + FF_FORMAT_ARG(counts.hpkgUser, "hpkg-user"), FF_FORMAT_ARG(nixAll, "nix-all"), FF_FORMAT_ARG(flatpakAll, "flatpak-all"), FF_FORMAT_ARG(brewAll, "brew-all"), FF_FORMAT_ARG(guixAll, "guix-all"), + FF_FORMAT_ARG(hpkgAll, "hpkg-all"), })); } @@ -178,6 +184,9 @@ bool ffParsePackagesCommandOptions(FFPackagesOptions* options, const char* key, case 'G': if (false); FF_TEST_PACKAGE_NAME(GUIX) break; + case 'H': if (false); + FF_TEST_PACKAGE_NAME(HPKG) + break; case 'L': if (false); FF_TEST_PACKAGE_NAME(LPKG) FF_TEST_PACKAGE_NAME(LPKGBUILD) @@ -293,6 +302,9 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) case 'G': if (false); FF_TEST_PACKAGE_NAME(GUIX) break; + case 'H': if (false); + FF_TEST_PACKAGE_NAME(HPKG) + break; case 'L': if (false); FF_TEST_PACKAGE_NAME(LPKG) FF_TEST_PACKAGE_NAME(LPKGBUILD) @@ -365,6 +377,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do FF_TEST_PACKAGE_NAME(EOPKG) FF_TEST_PACKAGE_NAME(FLATPAK) FF_TEST_PACKAGE_NAME(GUIX) + FF_TEST_PACKAGE_NAME(HPKG) FF_TEST_PACKAGE_NAME(LINGLONG) FF_TEST_PACKAGE_NAME(LPKG) FF_TEST_PACKAGE_NAME(LPKGBUILD) @@ -421,6 +434,8 @@ void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy FF_APPEND_PACKAGE_COUNT(guixSystem) FF_APPEND_PACKAGE_COUNT(guixUser) FF_APPEND_PACKAGE_COUNT(guixHome) + FF_APPEND_PACKAGE_COUNT(hpkgSystem) + FF_APPEND_PACKAGE_COUNT(hpkgUser) FF_APPEND_PACKAGE_COUNT(linglong) FF_APPEND_PACKAGE_COUNT(mport) FF_APPEND_PACKAGE_COUNT(nixDefault) @@ -491,10 +506,13 @@ static FFModuleBaseInfo ffModuleInfo = { {"Number of qi packages", "qi"}, {"Number of am-user (aka appman) packages", "am-user"}, {"Number of pkgsrc packages", "pkgsrc"}, + {"Number of hpkg-system packages", "hpkg-system"}, + {"Number of hpkg-user packages", "hpkg-user"}, {"Total number of all nix packages", "nix-all"}, {"Total number of all flatpak app packages", "flatpak-all"}, {"Total number of all brew packages", "brew-all"}, {"Total number of all guix packages", "guix-all"}, + {"Total number of all hpkg packages", "hpkg-all"}, })) };