Merge pull request #234 from SladeGetz/macports_expansion

Added support for MacPorts package manager
This commit is contained in:
Linus Dierheimer
2022-09-16 19:24:34 +02:00
committed by GitHub
3 changed files with 46 additions and 6 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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}
});
}