import asyncio
import os
from dotenv import load_dotenv
from mirage import MountMode, Workspace
from mirage.resource.notion import NotionConfig, NotionResource
load_dotenv(".env.development")
config = NotionConfig(api_key=os.environ["NOTION_API_KEY"])
resource = NotionResource(config=config)
async def main():
ws = Workspace({"/notion": resource}, mode=MountMode.WRITE)
# List top-level pages
r = await ws.execute("ls /notion/pages/")
print(await r.stdout_str())
# Read a page
r = await ws.execute(
'cat "/notion/pages/Project-Roadmap__a1b2c3d4/page.json"'
)
print(await r.stdout_str())
# Search across all pages
r = await ws.execute('grep "deadline" /notion/pages/')
print(await r.stdout_str())
# Tree view
r = await ws.execute("tree -L 2 /notion/")
print(await r.stdout_str())
# Search pages with the Notion search API
r = await ws.execute('notion-search --query "Roadmap" --limit 5')
print(await r.stdout_str())
# Create a new page
r = await ws.execute(
'notion-page-create --json \'{"parent":{"page_id":"a1b2c3d4"},'
'"properties":{"title":[{"text":{"content":"New Page"}}]}}\''
)
print(await r.stdout_str())
# Append content to an existing page
r = await ws.execute(
'notion-block-append --params \'{"block_id":"a1b2c3d4"}\''
' --json \'{"children":[{"type":"paragraph","paragraph":'
'{"rich_text":[{"text":{"content":"Appended paragraph"}}]}}]}\''
)
print(await r.stdout_str())
if __name__ == "__main__":
asyncio.run(main())