// // Created by quentin on 8/3/22. // #include "main.h" #include "data/accountData.h" #include "optHandlers/accountOptHandler.h" #include "optHandlers/mainOptHandler.h" #include #include #include #include #include using namespace Budget; const std::string homeDirectory = getpwuid(getuid())->pw_dir; const std::string configD = homeDirectory + "/.config/budget/"; const std::string storageD = homeDirectory + "/.local/share/budget/"; void createRequiredFolders() { std::filesystem::create_directory(configD); std::filesystem::create_directories(storageD); std::filesystem::create_directories(storageD + "accounts"); std::filesystem::create_directories(storageD + "receipts"); } int main(int argc, char *argv[]) { std::vector args(argv, argv + argc); // Parse main options (-ah) OptHandlers::MainOptHandler mainOptHandler(args); mainOptHandler.parse(); if (mainOptHandler.getSetOpts()->help) mainOptHandler.help(); createRequiredFolders(); // Read all accounts saved and store them in accounts std::list accounts; for (const auto &file : std::filesystem::directory_iterator( homeDirectory + "/.local/share/budget/accounts")) { accounts.emplace_back(file.path()); } // Parse account options if main options tells us to. if (mainOptHandler.getSetOpts()->account) { std::vector vec{argv[0]}; vec.insert(vec.end(), args.begin() + mainOptHandler.getSetOpts()->accountArgStart, args.end()); OptHandlers::AccountOptHandler accountOptHandler(vec); accountOptHandler.parse(); // Do what we need to do for parsed options if (accountOptHandler.getSetOpts()->help) { accountOptHandler.help(); } if (accountOptHandler.getSetOpts()->create) { accounts.emplace_back(storageD + "accounts/" + accountOptHandler.getSetOpts()->createAccount + ".json", accountOptHandler.getSetOpts()->createAccount); } } return 0; }