Add option parsing
This commit is contained in:
parent
bb321f6542
commit
426fcf43c4
25
src/main.cpp
25
src/main.cpp
@ -6,18 +6,25 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <crow.h>
|
||||
#include "opt/parseopt.hpp"
|
||||
|
||||
#include "routes.hpp"
|
||||
|
||||
int main(int argc, char** argv){
|
||||
|
||||
option_flags* flags = parse_options(argc, argv);
|
||||
|
||||
crow::SimpleApp app;
|
||||
CROW_ROUTE(app, "/")([](){
|
||||
return "Hello World";
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/json")([]{
|
||||
crow::json::wvalue response({{ "message", "Hello world" }});
|
||||
response["kek"] = "nay, cringe";
|
||||
return response;
|
||||
});
|
||||
setRoutes(app);
|
||||
|
||||
app.port(5000).run();
|
||||
std::cerr << "Setting up app" << std::endl;
|
||||
|
||||
app.port(flags->port)
|
||||
.server_name("proc_api")
|
||||
.multithreaded();
|
||||
|
||||
delete flags;
|
||||
|
||||
app.run();
|
||||
}
|
||||
|
41
src/opt/parseopt.cpp
Normal file
41
src/opt/parseopt.cpp
Normal file
@ -0,0 +1,41 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Tyler Perkins
|
||||
// 28-4-22
|
||||
// parseopt implementation
|
||||
//
|
||||
|
||||
#include "parseopt.hpp"
|
||||
|
||||
void help(char* progName){
|
||||
std::cout << "Usage: " << progName << " [FLAGS]\n";
|
||||
std::cout << "Options:\n";
|
||||
std::cout << " [-p] Port to listen on\n";
|
||||
std::cout << " [-h] Display this help message\n\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
option_flags* parse_options(int argc, char** argv){
|
||||
char c;
|
||||
|
||||
option_flags* ret = new option_flags;
|
||||
|
||||
ret->port = 5000;
|
||||
|
||||
while((c = getopt(argc, argv, optarg_string)) != -1){
|
||||
switch(c){
|
||||
case 'p':
|
||||
std::cout << optarg << "\n";
|
||||
ret->port = atoi(optarg);
|
||||
break;
|
||||
case '?':
|
||||
std::cerr << "Unkown option: " << (char)optopt << "\n";
|
||||
case 'h':
|
||||
help(argv[0]);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
22
src/opt/parseopt.hpp
Normal file
22
src/opt/parseopt.hpp
Normal file
@ -0,0 +1,22 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Tyler Perkins
|
||||
// 28-4-22
|
||||
// parseopt definitions
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <getopt.h>
|
||||
#include <iostream>
|
||||
|
||||
///////////////////////////////////////
|
||||
// cli options
|
||||
|
||||
constexpr char optarg_string[] = "p:h";
|
||||
|
||||
struct option_flags {
|
||||
uint16_t port;
|
||||
};
|
||||
|
||||
void help(char*);
|
||||
option_flags* parse_options(int, char**);
|
@ -0,0 +1,17 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Tyler Perkins
|
||||
// 28-4-22
|
||||
// Routes implementation
|
||||
//
|
||||
|
||||
#include "routes.hpp"
|
||||
|
||||
void setRoutes(crow::SimpleApp& app){
|
||||
CROW_ROUTE(app, "/proc/meminfo")([]{
|
||||
return "Meminfo";
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/mem")([]{
|
||||
return "mem";
|
||||
});
|
||||
}
|
11
src/routes.hpp
Normal file
11
src/routes.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Tyler Perkins
|
||||
// 28-4-22
|
||||
// Routes definition
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <crow.h>
|
||||
|
||||
void setRoutes(crow::SimpleApp&);
|
Loading…
Reference in New Issue
Block a user