budget/src/main.cpp

65 lines
1.9 KiB
C++
Raw Normal View History

2022-08-04 18:22:48 -05:00
//
// Created by quentin on 8/3/22.
//
#include "main.h"
#include "data/accountData.h"
#include "optHandlers/accountOptHandler.h"
#include "optHandlers/mainOptHandler.h"
2022-08-04 18:22:48 -05:00
#include <pwd.h>
#include <unistd.h>
#include <string>
#include <filesystem>
#include <list>
2022-09-05 20:38:07 -05:00
#include <iostream>
using namespace Budget;
const std::string homeDirectory = getpwuid(getuid())->pw_dir;
2022-09-05 20:38:07 -05:00
const std::string configD = homeDirectory + "/.config/budget/";
const std::string storageD = homeDirectory + "/.local/share/budget/";
void createRequiredFolders() {
2022-09-05 20:38:07 -05:00
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<char *> args(argv, argv + argc);
2022-09-05 20:38:07 -05:00
std::cout << opterr;
2022-09-05 20:38:07 -05:00
// Parse main options (-ah)
OptHandlers::MainOptHandler mainOptHandler(args);
mainOptHandler.parse();
if (mainOptHandler.getSetOpts()->help)
mainOptHandler.help();
2022-09-05 20:38:07 -05:00
createRequiredFolders();
// Read all accounts saved and store them in accounts
std::list<AccountData> accounts;
for (const auto &file : std::filesystem::directory_iterator(
homeDirectory + "/.local/share/budget/accounts")) {
accounts.emplace_back(AccountData(file.path()));
}
// Parse account options if main options tells us to.
if (mainOptHandler.getSetOpts()->account) {
std::vector<char *> vec{argv[0]};
vec.insert(vec.end(), args.begin() + mainOptHandler.getSetOpts()->accountArgStart, args.end());
OptHandlers::AccountOptHandler accountOptHandler(vec);
accountOptHandler.parse();
2022-09-05 20:38:07 -05:00
// Do what we need to do for parsed options
if (accountOptHandler.getSetOpts()->help) {
accountOptHandler.help();
}
2022-09-05 20:38:07 -05:00
if (accountOptHandler.getSetOpts()->create) {
AccountData account(storageD + "accounts/" + accountOptHandler.getSetOpts()->createAccount + ".json");
}
}
return 0;
}