More work on the new param system

pull/649/head
AlexandreRouma 2022-02-21 18:10:01 +01:00
rodzic a87aedabb8
commit 5c138aa4a5
4 zmienionych plików z 37 dodań i 4 usunięć

Wyświetl plik

@ -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++) {
@ -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());
}
}
}

Wyświetl plik

@ -48,7 +48,6 @@ public:
}
CLIArg(char al, std::string desc, std::string s) {
printf("String const called\n");
alias = al;
description = desc;
type = CLI_ARG_TYPE_STRING;
@ -56,7 +55,6 @@ public:
}
CLIArg(char al, std::string desc, const char* s) {
printf("String const called\n");
alias = al;
description = desc;
type = CLI_ARG_TYPE_STRING;
@ -108,6 +106,8 @@ public:
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);

Wyświetl plik

@ -37,6 +37,7 @@ namespace core {
ConfigManager configManager;
ModuleManager moduleManager;
ModuleComManager modComManager;
CommandArgsParser args;
void setInputSampleRate(double samplerate) {
// Forward this to the server
@ -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; }

Wyświetl plik

@ -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);
};