Only parse AccountOpts if MainOpts tells us to
This commit is contained in:
parent
a3efa59ebb
commit
fcec8da6bf
12
src/main.cpp
12
src/main.cpp
@ -30,6 +30,18 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
OptHandlers::MainOptHandler mainOptHandler(args);
|
OptHandlers::MainOptHandler mainOptHandler(args);
|
||||||
mainOptHandler.parse();
|
mainOptHandler.parse();
|
||||||
|
if (mainOptHandler.getSetOpts()->help)
|
||||||
|
mainOptHandler.help();
|
||||||
|
|
||||||
|
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();
|
||||||
|
if (accountOptHandler.getSetOpts()->help) {
|
||||||
|
accountOptHandler.help();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
createRequiredFolders();
|
createRequiredFolders();
|
||||||
// Read all accounts saved and store them in accounts
|
// Read all accounts saved and store them in accounts
|
||||||
|
@ -9,18 +9,17 @@ using namespace Budget::OptHandlers;
|
|||||||
|
|
||||||
|
|
||||||
void AccountOptHandler::parse() {
|
void AccountOptHandler::parse() {
|
||||||
std::string test;
|
|
||||||
struct option longOpts[] = {
|
struct option longOpts[] = {
|
||||||
{"help", no_argument, nullptr, 'h'},
|
{"help", no_argument, nullptr, 'h'},
|
||||||
{"list", no_argument, nullptr, 'l'},
|
{"list", no_argument, nullptr, 'l'},
|
||||||
{"delete", required_argument, nullptr, 'd'},
|
{"delete", required_argument, nullptr, 'd'},
|
||||||
{"create", required_argument, nullptr, 'c'},
|
{"create", required_argument, nullptr, 'c'},
|
||||||
{"value", required_argument, nullptr, 'v'},
|
{"value", required_argument, nullptr, 'v'},
|
||||||
{nullptr}
|
{nullptr}
|
||||||
};
|
};
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int opt = getopt_long(getArgc(), getArgv(), "hl::d::c::v", longOpts, nullptr);
|
int opt = getopt_long(getArgc(), getArgv(), "hl::d::c::va", longOpts, nullptr);
|
||||||
|
|
||||||
if (opt == -1) {
|
if (opt == -1) {
|
||||||
break;
|
break;
|
||||||
@ -64,7 +63,7 @@ void AccountOptHandler::help() {
|
|||||||
fprintf(setOpts.helpOut, " -v --value account Print the current value of account.\n");
|
fprintf(setOpts.helpOut, " -v --value account Print the current value of account.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
const SetOpts *AccountOptHandler::getSetOpts() const {
|
const AccountOptHandler::SetOpts *AccountOptHandler::getSetOpts() const {
|
||||||
return &setOpts;
|
return &setOpts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,14 +11,13 @@ MainOptHandler::MainOptHandler(const std::vector<char *> &argv) : OptHandler(arg
|
|||||||
|
|
||||||
void MainOptHandler::parse() {
|
void MainOptHandler::parse() {
|
||||||
struct option longOpts[] = {
|
struct option longOpts[] = {
|
||||||
{"help", no_argument, nullptr, 'h'},
|
{"help", no_argument, nullptr, 'h'},
|
||||||
{"account", no_argument, nullptr, 'a'},
|
{"account", no_argument, nullptr, 'a'},
|
||||||
{ nullptr }
|
{nullptr}
|
||||||
};
|
};
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int opt = getopt_long(getArgc(), getArgv(), "ha", longOpts, nullptr);
|
int opt = getopt_long(getArgc(), getArgv(), "ha", longOpts, nullptr);
|
||||||
|
|
||||||
if (opt == -1) {
|
if (opt == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -29,7 +28,8 @@ void MainOptHandler::parse() {
|
|||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
setOpts.account = true;
|
setOpts.account = true;
|
||||||
break;
|
setOpts.accountArgStart = optind - 1;
|
||||||
|
return;
|
||||||
case '?':
|
case '?':
|
||||||
setOpts.help = true;
|
setOpts.help = true;
|
||||||
setOpts.helpOut = stderr;
|
setOpts.helpOut = stderr;
|
||||||
@ -46,6 +46,6 @@ void MainOptHandler::help() {
|
|||||||
fprintf(setOpts.helpOut, " -a --account Do budget -a -h for more info.\n");
|
fprintf(setOpts.helpOut, " -a --account Do budget -a -h for more info.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
const SetOpts *MainOptHandler::getSetOpts() const {
|
const MainOptHandler::SetOpts *MainOptHandler::getSetOpts() const {
|
||||||
return &setOpts;
|
return &setOpts;
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ namespace Budget::OptHandlers {
|
|||||||
FILE *helpOut = stdout;
|
FILE *helpOut = stdout;
|
||||||
bool help = false;
|
bool help = false;
|
||||||
bool account = false;
|
bool account = false;
|
||||||
|
int accountArgStart = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user