feat: complete assignment
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import os
|
||||
|
||||
from google.genai import types
|
||||
|
||||
|
||||
def get_files_info(working_directory, directory: str = ".") -> str:
|
||||
try:
|
||||
wdp = os.path.abspath(working_directory)
|
||||
target = os.path.normpath(os.path.join(wdp, directory))
|
||||
valid_target_dir = os.path.commonpath([wdp, target]) == wdp
|
||||
|
||||
if not valid_target_dir:
|
||||
return f'Error: Cannot list "{directory}" as it is outside the permitted directory'
|
||||
|
||||
if not os.path.isdir(target):
|
||||
return f'Error: "{directory}" is not a directory'
|
||||
|
||||
file_descriptors = []
|
||||
|
||||
for file_name in os.listdir(target):
|
||||
file_path = os.path.normpath(os.path.join(target, file_name))
|
||||
size = os.path.getsize(file_path)
|
||||
is_dir = os.path.isdir(file_path)
|
||||
file_descriptors.append(f"- {file_name}: file_size={size}, is_dir={is_dir}")
|
||||
|
||||
return "\n".join(file_descriptors)
|
||||
except Exception as e:
|
||||
return f"Error: {e}"
|
||||
|
||||
|
||||
schema_get_files_info = types.FunctionDeclaration(
|
||||
name="get_files_info",
|
||||
description="Lists files in a specified directory relative to the working directory, providing file size and directory status",
|
||||
parameters=types.Schema(
|
||||
type=types.Type.OBJECT,
|
||||
properties={
|
||||
"directory": types.Schema(
|
||||
type=types.Type.STRING,
|
||||
description="Directory path to list files from, relative to the working directory (default is the working directory itself)",
|
||||
),
|
||||
},
|
||||
required=["directory"],
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user