From 52754001aa09a2665d28a23df47bfbcc3cd139f4 Mon Sep 17 00:00:00 2001 From: Ambigapathy Vinayak Date: Thu, 30 May 2024 16:27:50 +0200 Subject: [PATCH] Truc fait --- src/Buildtools.py | 9 +++++---- src/Command.py | 5 +++++ src/Package.py | 27 ++++++++++++++++++--------- src/Premake/App.py | 4 ++-- src/Premake/Wks.py | 2 +- src/Project.py | 19 ++++++++----------- src/main.py | 40 +++++++++++++++++++++++++++++++++------- 7 files changed, 72 insertions(+), 34 deletions(-) create mode 100644 src/Command.py diff --git a/src/Buildtools.py b/src/Buildtools.py index 75726c9..af49485 100644 --- a/src/Buildtools.py +++ b/src/Buildtools.py @@ -1,5 +1,6 @@ import platform import os +import Command def tool_exist(name: str) -> bool: from shutil import which @@ -30,11 +31,11 @@ def build() -> None: verifie_tools() match platform.system(): case "Windows": - os.system("premake5 vs2022") - os.system("dotnet build") + Command.exec("premake5 vs2022") + Command.exec("dotnet build") case "Linux": - os.system("premake5 gmake2") - os.system("make") + Command.exec("premake5 gmake2") + Command.exec("make") case _: raise Exception("Platform not supported") \ No newline at end of file diff --git a/src/Command.py b/src/Command.py new file mode 100644 index 0000000..9dd71ad --- /dev/null +++ b/src/Command.py @@ -0,0 +1,5 @@ +import os +import sys + +def exec(command): + os.system(f"{command} > bakasable.log") diff --git a/src/Package.py b/src/Package.py index 08a813d..c78bf78 100644 --- a/src/Package.py +++ b/src/Package.py @@ -1,45 +1,54 @@ import os import json +import Command -def add(author, package: str) -> None: +def add(author, package) -> None: f_conf = open("./config.json", "r") conf = json.loads(f_conf.read()) f_conf.close() if package in conf["packages"]: raise Exception("Package already added") f_conf = open("./config.json", "w") - conf["packages"].append({ "author": author, "pkg": package}) + conf["packages"].append({ "author": author, "name": package}) f_conf.write(json.dumps(conf, indent=4)) f_conf.close() install(author, package) def install_root() -> None: + if not os.path.exists("./config.json"): + raise Exception("No package config file") f_conf = open("./config.json", "r") conf = json.loads(f_conf.read()) f_conf.close() - for package in conf["packages"]: - install(package) + for pkg in conf["packages"]: + install(pkg["author"], pkg["name"]) def install(author, package) -> None: if os.path.exists(f"./vendor/{package}"): return - os.system(f"git clone https://github.com/{author}/{package} ./vendor/{package}") + Command.exec(f"git clone https://github.com/{author}/{package} ./vendor/{package}") if os.path.exists(f"./vendor/{package}/config.json"): conf = open(f"./vendor/{package}/config.json", "r").read() conf = json.loads(conf) if len(conf["packages"]) > 0: for pkg in conf["packages"]: - install(pkg["author"], pkg["pkg"]) + install(pkg["author"], pkg["name"]) if os.path.exists(f"./vendor/{package}/dependencies.lua"): dep = open(f"./vendor/{package}/dependencies.lua", "r") pkg_deps = dep.read() dep.close() - dep = open(f"./deps.lua", "a") - dep.write("\n" + pkg_deps) - dep.close() + if not os.path.exists("./deps.lua"): + dep = open("./deps.lua", "w") + dep.write("IncludeDirs = {}") + dep.write("\n" + pkg_deps) + dep.close() + else: + dep = open(f"./deps.lua", "a") + dep.write("\n" + pkg_deps) + dep.close() diff --git a/src/Premake/App.py b/src/Premake/App.py index 0dafa74..650fc9c 100644 --- a/src/Premake/App.py +++ b/src/Premake/App.py @@ -1,5 +1,5 @@ def get() -> str: - return '''project "App" + return """project "App" kind "ConsoleApp" language "C++" cppdialect "C++20" @@ -47,4 +47,4 @@ filter "system:linux" "BK_PLATFORM_LINUX" } filter "" - ''' \ No newline at end of file +""" \ No newline at end of file diff --git a/src/Premake/Wks.py b/src/Premake/Wks.py index bb9a5c5..1801407 100644 --- a/src/Premake/Wks.py +++ b/src/Premake/Wks.py @@ -12,7 +12,7 @@ def get(name) -> str: linkgroups "On" outputdir = "%{cfg.system}-%{cfg.architecture}-%{cfg.buildcfg}" -include "dependencies.lua" +include "deps.lua" group "App" include "app" diff --git a/src/Project.py b/src/Project.py index 95833ee..24b1286 100644 --- a/src/Project.py +++ b/src/Project.py @@ -1,6 +1,7 @@ import os import json import Premake +import Command class Project: def __init__(self, conf) -> None: @@ -8,10 +9,10 @@ class Project: self.name = conf["name"] self.git_repo = conf["git"] - def __init__(self, name, author = "") -> None: - self.owner = author + def __init__(self, name, repo, author = "") -> None: self.name = name - self.git_repo = "" + self.owner = author + self.git_repo = repo def set_git_repo(self, url) -> None: self.git_repo = url @@ -37,9 +38,6 @@ class Project: app = open("./app/premake5.lua", "w") app.write(Premake.App.get()) app.close() - dep = open("./deps.lua", "w") - dep.write("IncludeDirs = {}") - dep.close() git_ign = open("./.gitignore", "w") git_ign.write("""/vendor/ /bin/ @@ -62,7 +60,6 @@ class Project: os.mkdir("./app/src") except: raise Exception("Directory already exists.") create_file("./dependencies.lua") - create_file("./deps.lua") create_file("./app/src/app.cpp") create_file("./premake5.lua") create_file("./app/premake5.lua") @@ -73,10 +70,10 @@ class Project: return os.path.exists("./.git") def init_git_repo(self) -> None: - os.system("git init --initial-branch=main") - os.system("git add .") - os.system('git commit -m "Initial commit"') - if len(self.git_repo) > 0: os.system(f'git remote add origin ${self.git_repo}') + Command.exec("git init --initial-branch=main") + Command.exec("git add .") + Command.exec('git commit -m "Initial commit"') + if len(self.git_repo) > 0: Command.exec(f'git remote add origin ${self.git_repo}') def create_file(path) -> None: diff --git a/src/main.py b/src/main.py index d0643fd..3922221 100644 --- a/src/main.py +++ b/src/main.py @@ -1,17 +1,43 @@ import os import sys +import argparse import Package from Buildtools import verifie_tools from Project import Project -def bakasable() -> None: - if len(sys.argv) >= 2: - if not os.path.exists(sys.argv[1]): os.mkdir(sys.argv[1]) - os.chdir(sys.argv[1]) - project = Project("Test") +def init(args) -> None: + if not os.path.exists(args.path): os.mkdir(args.path) + os.chdir(args.path) + project = Project(args.name, args.repo, args.owner) project.create() - Package.add("anulax1225", "bakatools") +def add(args) -> None: + Package.add(args.author, args.name) + +def install(args) -> None: + Package.install_root() + +def bakasable() -> None: + program_parser = argparse.ArgumentParser(prog="bakasable", description="baka developpement enviromment") + sub_parsers = program_parser.add_subparsers(title="subcommmands", help="operations on your project") + + init_parser = sub_parsers.add_parser("init", help="initialise a new project") + init_parser.add_argument("-n", "--name", type=str, required=True, dest="name") + init_parser.add_argument("-p", "--path", type=str, default="./", dest="path") + init_parser.add_argument("-r", "--repo", type=str, default="", dest="repo") + init_parser.add_argument("-o", "--owner", type=str, default="", dest="owner") + init_parser.set_defaults(func=init) + + add_parser = sub_parsers.add_parser("add", help="add a module to your project") + add_parser.add_argument("-n", "--name", type=str, required=True, dest="name") + add_parser.add_argument("-a", "--author", type=str, required=True, dest="author") + add_parser.set_defaults(func=add) + + install_parser = sub_parsers.add_parser("install", help="add a module to your project") + install_parser.set_defaults(func=install) + + args = program_parser.parse_args() + args.func(args) if __name__ == "__main__": print(""" ____ _ _ __ _ ____ _ ____ _ _____ @@ -19,5 +45,5 @@ if __name__ == "__main__": | _ \\ / _ \\ | ' / / _ \\ \\___ \\ / _ \\ | _ \\| | | _| | |_) / ___ \\| . \\ / ___ \\ ___) / ___ \\| |_) | |___| |___ |____/_/ \\_\\_|\\_\\/_/ \\_\\____/_/ \\_\\____/|_____|_____| - """) +""") bakasable() \ No newline at end of file