"""
Run weekly blog generation and publish to Shopify.

Usage:
  python manage.py run_weekly_blog_automation
  python manage.py run_weekly_blog_automation --limit=1
  python manage.py run_weekly_blog_automation --dry-run
  python manage.py run_weekly_blog_automation --sync --limit=1
"""
import json

from django.core.management.base import BaseCommand

from blogs.services.automation_service import BlogAutomationService


class Command(BaseCommand):
    help = "Plan weekly blog topics on random days (generation runs on publish day)."

    def add_arguments(self, parser):
        parser.add_argument(
            "--limit",
            type=int,
            default=None,
            help="Max posts to process this run (default: posts_per_week from settings).",
        )
        parser.add_argument(
            "--dry-run",
            action="store_true",
            help="Plan topics only; do not generate or publish.",
        )
        parser.add_argument(
            "--sync",
            action="store_true",
            help="Generate and publish immediately (blocks; for testing).",
        )

    def handle(self, *args, **options):
        try:
            result = BlogAutomationService.run_weekly(
                limit=options.get("limit"),
                dry_run=options.get("dry_run"),
                sync=options.get("sync"),
            )
        except Exception as exc:
            self.stderr.write(self.style.ERROR(str(exc)))
            return

        self.stdout.write(json.dumps(result, indent=2, default=str))
