diff --git a/rest_framework/management/__init__.py b/rest_framework/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/rest_framework/management/commands/__init__.py b/rest_framework/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/rest_framework/management/commands/generate_schema.py b/rest_framework/management/commands/generate_schema.py new file mode 100644 index 000000000..bc4af6a94 --- /dev/null +++ b/rest_framework/management/commands/generate_schema.py @@ -0,0 +1,36 @@ +from django.core.management.base import BaseCommand + +from rest_framework.renderers import CoreJSONRenderer +from rest_framework.schemas import SchemaGenerator + + +class Command(BaseCommand): + help = "Generates configured API schema for project." + + def add_arguments(self, parser): + # TODO + # SchemaGenerator allows passing: + # + # - title + # - url + # - description + # - urlconf + # - patterns + # + # Don't particularly want to pass these on the command-line. + # conf file? + # + # Other options to consider: + # - indent + # - ... + pass + + def handle(self, *args, **options): + + renderer = CoreJSONRenderer() + generator = SchemaGenerator() + schema = generator.get_schema(request=None, public=True) + + rendered_schema = renderer.render(schema, renderer_context={}).decode('utf8') + + self.stdout.write(rendered_schema)