added basic functionality for project files

This commit is contained in:
Erik Örtenberg 2025-03-12 13:17:00 +01:00
parent f7f1cedcde
commit 2f77dba953

63
scripts/project_man.py Normal file
View File

@ -0,0 +1,63 @@
import os
from typing import Any
import toml
import datetime
def findProjectFile() -> tuple[bool, str]:
cwd = os.getcwd().split("/")
for i in range(len(cwd) - 2):
searchPath = "/".join(cwd[0:len(cwd)-i])
[exists, pathToProjectFile] = projectFileExists(searchPath)
if exists:
return (True, pathToProjectFile)
return (False, "")
def projectFileExists(path: str) -> tuple[bool, str]:
files = os.listdir(path)
for file in files:
if "gantry.toml" in file:
return (True, os.path.join(path, file))
return (False,"")
def initProjectFile(projectName: str) -> tuple[bool, str]:
cwd = os.getcwd()
projectPath = os.path.join(cwd, "gantry.toml")
[exists, existingProjectPath] = projectFileExists(cwd)
if exists:
existingProjectName = existingProjectPath.split("/")[-1]
return (False, f"Project {existingProjectName} already exists, amend it to fit your intention or delete it to create a new project")
try:
with open(projectPath, "w") as f:
parsedTOML = toml.loads(createProjectFileTemplate(projectName))
toml.dump(parsedTOML, f)
except:
return (False, "Creation of file failed, permissions may be set wrong")
return (True, projectPath)
def loadProjectFile() -> tuple[bool, str | dict[str, Any]] :
[exists, path] = findProjectFile()
if not exists:
return (False, "")
try:
with open(path, "r") as f:
toml.load
parsedTOML = toml.load(f)
print(parsedTOML)
return (True, parsedTOML)
except:
return (False, "Reading Project file failed, permissions may be set wrong")
def createProjectFileTemplate(projectName: str) -> str:
return f"""
title = "{projectName}"
createdAt = "{datetime.time()}"
maintainer = ""
email = ""
version = "0.0.1"
"""
if __name__ == "__main__":
print(loadProjectFile())
print(findProjectFile())