mirror of
https://github.com/lucaspalomodevelop/autom.git
synced 2026-03-12 23:27:21 +00:00
can compile on windows now | exectutes default-command
This commit is contained in:
parent
fd5b63991c
commit
ac141ec143
1
makefile
1
makefile
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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
|
||||
18
src/main.cpp
18
src/main.cpp
@ -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;
|
||||
|
||||
20
src/main.h
20
src/main.h
@ -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[]);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user