#!/bin/python3 # IAEngine: 2D Game Engine by IA # Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev) # # 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 3 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, see . import sys def get_header_file_content(className: str): return f"""// IAEngine: 2D Game Engine by IA // Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev) // // 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 3 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, see . #pragma once #include namespace ia::iae {{ class {className} {{ public: {className}(); ~{className}(); private: }}; }} """ def get_source_file_content(className: str, headerPath: str): return f"""// IAEngine: 2D Game Engine by IA // Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev) // // 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 3 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, see . #include <{headerPath}> namespace ia::iae {{ {className}::{className}() {{ }} {className}::~{className}() {{ }} }} """ def add_header_file(className: str, fileName: str, fileDirectory: str): print(f"\033[32mAdding Header File '{fileName}' to '{fileDirectory}'..\033[39m") with open(f"{fileDirectory}/{fileName}", 'w') as f: f.write(get_header_file_content(className)) def add_source_file(className: str, headerPath: str, fileName: str, fileDirectory: str): print(f"\033[32mAdding Source File '{fileName}' to '{fileDirectory}'..\033[39m") with open(f"{fileDirectory}/{fileName}", 'w') as f: f.write(get_source_file_content(className, headerPath)) def on_invalid_args(): print(f"\033[33mUsage: {sys.argv[0]} \033[39m") exit(1) def main(args: list[str]): if (len(args) < 4) or ((args[2] != "PUBLIC") and (args[2] != "PRIVATE")): on_invalid_args() fileName = f"{args[3]}.hpp" headerPath = "" fileDirectory = "" if args[2] == "PUBLIC": headerPath = f"{args[1]}/{fileName}" fileDirectory = f"Src/{args[1]}/inc/{args[1]}" else: headerPath = f"{fileName}" fileDirectory = f"Src/{args[1]}/imp/hpp" add_header_file(args[3], fileName, fileDirectory) fileName = f"{args[3]}.cpp" fileDirectory = f"Src/{args[1]}/imp/cpp" add_source_file(args[3], headerPath, fileName, fileDirectory) if __name__ == "__main__": main(sys.argv)