Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions src/fastfetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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)
Expand Down
45 changes: 42 additions & 3 deletions src/modules/packages.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -28,6 +28,7 @@ typedef struct PackageCounts
uint32_t flatpak;
uint32_t snap;
uint32_t brew;
uint32_t port;

FFstrbuf pacmanBranch;
} PackageCounts;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -353,6 +389,7 @@ static void getPackageCounts(const FFinstance* instance, FFstrbuf* baseDir, Pack

//brew
packageCounts->brew += getBrewPackages(baseDir);
packageCounts->port += getMacPortsPackages(baseDir);

#endif // __APPLE__
}
Expand Down Expand Up @@ -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");
Expand Down Expand Up @@ -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;
Expand 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}
});
}

Expand Down