diff --git a/.gitignore b/.gitignore index 2819174..4da1847 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ Temporary/ +.vscode/ +Configuration/install_path.h \ No newline at end of file diff --git a/Application/123.c b/Application/123.c deleted file mode 100644 index 9a739d6..0000000 --- a/Application/123.c +++ /dev/null @@ -1 +0,0 @@ -int l123(void) { return 0; } diff --git a/Application/argsconfig.c b/Application/argsconfig.c new file mode 100644 index 0000000..6639fb0 --- /dev/null +++ b/Application/argsconfig.c @@ -0,0 +1,70 @@ +/* + * argsconfig.c + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__ARGSCONFIG_C__) +#define __ARGSCONFIG_C__ + +#include "../Library/argsconfig.h" + +void projmr_argsconfig_help(void) { + puts( + "Projmr V2.0" PBREAK + PLINER "Simple manager for your C-projects" PENDLN + ); +} + +int projmr_argsconifg_parse(int argc, char** argv) { + unsigned int i = 1; + char* name = (char*)NULL; + + while (i < (unsigned int)argc) { + char* str = argv[i]; + if (str[0] == '-') { + unsigned char use_external = 0; + if (str[1] == '-') use_external = 1; + switch (str[1 + use_external]) { + case 'h': + projmr_argsconfig_help(); + return EXIT_SUCCESS; + default: + projmr_error_log("Unknown token!"); + return EXIT_FAILURE; + } + } else { + name = str; + } + i ++; + } + + if (name) { + return projmr_run_creating(name); + } else { + projmr_error_log("Please specify the name of the project!"); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} + +#endif /* __ARGSCONFIG_C__ */ \ No newline at end of file diff --git a/Application/creating.c b/Application/creating.c new file mode 100644 index 0000000..98e39a4 --- /dev/null +++ b/Application/creating.c @@ -0,0 +1,68 @@ +/* + * creating.c + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__CREATING_C__) +#define __CREATING_C__ + +#include "../Library/creating.h" + +static FILE* projmr_parse_line_and_open(char* buf) { + if (buf[0] == '/') { + buf ++; + } + +} + +int projmr_run_creating(char* name) { + projmr_info_log("Creating project..."); + char buf[PROJMR_FILE_BUFFER_SIZE] = "\0"; + FILE* fp = projmr_open_project_file(PROJMR_CONFIG_FILE_NAME, "r"); + if (fp) { + while (fgets(buf, sizeof(buf), fp)) { + size_t len = strlen(buf); + if (len > 0 && buf[len - 1] != '\n') { + projmr_warning_log( + "The line was not read " + "completely (perhaps th" + "e last line in the fil" + "e does not end with \"" + "\n\")" VOID_LINE_DETECT + ); + } + FILE* ld = projmr_parse_line_and_open(buf); + if (ld) { + + fclose(ld); + } else { + projmr_error_log("Cannot load file from config!"); + } + } + return EXIT_SUCCESS; + } else { + projmr_error_log("Cannot load config!"); + } + return EXIT_FAILURE; +} + +#endif /* __CREATING_C__ */ \ No newline at end of file diff --git a/Application/logger.c b/Application/logger.c new file mode 100644 index 0000000..97a2bd2 --- /dev/null +++ b/Application/logger.c @@ -0,0 +1,70 @@ +/* + * logger.c + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__LOGGER_C__) +#define __LOGGER_C__ + +#include +#include + +#include "../Library/project.h" + +void __CREATE_SPECIF__(error_log) (const char* _err) { + fprintf( + stderr, + "\033[1m" + __STRING_PROJECT_NAME__ + ": \033[91m%s\033[0m\n", + _err + ); +} + +void __CREATE_SPECIF__(warning_log) (const char* _err) { + printf( + "\033[1m" + __STRING_PROJECT_NAME__ + ": \033[35m%s\033[0m\n", + _err + ); +} + +void __CREATE_SPECIF__(success_log) (const char* _err) { + printf( + "\033[1m" + __STRING_PROJECT_NAME__ + ": \033[32m%s\033[0m\n", + _err + ); +} + +void __CREATE_SPECIF__(info_log) (const char* _err) { + printf( + "\033[1m" + __STRING_PROJECT_NAME__ + ": \033[36m%s\033[0m\n", + _err + ); +} + +#endif /* __LOGGER_C__ */ \ No newline at end of file diff --git a/Application/project.c b/Application/project.c new file mode 100644 index 0000000..0a160e4 --- /dev/null +++ b/Application/project.c @@ -0,0 +1,50 @@ +/* + * project.c + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__PROJECT_C__) +#define __PROJECT_C__ + +#include "../Library/project.h" + +FILE* __CREATE_SPECIF__(open_project_file) (const char* name, const char* mode) { + char* f = (char*)malloc( + sizeof(char) * + (strlen(name) + + strlen(__PROJMR_INSTALL_PATH__)) + ); + strcpy(f, __PROJMR_INSTALL_PATH__); + strcat(f, "/"); + strcat(f, name); + FILE* fp = fopen(f, mode); + free(f); + if (fp == NULL) { + fp = fopen(name, mode); + if (fp == NULL) { + return NULL; + } + } + return fp; +} + +#endif /* __PROJECT_C__ */ \ No newline at end of file diff --git a/Application/projmr.c b/Application/projmr.c index 5fa0212..87e49a0 100644 --- a/Application/projmr.c +++ b/Application/projmr.c @@ -22,6 +22,8 @@ */ +#include "../Library/argsconfig.h" + int main(int argc, char** argv) { - return 0; + return projmr_argsconifg_parse(argc, argv); } diff --git a/Library/argsconfig.h b/Library/argsconfig.h new file mode 100644 index 0000000..3e13d2c --- /dev/null +++ b/Library/argsconfig.h @@ -0,0 +1,40 @@ +/* + * argsconfig.h + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__ARGSCONFIG_H__) +#define __ARGSCONFIG_H__ + +#include +#include + +#include "../Library/logger.h" +#include "../Library/creating.h" + +#define PLINER " " +#define PBREAK "\n" +#define PENDLN "\0" + +int projmr_argsconifg_parse(int argc, char** argv); + +#endif /* __ARGSCONFIG_H__ */ \ No newline at end of file diff --git a/Library/creating.h b/Library/creating.h new file mode 100644 index 0000000..3a8b28b --- /dev/null +++ b/Library/creating.h @@ -0,0 +1,43 @@ +/* + * creating.h + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__CREATING_H__) +#define __CREATING_H__ + +#include +#include + +#include "../Library/logger.h" + +#define VOID_LINE_DETECT + +#define PROJMR_TEMPLATES_PATH "Templates" +#define PROJMR_CATALOG_NEW "/" + +#define PROJMR_CONFIG_FILE_NAME "meta.cue" +#define PROJMR_FILE_BUFFER_SIZE 1024 + +int projmr_run_creating(char* name); + +#endif /* __CREATING_H__ */ \ No newline at end of file diff --git a/Library/logger.h b/Library/logger.h new file mode 100644 index 0000000..627f58b --- /dev/null +++ b/Library/logger.h @@ -0,0 +1,38 @@ +/* + * logger.h + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__LOGGER_H__) +#define __LOGGER_H__ + +#include +#include + +#include "../Library/project.h" + +void __CREATE_SPECIF__(error_log) (const char* _err); +void __CREATE_SPECIF__(warning_log) (const char* _err); +void __CREATE_SPECIF__(success_log) (const char* _err); +void __CREATE_SPECIF__(info_log) (const char* _err); + +#endif /* __LOGGER_H__ */ \ No newline at end of file diff --git a/Library/project.h b/Library/project.h new file mode 100644 index 0000000..d612b2d --- /dev/null +++ b/Library/project.h @@ -0,0 +1,77 @@ +/* + * project.h + * + * Copyright 2025 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * + */ + + +#if !defined(__PROJECT_H__) +#define __PROJECT_H__ + +#include +#include +#include + +#include "../Configuration/install_path.h" + +#if !defined(__PROJMR_INSTALL_PATH__) +#error Cannot find __PROJMR_INSTALL_PATH__! +#endif + +#if defined(__PROJECT_NAME__) +#undef __PROJECT_NAME__ +#endif /* __PROJECT_NAME__ */ + +#if defined(__STRING_PROJECT_NAME__) +#undef __STRING_PROJECT_NAME__ +#endif /* __STRING_PROJECT_NAME__ */ + +#if defined(__INLINE_CREATE_SPECIF) +#undef __INLINE_CREATE_SPECIF +#endif /* __INLINE_CREATE_SPECIF */ + +#if defined(__CREATE_SPECIF__) +#undef __CREATE_SPECIF__ +#endif /* __CREATE_SPECIF__ */ + +#if defined(__CONCAT__) +#undef __CONCAT__ +#endif /* __CONCAT__ */ + +#if defined(__STRING__) +#undef __STRING__ +#endif /* __STRING__ */ + +#if defined(__CNT__) +#undef __CNT__ +#endif /* __CNT__ */ + +#define __CNT__(a,b) a##b +#define __STRING__(c) #c +#define __CONCAT__(a, b) __CNT__(a, b) +#define __PROJECT_NAME__ projmr +#define __STRING_PROJECT_NAME__ __STRING__(__PROJECT_NAME__) +#define __INLINE_CREATE_SPECIF(name) __CONCAT__(_, name) +#define __CREATE_SPECIF__(name) \ + __CONCAT__(__PROJECT_NAME__, __INLINE_CREATE_SPECIF(name)) + +FILE* __CREATE_SPECIF__(open_project_file) (const char* name, const char* mode); + +#endif /* __PROJECT_H__ */ \ No newline at end of file diff --git a/Library/projmr.h b/Library/projmr.h deleted file mode 100644 index 925fc82..0000000 --- a/Library/projmr.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * projmr.h - * - * Copyright 2025 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301, USA. - * - * - */ - -#if (!defined(__LIB_projmr_H_)) -#define __LIB_projmr_H_ - -#include -#include -#include -#include - -#include - -#define projmr_VERSION "0.1" - -#define Makefile "Makefile" -#define LICENSE "LICENSE" - -char* __YDSJS_user_home = NULL; -char* __YDSJS_files_dir = "/.projmr/project_files/"; - -static void projmr_error(char* _err) { - printf("\033[1mprojmr: \033[91m%s\033[0m\n", _err); -} - -void __attach_project_mode(void) { - __YDSJS_user_home = getenv("HOME"); -} - -FILE* __open_project_file(char* name, char* mode) { - if (strlen(name) >= 32) return NULL; - char* file_text_name = malloc(strlen(__YDSJS_user_home) + strlen(__YDSJS_files_dir) + 34); - strcpy(file_text_name, __YDSJS_user_home); - strcat(file_text_name, __YDSJS_files_dir); - strcat(file_text_name, name); - FILE* fp = fopen(file_text_name, mode); - free(file_text_name); - return fp; -} - -static int __create_makefile(char* name) { - FILE* makefile = fopen(Makefile, "w"); - FILE* make_text = __open_project_file("make_license.txt", "r"); - if (makefile == NULL || make_text == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - time_t mytime = time(NULL); - struct tm *now = localtime(&mytime); - int year = now->tm_year + 1900; - - fprintf(makefile, - "#" "\n" - "# Makefile" "\n" - "# " "\n" - "# Copyright %d\n", year - ); - int c; - while ((c = getc(make_text)) != EOF) { - fputc(c, makefile); - } - fclose(make_text); - make_text = __open_project_file("make_structure.txt", "r"); - if (make_text == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - fprintf(makefile, "\nPROJECT_NAME=%s\n\n", name); - while ((c = getc(make_text)) != EOF) { - fputc(c, makefile); - } - fclose(make_text); - fclose(makefile); - return EXIT_SUCCESS; -} - -static int __create_license(void) { - FILE* lic = __open_project_file("project_license.txt", "r"); - FILE* wrt = fopen(LICENSE, "w"); - if (lic == NULL || wrt == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - int c; - while ((c = getc(lic)) != EOF) { - fputc(c, wrt); - } - fclose(lic); - fclose(wrt); - return EXIT_SUCCESS; -} - -static int __create_project_folder(void) { - if (mkdir("project_files", S_IRWXU | S_IRWXG | S_IRWXO) != 0) { - puts("\033[1mprojmr: \033[35mWarning: The project already exists!\033[0m"); - return EXIT_SUCCESS; - }; - FILE* fp = fopen("project_files/example.txt", "w"); - if (fp == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - fputs("Lorem ipsum dolor sit amet, consectetur " "\n" - "adipiscing elit, sed do eiusmod tempor incididunt ut " "\n" - "labore et dolore magna aliqua. Ut enim ad minim veniam, " "\n" - "quis nostrud exercitation ullamco laboris nisi ut " "\n" - "aliquip ex ea commodo consequat. Duis aute irure dolor " "\n" - "in reprehenderit in voluptate velit esse cillum dolore " "\n" - "eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, " "\n" - "sunt in culpa qui officia deserunt mollit anim id est laborum" "\n", fp); - fclose(fp); - return EXIT_SUCCESS; -} - -static int __create_config(char* name) { - FILE* make_text = __open_project_file("make_license.txt", "r"); - FILE* conf = fopen("project.ini", "w"); - if (conf == NULL || make_text == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - time_t mytime = time(NULL); - struct tm *now = localtime(&mytime); - int year = now->tm_year + 1900; - fprintf(conf, - "#" "\n" - "# project.ini" "\n" - "# " "\n" - "# Copyright %d\n", year - ); - int c; - while ((c = getc(make_text)) != EOF) { - fputc(c, conf); - } - fprintf(conf, "\n[%d.%d.%d-%d:%d:%d]\n", now->tm_mday, now->tm_mon + 1, now->tm_year + 1900, now->tm_hour, now->tm_min, now->tm_sec); - fprintf(conf, "name=%s\n", name); - srand((unsigned long)(void*)name); - fprintf(conf, "id=%lu\n", (unsigned long int)rand()); - fputs("project_files_count=1\n", conf); - return EXIT_SUCCESS; -} - -static int __create_main(char* name) { - char file_name[35]; - strcpy(file_name, name); - strcat(file_name, ".c"); - FILE* main = fopen(file_name, "w"); - FILE* main_ex = __open_project_file("project_main.txt", "r"); - if (main == NULL || main_ex == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - time_t mytime = time(NULL); - struct tm *now = localtime(&mytime); - int year = now->tm_year + 1900; - fprintf( - main, - "/*" "\n" - " * %s" "\n" - " * " "\n" - " * Copyright %d " "\n", - file_name, year - ); - int c; - while ((c = getc(main_ex)) != EOF) { - if (c != '%') fputc(c, main); - else fputs(name, main); - } - file_name[strlen(file_name) - 1] = 'h'; - fclose(main); - fclose(main_ex); - main = fopen(file_name, "w"); - main_ex = __open_project_file("project_lib.txt", "r"); - if (main == NULL || main_ex == NULL) { - projmr_error("File error!"); - return EXIT_FAILURE; - } - fprintf( - main, - "/*" "\n" - " * %s" "\n" - " * " "\n" - " * Copyright %d " "\n", - file_name, year - ); - unsigned int line = 1; - while ((c = getc(main_ex)) != EOF) { - if (c != '%' || line == 28) if (c != '@') fputc(c, main); - else fputs(name, main); - else fputs(name, main); - if (c == '\n') line ++; - } - fclose(main); - fclose(main_ex); - return EXIT_SUCCESS; -} - -int __create_project(char* name) { - int ret = 0; - __attach_project_mode(); - if (strlen(name) >= 32) { - projmr_error("The name cannot be longer than 31 characters."); - return EXIT_FAILURE; - } - ret += __create_makefile(name); - ret += __create_project_folder(); - ret += __create_license(); - ret += __create_main(name); - ret += __create_config(name); - if (ret != EXIT_SUCCESS) return EXIT_FAILURE; - return EXIT_SUCCESS; -} - -int _lib_projmr_main(int argc, char** argv) { - size_t pos = 1; - char* project_name = NULL; - while (pos != argc) { - char* str = argv[pos]; - if (str[0] == '-') { - unsigned char pos_loc = 0; - if (str[1] == '-') pos_loc ++; - switch (str[1 + pos_loc]) { - case 'h': - puts( - "Simple project manager witch GNU GPL V3" "\n" - " " "projmr NAME [--help / --version]" "\0" - ); - return EXIT_SUCCESS; - break; - case 'v': - puts(projmr_VERSION); - return EXIT_SUCCESS; - break; - default: - projmr_error("Unknown option!"); - return EXIT_FAILURE; - } - } else { - project_name = str; - } - pos ++; - } - if (project_name == NULL) { - projmr_error("Error! Call \"projmr --help\" for more information."); - return EXIT_FAILURE; - } - return __create_project(project_name); -} - -#endif diff --git a/Makefile b/Makefile index f7ee2fa..f49e7ab 100644 --- a/Makefile +++ b/Makefile @@ -31,8 +31,8 @@ CC=gcc # Compiler flags CFLAGS= -Wall -Wextra -# Options -OPTIONS= -O2 $(CFLAGS) -ansi +# Run flags (passed through environment variables) +RFLAGS= # Binary file link name OUTPUT_LINK=$(PROJECT_NAME) @@ -63,6 +63,9 @@ LINK_CREATE=ln # Parametr for create softlink LINK_SOFT= -s +# Options +OPTIONS=$(CFLAGS) + # Create soft link CREATE_SOFT_LINK=$(LINK_CREATE) $(LINK_SOFT) @@ -103,13 +106,20 @@ TOKEN=install_pkg # Templater TEMPLATER=projmr -# Path to install +# Configuration directory +CONFIGURATION=Configuration + +# Path to install PROJMR_SPECIFID_INSTALL_PATH=/etc/$(TEMPLATER)_$(TOKEN)/$(PROJECT_NAME) -.PHONY: clean install uninstall +# Directory for libs +INSTALLED=Installed + +.PHONY: clean install uninstall run mkconfig all $(OUTPUT_LINK): $(OBJECTS) - @mkdir -p $(TEMPORARY) + @echo 'mkconfig $(CONFIGURATION) $(TEMPLATES) $(LIBRARY) $(TEMPORARY) $(APPLICATION)' + @$(MAKE) mkconfig > /dev/null touch .gitignore grep $(TEMPORARY)/ .gitignore || echo $(TEMPORARY)/ > .gitignore $(CC) $(OBJECTS) -o $(OUTPUT_NAME) @@ -122,10 +132,27 @@ $(TEMPORARY)/%.o: $(APPLICATION)/%.c all: $(OUTPUT_LINK) +run: all + ./$(OUTPUT_LINK) $(RFLAGS) $(FLAGS) + clean: $(REMOVE_CMD) $(FOR_REMOVE_DIR) $(TEMPORARY)/* $(REMOVE_CMD) $(FOR_REMOVE_FILE) $(OUTPUT_LINK) +mkconfig: + mkdir -p $(CONFIGURATION) + mkdir -p $(TEMPLATES) + mkdir -p $(LIBRARY) + mkdir -p $(TEMPORARY) + mkdir -p $(APPLICATION) + mkdir -p $(INSTALLED) + touch $(CONFIGURATION)/install_path.h + echo '#if defined(__PROJMR_INSTALL_PATH__)' > $(CONFIGURATION)/install_path.h + echo '#undef __PROJMR_INSTALL_PATH__' >> $(CONFIGURATION)/install_path.h + echo '#endif' >> $(CONFIGURATION)/install_path.h + echo '#define __PROJMR_INSTALL_PATH__ ' '"$(PROJMR_SPECIFID_INSTALL_PATH)"' '\n' \ + >> $(CONFIGURATION)/install_path.h + install: all if test -d $(PROJMR_SPECIFID_INSTALL_PATH); then \ echo "[ INSTALL ERROR ] The program is already installed!"; \ @@ -141,4 +168,3 @@ install: all uninstall: $(REMOVE_CMD) $(FOR_REMOVE_FILE) $(INSTALL_NAME) $(REMOVE_CMD) $(FOR_REMOVE_DIR) $(PROJMR_SPECIFID_INSTALL_PATH) - diff --git a/Templates/meta.cue b/Templates/meta.cue new file mode 100644 index 0000000..6153f41 --- /dev/null +++ b/Templates/meta.cue @@ -0,0 +1,2 @@ +/Application/{name}.c +