import asyncio
import os
from dotenv import load_dotenv
from mirage import MountMode, Workspace
from mirage.vfs.github import GitHubConfig, GitHubVFS
load_dotenv(".env.development")
async def main():
config = GitHubConfig(token=os.environ["GITHUB_TOKEN"])
vfs = GitHubVFS(
config=config, owner="my-org", repo="my-repo", ref="main")
ws = Workspace({"/github": vfs}, mode=MountMode.READ)
# List repository root
r = await ws.execute("ls /github/")
print(await r.stdout_str())
# Read a file
r = await ws.execute("cat /github/README.md")
print(await r.stdout_str())
# Search for a pattern
r = await ws.execute('rg "def main" /github/')
print(await r.stdout_str())
# Tree view
r = await ws.execute("tree -L 2 /github/")
print(await r.stdout_str())
# File metadata with SHA
r = await ws.execute("stat /github/README.md")
print(await r.stdout_str())
if __name__ == "__main__":
asyncio.run(main())