mirror of
https://github.com/EvernodeXRPL/hpcore.git
synced 2026-04-29 15:37:59 +00:00
General code optmisations and cleanup. (#15)
Updated `version_compare` based on this issue: #13 Got rid of `replace_string_contents` helper func. Replaced #define macros with static consts. Moved comments from headers to source files.
This commit is contained in:
112
src/main.cpp
112
src/main.cpp
@@ -4,59 +4,27 @@
|
||||
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
#include "util.hpp"
|
||||
#include "conf.hpp"
|
||||
#include "crypto.hpp"
|
||||
#include "usr/usr.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int parse_cmd(int argc, char **argv);
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (parse_cmd(argc, argv) != 0)
|
||||
return -1;
|
||||
|
||||
if (conf::ctx.command == "version")
|
||||
{
|
||||
cout << _HP_VERSION_ << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (crypto::init() != 0)
|
||||
return -1;
|
||||
|
||||
if (conf::ctx.command == "new")
|
||||
{
|
||||
if (conf::create_contract() != 0)
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (conf::ctx.command == "rekey")
|
||||
{
|
||||
if (conf::rekey() != 0)
|
||||
return -1;
|
||||
}
|
||||
else if (conf::ctx.command == "run")
|
||||
{
|
||||
if (conf::init() != 0 || usr::init() != 0)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cout << "exited normally\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses CLI args and extracts hot pocket command and parameters given.
|
||||
* HP command line accepts command and the contract directory(optional)
|
||||
*/
|
||||
int parse_cmd(int argc, char **argv)
|
||||
{
|
||||
if (argc > 1) //We get working dir as an arg anyway. So we need to check for >1 args.
|
||||
{
|
||||
string command = argv[1];
|
||||
conf::ctx.command = command;
|
||||
if (command == "run" || command == "new" || command == "rekey")
|
||||
// We populate the global contract ctx with the detected command.
|
||||
conf::ctx.command = argv[1];
|
||||
|
||||
// For run/new/rekey, contract directory argument must be specified.
|
||||
|
||||
if (conf::ctx.command == "run" || conf::ctx.command == "new" || conf::ctx.command == "rekey")
|
||||
{
|
||||
if (argc != 3)
|
||||
{
|
||||
@@ -64,18 +32,22 @@ int parse_cmd(int argc, char **argv)
|
||||
}
|
||||
else
|
||||
{
|
||||
// We inform the conf subsystem to populate the contract directory context values
|
||||
// based on the directory argument from the command line.
|
||||
conf::set_contract_dir_paths(argv[2]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else if (command == "version")
|
||||
else if (conf::ctx.command == "version")
|
||||
{
|
||||
if (argc == 2)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// If all extractions fail display help message.
|
||||
|
||||
cerr << "Arguments mismatch.\n";
|
||||
cout << "Usage:\n";
|
||||
cout << "hpcore version\n";
|
||||
@@ -84,3 +56,55 @@ int parse_cmd(int argc, char **argv)
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Extract the CLI args
|
||||
// After this call conf::ctx must be populated.
|
||||
if (parse_cmd(argc, argv) != 0)
|
||||
return -1;
|
||||
|
||||
if (conf::ctx.command == "version")
|
||||
{
|
||||
// Print the version
|
||||
cout << util::hp_version << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
// This block is about contract operations (new/rekey/run)
|
||||
// All the contract operations will be executed on the contract directory specified
|
||||
// in the command line args. 'parse_cmd()' above takes care of populating the contexual directory paths.
|
||||
|
||||
// For any contract opreation to execute, we should init the crypto subsystem.
|
||||
if (crypto::init() != 0)
|
||||
return -1;
|
||||
|
||||
if (conf::ctx.command == "new")
|
||||
{
|
||||
// This will create a new contract with all the required files.
|
||||
if (conf::create_contract() != 0)
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (conf::ctx.command == "rekey")
|
||||
{
|
||||
// This will generate new signing keys for the contract.
|
||||
if (conf::rekey() != 0)
|
||||
return -1;
|
||||
}
|
||||
else if (conf::ctx.command == "run")
|
||||
{
|
||||
// In order to host the contract we should init some required sub systems.
|
||||
if (conf::init() != 0 || usr::init() != 0)
|
||||
return -1;
|
||||
|
||||
// This will start hosting the contract and start consensus rounds.
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cout << "exited normally\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user