dev
Ambigapathy Vinayak ago%!(EXTRA string=11 months)
parent 71a6bde442
commit 52754001aa
  1. 9
      src/Buildtools.py
  2. 5
      src/Command.py
  3. 27
      src/Package.py
  4. 4
      src/Premake/App.py
  5. 2
      src/Premake/Wks.py
  6. 19
      src/Project.py
  7. 40
      src/main.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")

@ -0,0 +1,5 @@
import os
import sys
def exec(command):
os.system(f"{command} > bakasable.log")

@ -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()

@ -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 ""
'''
"""

@ -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"

@ -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:

@ -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()
Loading…
Cancel
Save