can compile on windows now | exectutes default-command

This commit is contained in:
lucaspalomodevelop 2023-04-11 21:44:08 +02:00
parent fd5b63991c
commit ac141ec143
5 changed files with 58 additions and 24 deletions

View File

@ -1,5 +1,4 @@
all:
mkdir -p bin
g++ -c ./src/main.cpp
g++ -c ./src/command.cpp
g++ -std=c++11 main.o command.o -o ./bin/autom

View File

@ -5,25 +5,45 @@ Command::Command() {}
Command::~Command() {}
void Command::addCommand(std::string name, void (*func)(char *argv[]))
void Command::addCommand(std::string name, void (*func)(int argc, char *argv[]))
{
commands[name] = func;
}
void Command::addDefaultCommand(void (*func)(char *argv[]))
void Command::addDefaultCommand(void (*func)(int argc, char *argv[]))
{
defaultCommand = func;
}
void Command::runCommand(char *name, char *argv[])
void Command::runCommand(char *name, int argc, char *argv[])
{
std::cout << "Running command: " << name << std::endl;
if (commands.count(name) > 0)
if (this->isInCommands(name))
{
commands[name](argv);
for (int i = 0; i < argc; i++)
{
argv[i] = argv[i + 1];
}
commands[name](argc, argv);
}
else
{
defaultCommand(argv);
defaultCommand(argc, argv);
}
}
bool Command::isInCommands(char *name)
{
for (auto const &command : commands)
{
if (command.first == name)
{
std::cout << "Command found: " << command.first << std::endl;
return true;
}
}
std::cout << "Command not found: " << name << std::endl;
return false;
}

View File

@ -9,13 +9,14 @@ class Command
public:
Command(void);
~Command(void);
void addCommand(std::string name, void (*func)(char *argv[]));
void addDefaultCommand(void (*func)(char *argv[]));
void runCommand(char *name, char *argv[]);
void addCommand(std::string name, void (*func)(int argc, char *argv[]));
void addDefaultCommand(void (*func)(int argc,char *argv[]));
void runCommand(char *name, int argc, char *argv[]);
bool isInCommands(char *name);
private:
std::map<std::string, void (*)(char *argv[])> commands;
void (*defaultCommand)(char *argv[]);
std::map<std::string, void (*)(int argc,char *argv[])> commands;
void (*defaultCommand)(int argc,char *argv[]);
};
#endif // COMMAND_H

View File

@ -2,12 +2,17 @@
int main(int argc, char *argv[])
{
#ifdef _WIN32
#include <direct.h>
_mkdir(dir.c_str());
#else
mkdir(dir.c_str(), 0777);
#endif
input(argc, argv);
return 0;
}
void input(int argc, char *argv[])
{
InputParser input(argc, argv);
@ -16,17 +21,20 @@ void input(int argc, char *argv[])
command.addCommand("run", runScript);
command.addCommand("help", help);
command.addDefaultCommand(runScript);
command.runCommand(argv[1], argv);
command.runCommand(argv[1],argc, argv);
}
void runScript(char *argv[])
void runScript(int argc,char *argv[])
{
std::cout << "Running script: " << argv[1] << std::endl;
std::string pre_script = "cd " + dir + " && ";
std::string script = pre_script + dir + "/" + argv[2];
std::string script = pre_script + dir + "/" + argv[1];
std::cout << "Running script: " << script << std::endl;
system(script.c_str());
}
void help(char *argv[])
void help(int argc,char *argv[])
{
std::cout << "Usage: autom [command] [options]" << std::endl;
std::cout << "Commands:" << std::endl;

View File

@ -5,14 +5,20 @@
#include "inputparser.h"
#include "command.h"
#ifdef _WIN32
#include <direct.h>
std::string home = getenv("USERPROFILE");
#else
std::string home = getenv("HOME");
#endif
std::string dir = home + "/autom";
void input(int argc, char *argv[]);
void runScript(char *argv[]);
void help(char *argv[]);
void create(char *argv[]);
void remove(char *argv[]);
void list(char *argv[]);
void edit(char *argv[]);
void run(char *argv[]);
void runScript(int argc,char *argv[]);
void help(int argc,char *argv[]);
void create(int argc,char *argv[]);
void remove(int argc,char *argv[]);
void list(int argc,char *argv[]);
void edit(int argc,char *argv[]);
void run(int argc,char *argv[]);