MainOptHandler for the first parse of argv

This commit is contained in:
quentin 2022-08-13 18:42:16 -05:00
parent 03d84ef9ee
commit a3efa59ebb
4 changed files with 88 additions and 3 deletions

View File

@ -12,4 +12,5 @@ add_executable(${PROJECT_NAME} src/main.cpp src/main.h
src/money/earning.cpp src/money/earning.h
src/data/dateMoney.cpp src/data/dateMoney.h
src/optHandlers/optHandler.cpp src/optHandlers/optHandler.h
src/optHandlers/accountOptHandler.cpp src/optHandlers/accountOptHandler.h)
src/optHandlers/accountOptHandler.cpp src/optHandlers/accountOptHandler.h
src/optHandlers/mainOptHandler.cpp src/optHandlers/mainOptHandler.h)

View File

@ -5,6 +5,7 @@
#include "main.h"
#include "data/accountData.h"
#include "optHandlers/accountOptHandler.h"
#include "optHandlers/mainOptHandler.h"
#include <pwd.h>
#include <unistd.h>
@ -27,8 +28,8 @@ void createRequiredFolders() {
int main(int argc, char *argv[]) {
std::vector<char *> args(argv, argv + argc);
OptHandlers::AccountOptHandler accountOptHandler(args);
accountOptHandler.parse();
OptHandlers::MainOptHandler mainOptHandler(args);
mainOptHandler.parse();
createRequiredFolders();
// Read all accounts saved and store them in accounts

View File

@ -0,0 +1,51 @@
//
// Created by quentin on 8/13/22.
//
#include "mainOptHandler.h"
using namespace Budget::OptHandlers;
MainOptHandler::MainOptHandler(const std::vector<char *> &argv) : OptHandler(argv) {}
void MainOptHandler::parse() {
struct option longOpts[] = {
{"help", no_argument, nullptr, 'h'},
{"account", no_argument, nullptr, 'a'},
{ nullptr }
};
while (true) {
int opt = getopt_long(getArgc(), getArgv(), "ha", longOpts, nullptr);
if (opt == -1) {
break;
}
switch (opt) {
case 'h':
setOpts.help = true;
break;
case 'a':
setOpts.account = true;
break;
case '?':
setOpts.help = true;
setOpts.helpOut = stderr;
break;
default:
break;
}
}
}
void MainOptHandler::help() {
fprintf(setOpts.helpOut, "Help budget {-ha}\n");
fprintf(setOpts.helpOut, " -h --help Output this message.\n");
fprintf(setOpts.helpOut, " -a --account Do budget -a -h for more info.\n");
}
const SetOpts *MainOptHandler::getSetOpts() const {
return &setOpts;
}

View File

@ -0,0 +1,32 @@
//
// Created by quentin on 8/13/22.
//
#ifndef BUDGET_MAINOPTHANDLER_H
#define BUDGET_MAINOPTHANDLER_H
#include "optHandler.h"
namespace Budget::OptHandlers {
class MainOptHandler : public OptHandler {
struct SetOpts {
FILE *helpOut = stdout;
bool help = false;
bool account = false;
};
public:
explicit MainOptHandler(const std::vector<char *> &argv);
void parse() override;
void help() override;
[[nodiscard]] const SetOpts *getSetOpts() const;
private:
SetOpts setOpts;
};
}
#endif //BUDGET_MAINOPTHANDLER_H