55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
|
#include "alpm/manager.h"
|
||
|
#include "alpm/utilities.h"
|
||
|
#include "alpm/config.h"
|
||
|
#include "network/server.h"
|
||
|
|
||
|
#include <c++utilities/application/argumentparser.h>
|
||
|
#include <c++utilities/application/failure.h>
|
||
|
|
||
|
#include <QCoreApplication>
|
||
|
|
||
|
#include <iostream>
|
||
|
|
||
|
using namespace std;
|
||
|
using namespace ApplicationUtilities;
|
||
|
using namespace PackageManagement;
|
||
|
using namespace Network;
|
||
|
|
||
|
int main(int argc, char *argv[])
|
||
|
{
|
||
|
// setup the argument parser
|
||
|
ArgumentParser parser;
|
||
|
ConfigArgs configArgs(parser);
|
||
|
parser.setIgnoreUnknownArguments(false);
|
||
|
// parse command line arguments
|
||
|
try {
|
||
|
parser.parseArgs(argc, argv);
|
||
|
} catch (Failure &e) {
|
||
|
cerr << "Unable to parse arguments: " << e.what() << endl;
|
||
|
return 2;
|
||
|
}
|
||
|
try {
|
||
|
// load configuration
|
||
|
Config config;
|
||
|
config.loadFromConfigFile(configArgs);
|
||
|
config.loadFromArgs(configArgs);
|
||
|
// run websocket server
|
||
|
if(configArgs.serverArg.isPresent()) {
|
||
|
// setup ALPM
|
||
|
Manager alpmManager(config);
|
||
|
alpmManager.parsePacmanConfig();
|
||
|
// setup the server
|
||
|
QCoreApplication application(argc, argv);
|
||
|
Server server(alpmManager, config);
|
||
|
QObject::connect(&server, &Server::closed, &application, &QCoreApplication::quit);
|
||
|
// run Qt loop
|
||
|
return application.exec();
|
||
|
} else {
|
||
|
cout << "No command line arguments specified. See --help for available commands." << endl;
|
||
|
}
|
||
|
} catch (std::exception &e) {
|
||
|
cerr << "Error: " << e.what() << endl;
|
||
|
return 1;
|
||
|
}
|
||
|
}
|