From ab587fa51a3be3ffc6f011189c0abab32dec6155 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Wed, 4 Dec 2013 13:55:20 +0000 Subject: [PATCH] Add --dry-run option to makemigrations --- .../management/commands/makemigrations.py | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py index 1079b4269c9..bb07160bb6a 100644 --- a/django/core/management/commands/makemigrations.py +++ b/django/core/management/commands/makemigrations.py @@ -14,17 +14,18 @@ from django.db.models.loading import cache class Command(BaseCommand): option_list = BaseCommand.option_list + ( - make_option('--empty', action='store_true', dest='empty', default=False, - help='Make a blank migration.'), + make_option('--dry-run', action='store_true', dest='dry_run', default=False, + help="Just show what migrations would be made; don't actually write them."), ) help = "Creates new migration(s) for apps." - usage_str = "Usage: ./manage.py makemigrations [--empty] [app [app ...]]" + usage_str = "Usage: ./manage.py makemigrations [--dry-run] [app [app ...]]" def handle(self, *app_labels, **options): self.verbosity = int(options.get('verbosity')) self.interactive = options.get('interactive') + self.dry_run = options.get('dry_run', False) # Make sure the app they asked for exists app_labels = set(app_labels) @@ -73,15 +74,16 @@ class Command(BaseCommand): for operation in migration.operations: self.stdout.write(" - %s\n" % operation.describe()) # Write it - migrations_directory = os.path.dirname(writer.path) - if not directory_created.get(app_label, False): - if not os.path.isdir(migrations_directory): - os.mkdir(migrations_directory) - init_path = os.path.join(migrations_directory, "__init__.py") - if not os.path.isfile(init_path): - open(init_path, "w").close() - # We just do this once per app - directory_created[app_label] = True - migration_string = writer.as_string() - with open(writer.path, "wb") as fh: - fh.write(migration_string) + if not self.dry_run: + migrations_directory = os.path.dirname(writer.path) + if not directory_created.get(app_label, False): + if not os.path.isdir(migrations_directory): + os.mkdir(migrations_directory) + init_path = os.path.join(migrations_directory, "__init__.py") + if not os.path.isfile(init_path): + open(init_path, "w").close() + # We just do this once per app + directory_created[app_label] = True + migration_string = writer.as_string() + with open(writer.path, "wb") as fh: + fh.write(migration_string)