cleaning up
parent
6a91f30ce2
commit
5be17a0a05
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
class ModuleLoader {
|
class ModuleLoader {
|
||||||
public:
|
public:
|
||||||
|
// initializer
|
||||||
explicit ModuleLoader(std::string module_path = "/usr/lib/dpm/modules/");
|
explicit ModuleLoader(std::string module_path = "/usr/lib/dpm/modules/");
|
||||||
DPMError list_available_modules(std::vector<std::string>& modules) const;
|
DPMError list_available_modules(std::vector<std::string>& modules) const;
|
||||||
DPMError get_module_path(std::string& path) const;
|
DPMError get_module_path(std::string& path) const;
|
||||||
|
|
|
@ -24,10 +24,13 @@ int main_list_modules(const ModuleLoader& loader);
|
||||||
|
|
||||||
// data structure for supplied arguments
|
// data structure for supplied arguments
|
||||||
struct CommandArgs {
|
struct CommandArgs {
|
||||||
std::string module_path = "/usr/lib/dpm/modules/";
|
std::string module_path;
|
||||||
std::string module_name;
|
std::string module_name;
|
||||||
std::string command; // All arguments combined into a single command string
|
std::string command; // All arguments combined into a single command string
|
||||||
};
|
};
|
||||||
|
|
||||||
// parser for populating data structure for supplied arguments
|
// parser for populating data structure for supplied arguments
|
||||||
CommandArgs parse_args(int argc, char* argv[]);
|
CommandArgs parse_args(int argc, char* argv[]);
|
||||||
|
|
||||||
|
// pairs DPMErrors to error messages, prints those error messages, and returns
|
||||||
|
int print_error(DPMError error, const std::string& module_name, const std::string& module_path);
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// global errors for the core DPM routing/execution component
|
||||||
enum class DPMError {
|
enum class DPMError {
|
||||||
SUCCESS,
|
SUCCESS,
|
||||||
PATH_NOT_FOUND,
|
PATH_NOT_FOUND,
|
||||||
|
|
31
src/dpm.cpp
31
src/dpm.cpp
|
@ -11,35 +11,6 @@
|
||||||
* 3. Provide a module-agnostic unified interface for modules.
|
* 3. Provide a module-agnostic unified interface for modules.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// prints error message and returns error code
|
|
||||||
int print_error(DPMError error, const std::string& module_name, const std::string& module_path) {
|
|
||||||
switch (error) {
|
|
||||||
case DPMError::SUCCESS:
|
|
||||||
return 0;
|
|
||||||
case DPMError::PATH_NOT_FOUND:
|
|
||||||
std::cerr << "Module path not found: " << module_path << std::endl;
|
|
||||||
return 1;
|
|
||||||
case DPMError::PATH_NOT_DIRECTORY:
|
|
||||||
std::cerr << "Module path is not a directory: " << module_path << std::endl;
|
|
||||||
return 1;
|
|
||||||
case DPMError::PERMISSION_DENIED:
|
|
||||||
std::cerr << "Permission denied accessing module: " << module_name << std::endl;
|
|
||||||
return 1;
|
|
||||||
case DPMError::MODULE_NOT_FOUND:
|
|
||||||
std::cerr << "Module not found: " << module_name << std::endl;
|
|
||||||
return 1;
|
|
||||||
case DPMError::MODULE_LOAD_FAILED:
|
|
||||||
std::cerr << "Failed to load module: " << module_name << std::endl;
|
|
||||||
return 1;
|
|
||||||
case DPMError::INVALID_MODULE:
|
|
||||||
std::cerr << "Invalid module format: " << module_name << std::endl;
|
|
||||||
return 1;
|
|
||||||
default:
|
|
||||||
std::cerr << "Unknown error executing module: " << module_name << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// the default behaviour if dpm is executed without being told to do anything
|
// the default behaviour if dpm is executed without being told to do anything
|
||||||
int default_behavior(const ModuleLoader& loader)
|
int default_behavior(const ModuleLoader& loader)
|
||||||
{
|
{
|
||||||
|
@ -55,8 +26,6 @@ int main( int argc, char* argv[] )
|
||||||
auto args = parse_args( argc, argv );
|
auto args = parse_args( argc, argv );
|
||||||
|
|
||||||
// create a module loader object at the supplied or default path
|
// create a module loader object at the supplied or default path
|
||||||
// TODO: the default is set in the header instead of the
|
|
||||||
// implementation, fix that
|
|
||||||
ModuleLoader loader( args.module_path );
|
ModuleLoader loader( args.module_path );
|
||||||
|
|
||||||
// check the module path for the loader object
|
// check the module path for the loader object
|
||||||
|
|
|
@ -126,10 +126,10 @@ int main_list_modules(const ModuleLoader& loader)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// parser for populating data structure for supplied arguments
|
|
||||||
CommandArgs parse_args(int argc, char* argv[])
|
CommandArgs parse_args(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
CommandArgs args;
|
CommandArgs args;
|
||||||
|
args.module_path = "/usr/lib/dpm/modules/"; // Set to same default as ModuleLoader
|
||||||
|
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
{"module-path", required_argument, 0, 'm'},
|
{"module-path", required_argument, 0, 'm'},
|
||||||
|
@ -174,4 +174,32 @@ CommandArgs parse_args(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
return args;
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
int print_error(DPMError error, const std::string& module_name, const std::string& module_path) {
|
||||||
|
switch (error) {
|
||||||
|
case DPMError::SUCCESS:
|
||||||
|
return 0;
|
||||||
|
case DPMError::PATH_NOT_FOUND:
|
||||||
|
std::cerr << "Module path not found: " << module_path << std::endl;
|
||||||
|
return 1;
|
||||||
|
case DPMError::PATH_NOT_DIRECTORY:
|
||||||
|
std::cerr << "Module path is not a directory: " << module_path << std::endl;
|
||||||
|
return 1;
|
||||||
|
case DPMError::PERMISSION_DENIED:
|
||||||
|
std::cerr << "Permission denied accessing module: " << module_name << std::endl;
|
||||||
|
return 1;
|
||||||
|
case DPMError::MODULE_NOT_FOUND:
|
||||||
|
std::cerr << "Module not found: " << module_name << std::endl;
|
||||||
|
return 1;
|
||||||
|
case DPMError::MODULE_LOAD_FAILED:
|
||||||
|
std::cerr << "Failed to load module: " << module_name << std::endl;
|
||||||
|
return 1;
|
||||||
|
case DPMError::INVALID_MODULE:
|
||||||
|
std::cerr << "Invalid module format: " << module_name << std::endl;
|
||||||
|
return 1;
|
||||||
|
default:
|
||||||
|
std::cerr << "Unknown error executing module: " << module_name << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue