#include"Managers/ActionManager.h" #include #include #include #include using std::cout; using std::endl; using std::string; using std::string_view; using std::vector; using Models::Flags; using Models::IcarusAction; namespace Managers { #pragma ActionManager::ActionManager(char **param, int paramCount) : params(std::move(param)), paramCount(paramCount) { initialize(); } #pragma Constructors #pragma IcarusAction ActionManager::retrieveIcarusAction() const { IcarusAction icarusAction; icarusAction.flags = flags; icarusAction.action = action; return icarusAction; } constexpr std::array ActionManager::supportedFlags() noexcept { constexpr std::array allFlags{"-u", "-p", "-t", "-h", "-s", "-sd", "-sr", "-d", "-D", "-b", "-rt", "-nc"}; return allFlags; } bool ActionManager::isNumber(string_view val) noexcept { return !val.empty() && std::find_if(val.begin(), val.end(), [](char c) { return !std::isdigit(c); }) == val.end(); } void ActionManager::initialize() { validateFlags(); action = std::move(string{params[1]}); transform(action.begin(), action.end(), action.begin(), ::tolower); } void ActionManager::validateFlags() { cout<<"Validating flags"< 3 || isNumber(flag)) { flg.value = flag; //cout<<"flag value "< ActionManager::parsedFlags() { auto parsed = vector(); for (auto i = 2; i < paramCount; ++i) { const std::string flag(std::move(*(params + i))); parsed.push_back(std::move(flag)); } return parsed; } #pragma void ActionManager::printAction() noexcept { if (action.empty()) { printf("Action is empty\n"); } else { cout<<"Action is "<