diff --git a/src/package.cpp b/src/package.cpp index 7d23c72..f60b283 100644 --- a/src/package.cpp +++ b/src/package.cpp @@ -42,7 +42,13 @@ void Package::install() void Package::list(const std::vector& targets) { - std::string packages = getPackageList(); + auto packagesOrEmpty = getPackageList(); + + if (!packagesOrEmpty.has_value()) { + return; + } + + std::string packages = packagesOrEmpty.value(); if (targets.empty()) { printf("%s", packages.c_str()); @@ -68,11 +74,15 @@ void Package::list(const std::vector& targets) void Package::store() { - std::string packages = getPackageList(); + auto packagesOrEmpty = getPackageList(); + + if (!packagesOrEmpty.has_value()) { + return; + } auto packageFile = Util::File::create("./packages"); packageFile.clear(); - packageFile.append(packages); + packageFile.append(packagesOrEmpty.value()); packageFile.flush(); } @@ -210,10 +220,11 @@ bool Package::distroDependencies() return true; } -std::string Package::getPackageList() +std::optional Package::getPackageList() { - distroDetect(); - distroDependencies(); + if (!distroDetect() || !distroDependencies()) { + return {}; + } std::string packages; diff --git a/src/package.h b/src/package.h index 7cee90f..ff6ad90 100644 --- a/src/package.h +++ b/src/package.h @@ -39,7 +39,7 @@ private: bool findDependency(const std::string& search); bool distroDetect(); bool distroDependencies(); - std::string getPackageList(); + std::optional getPackageList(); Distro m_distro { Distro::Unsupported }; };