mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
Merge pull request #234 from SladeGetz/macports_expansion
Added support for MacPorts package manager
This commit is contained in:
@@ -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
|
||||
|
||||
+3
-2
@@ -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)
|
||||
|
||||
+42
-3
@@ -13,7 +13,7 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define FF_PACKAGES_MODULE_NAME "Packages"
|
||||
#define FF_PACKAGES_NUM_FORMAT_ARGS 14
|
||||
#define FF_PACKAGES_NUM_FORMAT_ARGS 15
|
||||
|
||||
typedef struct PackageCounts
|
||||
{
|
||||
@@ -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}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user