plexus.cli.procedure.lua_dsl.primitives.file module

File Primitive - File I/O operations for workflows.

Provides: - File.read(path) - Read file contents - File.write(path, content) - Write content to file - File.exists(path) - Check if file exists - File.size(path) - Get file size in bytes

class plexus.cli.procedure.lua_dsl.primitives.file.FilePrimitive(base_path: str | None = None)

Bases: object

Handles file operations for procedures.

Enables workflows to: - Read file contents - Write data to files - Check file existence - Get file metadata

Initialize File primitive.

Args:

base_path: Optional base directory for relative paths (defaults to cwd)

__init__(base_path: str | None = None)

Initialize File primitive.

Args:

base_path: Optional base directory for relative paths (defaults to cwd)

exists(path: str) bool

Check if file exists.

Args:

path: File path to check (absolute or relative to base_path)

Returns:

True if file exists, False otherwise

Example (Lua):
if File.exists(“cache.json”) then

local data = File.read(“cache.json”) Log.info(“Using cached data”)

else

Log.info(“No cache found”)

end

read(path: str) str

Read file contents as string.

Args:

path: File path to read (absolute or relative to base_path)

Returns:

File contents as string

Raises:

FileNotFoundError: If file doesn’t exist IOError: If file cannot be read

Example (Lua):

local config = File.read(“config.json”) Log.info(“Config loaded”, {length = #config})

size(path: str) int

Get file size in bytes.

Args:

path: File path to check (absolute or relative to base_path)

Returns:

File size in bytes

Raises:

FileNotFoundError: If file doesn’t exist

Example (Lua):

local size = File.size(“data.csv”) Log.info(“File size”, {bytes = size, kb = size / 1024})

write(path: str, content: str) bool

Write content to file.

Args:

path: File path to write (absolute or relative to base_path) content: Content to write

Returns:

True if successful

Raises:

IOError: If file cannot be written

Example (Lua):

local data = Json.encode({status = “complete”}) File.write(“output.json”, data) Log.info(“Data written”)