From f00154f91cca9b78f930a060300cd0934b07d07a Mon Sep 17 00:00:00 2001 From: lucaspalomodevelop Date: Wed, 8 Mar 2023 17:59:44 +0100 Subject: [PATCH 1/4] execute scripts with Shebang without ending | change folder to ~/autom --- src/autom | Bin 23016 -> 23016 bytes src/main | Bin 23016 -> 0 bytes src/main.cpp | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 src/main diff --git a/src/autom b/src/autom index 216952db240c57cc95fb6466eb347ab4b9dbfc79..b2107ae30816fa48e5c02a9f820e6ab8bec875ba 100644 GIT binary patch delta 1898 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 diff --git a/src/main.cpp b/src/main.cpp index bc7a786..b42c6db 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,16 +5,16 @@ int main(int argc, char *argv[]) { - // make dir in /etc/autom + // make dir in ~/autom std::string home = getenv("HOME"); - std::string dir = home + "/.autom"; + std::string dir = home + "/autom"; // std::cout << "dir: " << dir << std::endl; mkdir(dir.c_str(), 0777); if (argc > 1 && argv[1][0] != '-') { std::string pre_script = "cd " + dir + " && "; - std::string script = pre_script + dir + "/" + argv[1] + ".sh"; + std::string script = pre_script + dir + "/" + argv[1]; system(script.c_str()); } // else{ From fd5b63991c71503cae827608023032601fb65409 Mon Sep 17 00:00:00 2001 From: lucaspalomodevelop Date: Fri, 10 Mar 2023 16:55:27 +0100 Subject: [PATCH 2/4] add Commands (basic) --- .gitignore | 3 +++ .vscode/settings.json | 53 ++++++++++++++++++++++++++++++++++++++++++ makefile | 7 ++++-- src/autom | Bin 23016 -> 0 bytes src/command.cpp | 29 +++++++++++++++++++++++ src/command.h | 21 +++++++++++++++++ src/inputparser.h | 37 +++++++++++++++++++++++++++++ src/main.cpp | 48 +++++++++++++++++++++++--------------- src/main.h | 18 ++++++++++++++ 9 files changed, 195 insertions(+), 21 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 src/autom create mode 100644 src/command.cpp create mode 100644 src/command.h create mode 100644 src/inputparser.h create mode 100644 src/main.h diff --git a/.gitignore b/.gitignore index a642095..a4aa8ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ + +/bin + # Prerequisites *.d diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fcb19a3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,53 @@ +{ + "files.associations": { + "*.html": "html", + "*.jsste": "plaintext", + "string": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "map": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/makefile b/makefile index 87aa1cd..deb14b4 100644 --- a/makefile +++ b/makefile @@ -1,3 +1,6 @@ all: - g++ -std=c++11 ./src/main.cpp -o ./src/autom - ./src/autom test \ No newline at end of file + mkdir -p bin + g++ -c ./src/main.cpp + g++ -c ./src/command.cpp + g++ -std=c++11 main.o command.o -o ./bin/autom + ./bin/autom help \ No newline at end of file diff --git a/src/autom b/src/autom deleted file mode 100644 index b2107ae30816fa48e5c02a9f820e6ab8bec875ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23016 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 + +Command::Command() {} + +Command::~Command() {} + +void Command::addCommand(std::string name, void (*func)(char *argv[])) +{ + commands[name] = func; +} + +void Command::addDefaultCommand(void (*func)(char *argv[])) +{ + defaultCommand = func; +} + +void Command::runCommand(char *name, char *argv[]) +{ + std::cout << "Running command: " << name << std::endl; + if (commands.count(name) > 0) + { + commands[name](argv); + } + else + { + defaultCommand(argv); + } +} diff --git a/src/command.h b/src/command.h new file mode 100644 index 0000000..c193222 --- /dev/null +++ b/src/command.h @@ -0,0 +1,21 @@ +#ifndef COMMAND_H +#define COMMAND_H + +#include +#include + +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[]); + +private: + std::map commands; + void (*defaultCommand)(char *argv[]); +}; + +#endif // COMMAND_H \ No newline at end of file diff --git a/src/inputparser.h b/src/inputparser.h new file mode 100644 index 0000000..d318f04 --- /dev/null +++ b/src/inputparser.h @@ -0,0 +1,37 @@ +#include +#include +#include +#include +#include + + +class InputParser +{ + std::map args; + public: + InputParser(int argc, char *argv[]) { + for (int i = 1; i < argc; i++) { + std::string arg(argv[i]); + if (arg.find("-") == 0) { + std::string key = arg.substr(1); + if (i + 1 < argc) { + std::string value(argv[i + 1]); + if (value.find("-") != 0) { + args[key] = value; + i++; + } else { + args[key] = ""; + } + } else { + args[key] = ""; + } + } + } + } + std::string getValue(std::string key) { + return args[key]; + } + bool hasKey(std::string key) { + return args.count(key) > 0; + } +}; diff --git a/src/main.cpp b/src/main.cpp index b42c6db..a2dc8ff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,25 +1,35 @@ -#include -#include -#include +#include "main.h" int main(int argc, char *argv[]) { - - // make dir in ~/autom - std::string home = getenv("HOME"); - std::string dir = home + "/autom"; - // std::cout << "dir: " << dir << std::endl; mkdir(dir.c_str(), 0777); - - if (argc > 1 && argv[1][0] != '-') - { - std::string pre_script = "cd " + dir + " && "; - std::string script = pre_script + dir + "/" + argv[1]; - system(script.c_str()); - } - // else{ - // std::cout << "Usage: autom