dev
Ambigapathy Vinayak ago%!(EXTRA string=11 months)
parent 52754001aa
commit e39362ddf1
  1. 33
      src/Package.py
  2. 2
      src/Project.py
  3. 15
      src/ToolChaine.py
  4. 58
      src/main.py

@ -1,6 +1,10 @@
import shutil
import stat
import os import os
import json import json
import Command import Command
import ToolChaine
import webbrowser
def add(author, package) -> None: def add(author, package) -> None:
f_conf = open("./config.json", "r") f_conf = open("./config.json", "r")
@ -14,6 +18,26 @@ def add(author, package) -> None:
install(author, package) install(author, package)
def remove(package) -> None:
f_conf = open("./config.json", "r")
conf = json.loads(f_conf.read())
f_conf.close()
conf["packages"] = [pkg for pkg in conf["packages"] if pkg['name'] != package]
r_remove(package)
f_conf = open("./config.json", "w")
f_conf.write(json.dumps(conf, indent=4))
f_conf.close()
def r_remove(package) -> None:
print(f"Removing {package}")
if not os.path.exists(f"./vendor/{package}/") : raise Exception(f"Package {package} not the dependencies")
if os.path.exists(f"./vendor/{package}/config.json") :
r_pkgs = json.loads(open(f"./vendor/{package}/config.json", "r").read())["packages"]
for r_pkg in r_pkgs:
r_remove(r_pkg["name"])
os.chmod(f"./vendor/{package}/", stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
shutil.rmtree(f"./vendor/{package}/", ignore_errors=True)
def install_root() -> None: def install_root() -> None:
if not os.path.exists("./config.json"): if not os.path.exists("./config.json"):
raise Exception("No package config file") raise Exception("No package config file")
@ -26,7 +50,8 @@ def install_root() -> None:
def install(author, package) -> None: def install(author, package) -> None:
if os.path.exists(f"./vendor/{package}"): if os.path.exists(f"./vendor/{package}"):
return return
if not ToolChaine.tool_exist("git"):
raise Exception("Tool missing git")
Command.exec(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"): if os.path.exists(f"./vendor/{package}/config.json"):
@ -50,6 +75,12 @@ def install(author, package) -> None:
dep.write("\n" + pkg_deps) dep.write("\n" + pkg_deps)
dep.close() dep.close()
def load_doc(package) -> None:
if not ToolChaine.tool_exist("doxygen"):
raise Exception("Tool missing doxygen")
Command.exec(f"doxygen ./vendor/{package}")
webbrowser.open("file://" + os.path.realpath(f"./vendor/{package}/html/index.html"))

@ -20,7 +20,6 @@ class Project:
def create(self) -> None: def create(self) -> None:
self.create_folder() self.create_folder()
self.config() self.config()
if not self.as_git_repo(): self.init_git_repo()
def config(self) -> None: def config(self) -> None:
conf = { conf = {
@ -70,6 +69,7 @@ class Project:
return os.path.exists("./.git") return os.path.exists("./.git")
def init_git_repo(self) -> None: def init_git_repo(self) -> None:
if not self.as_git_repo(): return
Command.exec("git init --initial-branch=main") Command.exec("git init --initial-branch=main")
Command.exec("git add .") Command.exec("git add .")
Command.exec('git commit -m "Initial commit"') Command.exec('git commit -m "Initial commit"')

@ -1,5 +1,6 @@
import platform import platform
import os import os
import json
import Command import Command
def tool_exist(name: str) -> bool: def tool_exist(name: str) -> bool:
@ -13,7 +14,7 @@ def search_tools(tools: str) -> str:
none_tools.append(tool) none_tools.append(tool)
return none_tools return none_tools
def verifie_tools() -> None: def verifie_build_tools() -> None:
none_tools: str = [] none_tools: str = []
match platform.system(): match platform.system():
case "Windows": case "Windows":
@ -25,10 +26,18 @@ def verifie_tools() -> None:
if len(none_tools) > 0: if len(none_tools) > 0:
raise Exception(f"Tools missing {none_tools}") raise Exception(f"Tools missing {none_tools}")
def run(config) -> None:
if not os.path.exists("./config.json"): raise Exception("Project not found")
conf = json.loads(open("./config.json").read())
name = conf["name"].lower()
print(f"./bin/{platform.system().lower()}-{platform.machine().lower()}-{config.lower()}/{name}/{name}")
if not os.path.exists(f"./bin/{platform.system().lower()}-{platform.machine().lower()}-{config.lower()}/{name}/{name}"):
raise Exception("Executable not found")
Command.exec(f"./bin/{platform.system().lower()}-{platform.machine().lower()}-{config.lower()}/{name}/{name}")
def build() -> None: def build(config) -> None:
verifie_tools() verifie_build_tools()
match platform.system(): match platform.system():
case "Windows": case "Windows":
Command.exec("premake5 vs2022") Command.exec("premake5 vs2022")

@ -1,46 +1,78 @@
import os import os
import sys
import argparse import argparse
import Package import Package
from Buildtools import verifie_tools import ToolChaine
from Project import Project from Project import Project
def init(args) -> None: def init(args) -> None:
if not os.path.exists(args.path): os.mkdir(args.path) print(f"Initialising new project : {args.name} by {args.owner}")
os.chdir(args.path) print(f"Path to the project : {args.path}")
print(f"Git repository : {args.repo}")
project = Project(args.name, args.repo, args.owner) project = Project(args.name, args.repo, args.owner)
project.create() project.create()
if args.git_init:
print("Initialising local git folder")
project.init_git_repo()
def add(args) -> None: def add(args) -> None:
Package.add(args.author, args.name) Package.add(args.author, args.name)
def remove(args) -> None:
Package.remove(args.name)
def install(args) -> None: def install(args) -> None:
Package.install_root() Package.install_root()
def doc(args) -> None:
Package.load_doc(args.package)
def build(args) -> None:
ToolChaine.build(args.config)
def run(args) -> None:
ToolChaine.run(args.config)
def bakasable() -> None: def bakasable() -> None:
program_parser = argparse.ArgumentParser(prog="bakasable", description="baka developpement enviromment") program_parser = argparse.ArgumentParser(prog="bakasable", description="baka developpement enviromment")
program_parser.add_argument("-p", "--path", type=str, default="./", dest="path", help="path to the project")
sub_parsers = program_parser.add_subparsers(title="subcommmands", help="operations on your project") 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 = 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("-n", "--name", type=str, required=True, dest="name", help="name of your")
init_parser.add_argument("-p", "--path", type=str, default="./", dest="path") init_parser.add_argument("-r", "--repo", type=str, default="", dest="repo", help="git repository where project is stored")
init_parser.add_argument("-r", "--repo", type=str, default="", dest="repo") init_parser.add_argument("-o", "--owner", type=str, default="", dest="owner", help="owner of the project")
init_parser.add_argument("-o", "--owner", type=str, default="", dest="owner") init_parser.add_argument("-g", "--git-init", action="store_const", const=True, default=False, dest="git_init", help="initialise a local git folder")
init_parser.set_defaults(func=init) init_parser.set_defaults(func=init)
add_parser = sub_parsers.add_parser("add", help="add a module to your project") add_parser = sub_parsers.add_parser("add", help="add a module to your project from github")
add_parser.add_argument("-n", "--name", type=str, required=True, dest="name") add_parser.add_argument("-n", "--name", type=str, required=True, dest="name", help="name of the github repository")
add_parser.add_argument("-a", "--author", type=str, required=True, dest="author") add_parser.add_argument("-a", "--author", type=str, required=True, dest="author", help="name of the github user")
add_parser.set_defaults(func=add) add_parser.set_defaults(func=add)
install_parser = sub_parsers.add_parser("install", help="add a module to your project") remove_parser = sub_parsers.add_parser("remove", help="remove a module from your project")
remove_parser.add_argument("-n", "--name", type=str, required=True, dest="config", help="name of the github repository")
remove_parser.set_defaults(func=remove)
install_parser = sub_parsers.add_parser("install", help="installs the dependencies of your project")
install_parser.set_defaults(func=install) install_parser.set_defaults(func=install)
build_parser = sub_parsers.add_parser("build", help="")
build_parser.add_argument("-c", "--config", type=str, required=True, dest="config", help="", choices=["Debug", "Release"])
build_parser.set_defaults(func=build)
run_parser = sub_parsers.add_parser("run", help="")
run_parser.add_argument("-c", "--config", type=str, required=True, dest="config", help="", choices=["Debug", "Release"])
run_parser.set_defaults(func=run)
args = program_parser.parse_args() args = program_parser.parse_args()
if not os.path.exists(args.path): os.mkdir(args.path)
os.chdir(args.path)
args.func(args) args.func(args)
if __name__ == "__main__": if __name__ == "__main__":
print(""" ____ _ _ __ _ ____ _ ____ _ _____ print(
"""
____ _ _ __ _ ____ _ ____ _ _____
| __ ) / \\ | |/ / / \\ / ___| / \\ | __ )| | | ____| | __ ) / \\ | |/ / / \\ / ___| / \\ | __ )| | | ____|
| _ \\ / _ \\ | ' / / _ \\ \\___ \\ / _ \\ | _ \\| | | _| | _ \\ / _ \\ | ' / / _ \\ \\___ \\ / _ \\ | _ \\| | | _|
| |_) / ___ \\| . \\ / ___ \\ ___) / ___ \\| |_) | |___| |___ | |_) / ___ \\| . \\ / ___ \\ ___) / ___ \\| |_) | |___| |___

Loading…
Cancel
Save