Skip to content

Commit

Permalink
More work on the new param system
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexandreRouma committed Feb 21, 2022
1 parent a87aeda commit 5c138aa
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 4 deletions.
24 changes: 22 additions & 2 deletions core/src/command_args.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,24 @@
#include "command_args.h"
#include <filesystem>

void CommandArgsParser::defineAll() {
#if defined(_WIN32)
std::string root = ".";
define('c', "con", "Show console on Windows");
#elif defined(IS_MACOS_BUNDLE)
std::string root = (std::string)getenv("HOME") + "/Library/Application Support/sdrpp";
#elif defined(__ANDROID__)
std::string root = "/storage/self/primary/sdrpp";
#else
std::string root = (std::string)getenv("HOME") + "/.config/sdrpp";
#endif

define('a', "addr", "Server mode address", "0.0.0.0");
define('h', "help", "Show help");
define('p', "port", "Server mode port", 5259);
define('r', "root", "Root directory, where all config files are stored", std::filesystem::absolute(root).string());
define('s', "server", "Run in server mode");
}

int CommandArgsParser::parse(int argc, char* argv[]) {
for (int i = 1; i < argc; i++) {
Expand Down Expand Up @@ -94,10 +114,10 @@ int CommandArgsParser::parse(int argc, char* argv[]) {
void CommandArgsParser::showHelp() {
for (auto const& [ln, arg] : args) {
if (arg.alias) {
printf("-%c\t--%s\t\t%s\n", arg.alias, ln.c_str(), arg.description.c_str());
printf("-%c --%s\t\t%s\n", arg.alias, ln.c_str(), arg.description.c_str());
}
else {
printf(" \t--%s\t\t%s\n", ln.c_str(), arg.description.c_str());
printf(" --%s\t\t%s\n", ln.c_str(), arg.description.c_str());
}
}
}
4 changes: 2 additions & 2 deletions core/src/command_args.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,13 @@ class CLIArg {
}

CLIArg(char al, std::string desc, std::string s) {
printf("String const called\n");
alias = al;
description = desc;
type = CLI_ARG_TYPE_STRING;
sval = s;
}

CLIArg(char al, std::string desc, const char* s) {
printf("String const called\n");
alias = al;
description = desc;
type = CLI_ARG_TYPE_STRING;
Expand Down Expand Up @@ -108,6 +106,8 @@ class CommandArgsParser {
aliases[shortName] = name;
}

void defineAll();

template<class T>
void define(char shortName, std::string name, std::string desc, T defValue) {
args[name] = CLIArg(shortName, desc, defValue);
Expand Down
11 changes: 11 additions & 0 deletions core/src/core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ namespace core {
ConfigManager configManager;
ModuleManager moduleManager;
ModuleComManager modComManager;
CommandArgsParser args;

void setInputSampleRate(double samplerate) {
// Forward this to the server
Expand Down Expand Up @@ -64,6 +65,16 @@ int sdrpp_main(int argc, char* argv[]) {
chdir(execPath.parent_path().string().c_str());
#endif

// Define command line options and parse arguments
core::args.defineAll();
core::args.parse(argc, argv);

// Show help and exit if requested
if ((bool)core::args["help"]) {
core::args.showHelp();
return 0;
}

// Load default options and parse command line
options::loadDefaults();
if (!options::parse(argc, argv)) { return -1; }
Expand Down
2 changes: 2 additions & 0 deletions core/src/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
#include <module.h>
#include <module.h>
#include <module_com.h>
#include "command_args.h"

namespace core {
SDRPP_EXPORT ConfigManager configManager;
SDRPP_EXPORT ModuleManager moduleManager;
SDRPP_EXPORT ModuleComManager modComManager;
SDRPP_EXPORT CommandArgsParser args;

void setInputSampleRate(double samplerate);
};
Expand Down

0 comments on commit 5c138aa

Please sign in to comment.