Files
gpt-pilot/pilot/utils/files.py
2023-10-03 19:04:17 +11:00

44 lines
1.5 KiB
Python

import os
from pathlib import Path
from database.database import save_user_app
def get_parent_folder(folder_name):
current_path = Path(os.path.abspath(__file__)) # get the path of the current script
while current_path.name != folder_name: # while the current folder name is not 'folder_name'
current_path = current_path.parent # go up one level
return current_path.parent
def setup_workspace(args) -> str:
"""
Creates & returns the path to the project workspace.
Also creates a 'tests' folder inside the workspace.
:param args: may contain 'workspace' or 'root' keys
"""
# `args['workspace']` can be used to work with an existing workspace at the specified path.
# `args['root']` is used by VS Code for (nearly) the same purpose, but `args['name']` is appended to it.
workspace = args.get('workspace')
if workspace:
try:
save_user_app(args['user_id'], args['app_id'], workspace)
return workspace
except Exception as e:
print(str(e))
return args['workspace']
root = args.get('root') or get_parent_folder('pilot')
project_path = create_directory(os.path.join(root, 'workspace'), args.get('name', 'default_project_name'))
create_directory(project_path, 'tests')
return project_path
def create_directory(parent_directory, new_directory):
new_directory_path = os.path.join(parent_directory, new_directory)
os.makedirs(new_directory_path, exist_ok=True)
return new_directory_path