#!/usr/bin/env python3 """Example: Using YAML configuration file with py-wikijs. This example shows how to use a YAML configuration file to configure the WikiJS client. Prerequisites: pip install pyyaml Setup: 1. Copy config.yaml.example to config.yaml 2. Update config.yaml with your Wiki.js credentials 3. Run this script Usage: python using_yaml_config.py """ import sys from pathlib import Path # Add examples directory to path sys.path.insert(0, str(Path(__file__).parent)) try: import yaml except ImportError: print("āŒ PyYAML is required for YAML config files") print("Install with: pip install pyyaml") sys.exit(1) from config_helper import create_client_from_config, load_config def main(): """Main function.""" print("=" * 60) print("Using YAML Configuration with py-wikijs") print("=" * 60) yaml_file = Path(__file__).parent / "config.yaml" if not yaml_file.exists(): print(f"\nāš ļø config.yaml not found at {yaml_file}") print(" Copy config.yaml.example to config.yaml and update it") return 1 try: # Load configuration print("\nšŸ“ Loading configuration from config.yaml...") config = load_config(yaml_file) print("āœ… Configuration loaded successfully") print(f"\nConfiguration:") print(f" URL: {config.get('wikijs', {}).get('url')}") print(f" Auth method: {config.get('wikijs', {}).get('auth', {}).get('method')}") print(f" Timeout: {config.get('client', {}).get('timeout')}s") print(f" Rate limit: {config.get('client', {}).get('rate_limit')} req/s") print(f" Log level: {config.get('logging', {}).get('level')}") # Create client with environment-specific config env = config.get("environments", {}).get("development", {}) if env: print(f"\nšŸ”§ Using development environment settings") print("\nšŸ”Œ Creating WikiJS client...") client = create_client_from_config(config) print(f"āœ… Client created successfully") # Test connection print("\nšŸ” Testing connection...") pages = client.pages.list() print(f"āœ… Connected! Found {len(pages)} page(s)") if pages: print(f"\nšŸ“„ Sample pages:") for page in pages[:3]: # Show first 3 print(f" - [{page.id}] {page.title} ({page.path})") # Show metrics metrics = client.get_metrics() print(f"\nšŸ“Š Client Metrics:") print(f" Total requests: {metrics['total_requests']}") print(f" Error rate: {metrics.get('error_rate', 0):.2f}%") except FileNotFoundError as e: print(f"āŒ {e}") return 1 except Exception as e: print(f"āŒ Error: {e}") import traceback traceback.print_exc() return 1 print("\n" + "=" * 60) print("āœ… Example completed successfully!") print("=" * 60) return 0 if __name__ == "__main__": sys.exit(main())