MainOptHandler for the first parse of argv
This commit is contained in:
parent
03d84ef9ee
commit
a3efa59ebb
@ -12,4 +12,5 @@ add_executable(${PROJECT_NAME} src/main.cpp src/main.h
|
|||||||
src/money/earning.cpp src/money/earning.h
|
src/money/earning.cpp src/money/earning.h
|
||||||
src/data/dateMoney.cpp src/data/dateMoney.h
|
src/data/dateMoney.cpp src/data/dateMoney.h
|
||||||
src/optHandlers/optHandler.cpp src/optHandlers/optHandler.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)
|
@ -5,6 +5,7 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "data/accountData.h"
|
#include "data/accountData.h"
|
||||||
#include "optHandlers/accountOptHandler.h"
|
#include "optHandlers/accountOptHandler.h"
|
||||||
|
#include "optHandlers/mainOptHandler.h"
|
||||||
|
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -27,8 +28,8 @@ void createRequiredFolders() {
|
|||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
std::vector<char *> args(argv, argv + argc);
|
std::vector<char *> args(argv, argv + argc);
|
||||||
|
|
||||||
OptHandlers::AccountOptHandler accountOptHandler(args);
|
OptHandlers::MainOptHandler mainOptHandler(args);
|
||||||
accountOptHandler.parse();
|
mainOptHandler.parse();
|
||||||
|
|
||||||
createRequiredFolders();
|
createRequiredFolders();
|
||||||
// Read all accounts saved and store them in accounts
|
// Read all accounts saved and store them in accounts
|
||||||
|
51
src/optHandlers/mainOptHandler.cpp
Normal file
51
src/optHandlers/mainOptHandler.cpp
Normal 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;
|
||||||
|
}
|
32
src/optHandlers/mainOptHandler.h
Normal file
32
src/optHandlers/mainOptHandler.h
Normal 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
|
Loading…
x
Reference in New Issue
Block a user