Continued on the creation and recreation of a project

dev
Ambigapathy Vinayak ago%!(EXTRA string=1 year)
parent ff6e01acd0
commit 71a6bde442
  1. 20
      src/Buildtools.py
  2. 47
      src/Package.py
  3. 14
      src/Premake/App.py
  4. 8
      src/Premake/Wks.py
  5. 46
      src/Project.py
  6. 15
      src/main.py

@ -1,4 +1,5 @@
import platform import platform
import os
def tool_exist(name: str) -> bool: def tool_exist(name: str) -> bool:
from shutil import which from shutil import which
@ -15,10 +16,25 @@ def verifie_tools() -> None:
none_tools: str = [] none_tools: str = []
match platform.system(): match platform.system():
case "Windows": case "Windows":
none_tools = search_tools(["git"]) none_tools = search_tools(["git", "dotnet", "premake5"])
case "Linux": case "Linux":
none_tools = search_tools(["git"]) none_tools = search_tools(["git", "g++", "premake5", "make"])
case _: case _:
raise Exception("Platform not supported") raise Exception("Platform not supported")
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 build() -> None:
verifie_tools()
match platform.system():
case "Windows":
os.system("premake5 vs2022")
os.system("dotnet build")
case "Linux":
os.system("premake5 gmake2")
os.system("make")
case _:
raise Exception("Platform not supported")

@ -1,2 +1,47 @@
def add(name: str) -> None: import os
import json
def add(author, package: str) -> 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})
f_conf.write(json.dumps(conf, indent=4))
f_conf.close()
install(author, package)
def install_root() -> None:
f_conf = open("./config.json", "r")
conf = json.loads(f_conf.read())
f_conf.close()
for package in conf["packages"]:
install(package)
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}")
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"])
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()

@ -14,7 +14,7 @@ def get() -> str:
"src/**.cpp" "src/**.cpp"
} }
filter "configurations:Debug" filter "configurations:Debug"
defines defines
{ {
"BK_DEBUG", "BK_DEBUG",
@ -24,7 +24,7 @@ def get() -> str:
symbols "on" symbols "on"
filter "configurations:Release" filter "configurations:Release"
defines defines
{ {
"BK_RELEASE", "BK_RELEASE",
@ -33,22 +33,18 @@ def get() -> str:
runtime "Release" runtime "Release"
optimize "on" optimize "on"
filter "system:windows" filter "system:windows"
staticruntime "on" staticruntime "on"
defines defines
{ {
"BK_PLATFORM_WINDOWS" "BK_PLATFORM_WINDOWS"
} }
filter "system:linux" filter "system:linux"
staticruntime "on" staticruntime "on"
defines defines
{ {
"BK_PLATFORM_LINUX" "BK_PLATFORM_LINUX"
} }
filter "" filter ""
includedirs
links
''' '''

@ -10,11 +10,11 @@ def get(name) -> str:
} }
linkgroups "On" linkgroups "On"
outputdir = "%{cfg.system}-%{cfg.architecture}-%{cfg.buildcfg}" outputdir = "%{cfg.system}-%{cfg.architecture}-%{cfg.buildcfg}"
include "Depedencies.lua" include "dependencies.lua"
group "App" group "App"
include "app" include "app"
group "" group ""
''' '''

@ -1,8 +1,15 @@
import os import os
import json
import Premake import Premake
class Project: class Project:
def __init__(self, name) -> None: def __init__(self, conf) -> None:
self.owner = conf["owner"]
self.name = conf["name"]
self.git_repo = conf["git"]
def __init__(self, name, author = "") -> None:
self.owner = author
self.name = name self.name = name
self.git_repo = "" self.git_repo = ""
@ -11,26 +18,56 @@ class Project:
def create(self) -> None: def create(self) -> None:
self.create_folder() self.create_folder()
self.premake_conf() self.config()
if not self.as_git_repo(): self.init_git_repo() if not self.as_git_repo(): self.init_git_repo()
def premake_conf(self) -> None: def config(self) -> None:
conf = {
"name": self.name,
"owner": self.owner,
"git": self.git_repo,
"packages": []
}
file_conf = open("./config.json", "w")
file_conf.write(json.dumps(conf, indent=4))
file_conf.close()
wks = open("./premake5.lua", "w") wks = open("./premake5.lua", "w")
wks.write(Premake.Wks.get(self.name)) wks.write(Premake.Wks.get(self.name))
wks.close() wks.close()
app = open("./app/premake5.lua", "w") app = open("./app/premake5.lua", "w")
app.write(Premake.App.get()) app.write(Premake.App.get())
app.close() app.close()
dep = open("./deps.lua", "w")
dep.write("IncludeDirs = {}")
dep.close()
git_ign = open("./.gitignore", "w")
git_ign.write("""/vendor/
/bin/
/bin-int/
/.vscode/
/.vs/
/docs/
**.log
**.sln
**.vcxproj*
**.make
**Makefile
**deps.lua
""")
def create_folder(self) -> None: def create_folder(self) -> None:
try: try:
os.mkdir("./app") os.mkdir("./app")
os.mkdir("./vendor") os.mkdir("./vendor")
os.mkdir("./app/src") os.mkdir("./app/src")
except: raise Exception("A directory already exists.") except: raise Exception("Directory already exists.")
create_file("./dependencies.lua")
create_file("./deps.lua")
create_file("./app/src/app.cpp") create_file("./app/src/app.cpp")
create_file("./premake5.lua") create_file("./premake5.lua")
create_file("./app/premake5.lua") create_file("./app/premake5.lua")
create_file("./config.json")
create_file("./.gitignore")
def as_git_repo(self) -> bool: def as_git_repo(self) -> bool:
return os.path.exists("./.git") return os.path.exists("./.git")
@ -41,6 +78,7 @@ class Project:
os.system('git commit -m "Initial commit"') os.system('git commit -m "Initial commit"')
if len(self.git_repo) > 0: os.system(f'git remote add origin ${self.git_repo}') if len(self.git_repo) > 0: os.system(f'git remote add origin ${self.git_repo}')
def create_file(path) -> None: def create_file(path) -> None:
file = open(path, "w") file = open(path, "w")
file.close() file.close()

@ -1,16 +1,23 @@
import os import os
import sys import sys
import Package
from Buildtools import verifie_tools from Buildtools import verifie_tools
from Project import Project from Project import Project
def setup() -> None: def bakasable() -> None:
if len(sys.argv) >= 2: if len(sys.argv) >= 2:
if not os.path.exists(sys.argv[1]): os.mkdir(sys.argv[1]) if not os.path.exists(sys.argv[1]): os.mkdir(sys.argv[1])
os.chdir(sys.argv[1]) os.chdir(sys.argv[1])
verifie_tools() project = Project("Test")
project: Project = Project("Test")
project.create() project.create()
Package.add("anulax1225", "bakatools")
if __name__ == "__main__": if __name__ == "__main__":
setup() print(""" ____ _ _ __ _ ____ _ ____ _ _____
| __ ) / \\ | |/ / / \\ / ___| / \\ | __ )| | | ____|
| _ \\ / _ \\ | ' / / _ \\ \\___ \\ / _ \\ | _ \\| | | _|
| |_) / ___ \\| . \\ / ___ \\ ___) / ___ \\| |_) | |___| |___
|____/_/ \\_\\_|\\_\\/_/ \\_\\____/_/ \\_\\____/|_____|_____|
""")
bakasable()
Loading…
Cancel
Save