From d903ccb6f6982289ca813d4de79470c1da2b28f3 Mon Sep 17 00:00:00 2001 From: Slade Getz Date: Thu, 15 Sep 2022 14:17:33 -0600 Subject: [PATCH 1/2] Added support for MacPorts package manager --- src/modules/packages.c | 43 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/modules/packages.c b/src/modules/packages.c index e3b10c41c9..2e3e7767d7 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -28,6 +28,7 @@ typedef struct PackageCounts uint32_t flatpak; uint32_t snap; uint32_t brew; + uint32_t port; FFstrbuf pacmanBranch; } PackageCounts; @@ -222,6 +223,41 @@ static uint32_t getBrewPackages(FFstrbuf* baseDir) return result; } +static uint32_t countMacPortsPackages(FFstrbuf* baseDir) +{ + uint32_t result = 0; + uint32_t baseDirLength = baseDir->length; + + ffStrbufAppendS(baseDir, "/var/macports/software"); + result += getNumElements(baseDir->chars, DT_DIR); + ffStrbufSubstrBefore(baseDir, baseDirLength); + + return result; +} + +static uint32_t getMacPortsPackages(FFstrbuf* baseDir) +{ + uint32_t result = 0; + uint32_t baseDirLength = baseDir->length; + + const char* prefix = getenv("MACPORTS_PREFIX"); + bool prefixSet = ffStrSet(prefix); + + if(prefixSet) + { + ffStrbufAppendS(baseDir, prefix); + result += countMacPortsPackages(baseDir); + ffStrbufSubstrBefore(baseDir, baseDirLength); + } + + ffStrbufAppendS(baseDir, "/opt/local"); + if(!prefixSet || strcasecmp(baseDir->chars, prefix) != 0) + result += countMacPortsPackages(baseDir); + ffStrbufSubstrBefore(baseDir, baseDirLength); + + return result; +} + #endif // __APPLE__ #ifdef FF_HAVE_RPM @@ -353,6 +389,7 @@ static void getPackageCounts(const FFinstance* instance, FFstrbuf* baseDir, Pack //brew packageCounts->brew += getBrewPackages(baseDir); + packageCounts->port += getMacPortsPackages(baseDir); #endif // __APPLE__ } @@ -421,7 +458,7 @@ void ffPrintPackages(FFinstance* instance) ffStrbufDestroy(&baseDir); - uint32_t all = counts.pacman + counts.dpkg + counts.rpm + counts.emerge + counts.xbps + counts.nixSystem + nixUser + counts.nixDefault + counts.apk + counts.flatpak + counts.snap + counts.brew; + uint32_t all = counts.pacman + counts.dpkg + counts.rpm + counts.emerge + counts.xbps + counts.nixSystem + nixUser + counts.nixDefault + counts.apk + counts.flatpak + counts.snap + counts.brew + counts.port; if(all == 0) { ffPrintError(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packages, "No packages from known package managers found"); @@ -479,6 +516,7 @@ void ffPrintPackages(FFinstance* instance) FF_PRINT_PACKAGE(flatpak) FF_PRINT_PACKAGE(snap) FF_PRINT_PACKAGE(brew) + FF_PRINT_PACKAGE(port) //Fix linter warning of unused value of all (void) all; @@ -503,7 +541,8 @@ void ffPrintPackages(FFinstance* instance) {FF_FORMAT_ARG_TYPE_UINT, &counts.apk}, {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.brew}, + {FF_FORMAT_ARG_TYPE_UINT, &counts.port} }); } From 73095ef9e9656c4988c5143bc3070ad4b5918b14 Mon Sep 17 00:00:00 2001 From: Slade Getz Date: Fri, 16 Sep 2022 11:08:10 -0600 Subject: [PATCH 2/2] Increased FF_PACKAGE_NUM_FORMAT_ARGS by 1 in src/modules/packages.c. Modified the help output in src/fastfetch.c. Added MacPorts pkg mngr to the README.md. --- README.md | 2 +- src/fastfetch.c | 5 +++-- src/modules/packages.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a3a6a07db4..12940d85c5 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ AlmaLinux, Alpine, Android, Arch, Arco, Artix, Bedrock, CachyOS, CentOS, Debian, ##### Package managers ``` -Pacman, dpkg, rpm, emerge, xbps, nix, Flatpak, Snap, apk, brew +Pacman, dpkg, rpm, emerge, xbps, nix, Flatpak, Snap, apk, brew, MacPorts ``` ##### WM themes diff --git a/src/fastfetch.c b/src/fastfetch.c index 17f5cab304..af2e898e95 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -114,7 +114,7 @@ static inline void printCommandHelp(const char* command) } else if(strcasecmp(command, "packages-format") == 0) { - constructAndPrintCommandHelpFormat("packages", "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (xbps), {8} (nix-system), {9} (nix-user), {10} (nix-default), {11} (apk), {12} (flatpak), {13} (snap), {14} (brew)", 14, + constructAndPrintCommandHelpFormat("packages", "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (xbps), {8} (nix-system), {9} (nix-user), {10} (nix-default), {11} (apk), {12} (flatpak), {13} (snap), {14} (brew), {15} (port)", 15, "Number of all packages", "Number of pacman packages", "Pacman branch on manjaro", @@ -128,7 +128,8 @@ static inline void printCommandHelp(const char* command) "Number of apk packages", "Number of flatpak packages", "Number of snap packages", - "Number of brew packages" + "Number of brew packages", + "Number of macports packages" ); } else if(strcasecmp(command, "shell-format") == 0) diff --git a/src/modules/packages.c b/src/modules/packages.c index 2e3e7767d7..82b9916508 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -13,7 +13,7 @@ #include #define FF_PACKAGES_MODULE_NAME "Packages" -#define FF_PACKAGES_NUM_FORMAT_ARGS 14 +#define FF_PACKAGES_NUM_FORMAT_ARGS 15 typedef struct PackageCounts {