mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-28 07:44:06 +01:00
6eb3a8148b
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
66 lines
2.4 KiB
C
66 lines
2.4 KiB
C
#include "packages.h"
|
|
#include "common/io.h"
|
|
#include "common/parsing.h"
|
|
#include "common/processing.h"
|
|
#include "common/strutil.h"
|
|
|
|
static void countBrewPackages(FFstrbuf* baseDir, FFPackagesResult* result) {
|
|
uint32_t baseDirLength = baseDir->length;
|
|
|
|
ffStrbufAppendS(baseDir, "/Caskroom");
|
|
result->brewCask += ffPackagesGetNumElements(baseDir->chars, true);
|
|
ffStrbufSubstrBefore(baseDir, baseDirLength);
|
|
|
|
ffStrbufAppendS(baseDir, "/Cellar");
|
|
result->brew += ffPackagesGetNumElements(baseDir->chars, true);
|
|
ffStrbufSubstrBefore(baseDir, baseDirLength);
|
|
}
|
|
|
|
static uint32_t getMacPortsPackages(FFstrbuf* baseDir) {
|
|
ffStrbufAppendS(baseDir, "/var/macports/software");
|
|
return ffPackagesGetNumElements(baseDir->chars, true);
|
|
}
|
|
|
|
void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options) {
|
|
FF_STRBUF_AUTO_DESTROY baseDir = ffStrbufCreate();
|
|
if (FF_PACKAGES_IS_ENABLED(options, BREW)) {
|
|
const char* prefix = getenv("HOMEBREW_PREFIX");
|
|
if (ffStrSet(prefix)) {
|
|
ffStrbufSetS(&baseDir, prefix);
|
|
} else {
|
|
#ifdef __aarch64__
|
|
ffStrbufSetS(&baseDir, FASTFETCH_TARGET_DIR_ROOT "/opt/homebrew");
|
|
#else
|
|
ffStrbufSetS(&baseDir, FASTFETCH_TARGET_DIR_USR "/local");
|
|
#endif
|
|
}
|
|
countBrewPackages(&baseDir, result);
|
|
}
|
|
if (FF_PACKAGES_IS_ENABLED(options, MACPORTS)) {
|
|
const char* prefix = getenv("MACPORTS_PREFIX");
|
|
if (ffStrSet(prefix)) {
|
|
ffStrbufSetS(&baseDir, prefix);
|
|
} else {
|
|
ffStrbufSetS(&baseDir, FASTFETCH_TARGET_DIR_ROOT "/opt/local");
|
|
}
|
|
|
|
result->macports = getMacPortsPackages(&baseDir);
|
|
}
|
|
if (FF_PACKAGES_IS_ENABLED(options, PKGSRC)) {
|
|
const char* prefix = getenv("PKG_DBDIR");
|
|
if (ffStrSet(prefix)) {
|
|
result->pkgsrc = ffPackagesGetNumElements(prefix, true);
|
|
} else {
|
|
result->pkgsrc = ffPackagesGetNumElements(FASTFETCH_TARGET_DIR_ROOT "/usr/pkg/pkgdb", true);
|
|
}
|
|
}
|
|
if (FF_PACKAGES_IS_ENABLED(options, NIX)) {
|
|
ffStrbufSetS(&baseDir, FASTFETCH_TARGET_DIR_ROOT);
|
|
result->nixDefault += ffPackagesGetNix(&baseDir, "/nix/var/nix/profiles/default");
|
|
result->nixSystem += ffPackagesGetNix(&baseDir, "/run/current-system");
|
|
ffStrbufSet(&baseDir, &instance.state.platform.homeDir);
|
|
result->nixUser = ffPackagesGetNix(&baseDir, "/.nix-profile");
|
|
}
|
|
}
|
|
|