From fda8014ccea73251e4aa47c3d5261a6ee6bf0835 Mon Sep 17 00:00:00 2001
From: percious17 <unknown>
Date: Mon, 1 Dec 2008 22:18:19 +0000
Subject: [PATCH] added an echo option for all manage commands.

---
 CHANGELOG                 |  1 +
 migrate/versioning/api.py | 24 ++++++++++++++++--------
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 7a55eeb..b40655a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 0.5.0
 - SA 0.5.x support.
 - TODO:py.test is no longer used for testing.  (use nose)
+- Added --echo=True option for all commands, which will make the sqlalchemy connection echo SQL statements.
 - Better Postgres support, especially for schemas.
 - modification to the downgrade command to simplify the calling (old way still works just fine)
 
diff --git a/migrate/versioning/api.py b/migrate/versioning/api.py
index e710c34..fe44871 100644
--- a/migrate/versioning/api.py
+++ b/migrate/versioning/api.py
@@ -156,7 +156,8 @@ def version_control(url,repository,version=None,**opts):
     database schema is expected to be identical to what it would be if the
     database were created from scratch. 
     """
-    engine=create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     cls_schema.create(engine,repository,version)
 
 def db_version(url,repository,**opts):
@@ -167,7 +168,8 @@ def db_version(url,repository,**opts):
 
     The url should be any valid SQLAlchemy connection string.
     """
-    engine = create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     schema = cls_schema(engine,repository)
     return schema.version
 
@@ -202,7 +204,8 @@ def downgrade(url,repository,version,**opts):
     return _migrate(url,repository,version,upgrade=False,err=err,**opts)
 
 def _migrate(url,repository,version,upgrade,err,**opts):
-    engine = create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     schema = cls_schema(engine,repository)
     version = _migrate_version(schema,version,upgrade,err)
 
@@ -245,7 +248,8 @@ def drop_version_control(url,repository,**opts):
 
     Removes version control from a database.
     """
-    engine=create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     schema=cls_schema(engine,repository)
     schema.drop()
 
@@ -273,7 +277,8 @@ def compare_model_to_db(url,model,repository,**opts):
 
     NOTE: This is EXPERIMENTAL.
     """  # TODO: get rid of EXPERIMENTAL label
-    engine=create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     print cls_schema.compare_model_to_db(engine,model,repository)
 
 def create_model(url,repository,**opts):
@@ -283,7 +288,8 @@ def create_model(url,repository,**opts):
 
     NOTE: This is EXPERIMENTAL.
     """  # TODO: get rid of EXPERIMENTAL label
-    engine=create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     declarative = opts.get('declarative', False)
     print cls_schema.create_model(engine,repository,declarative)
 
@@ -294,7 +300,8 @@ def make_update_script_for_model(url,oldmodel,model,repository,**opts):
 
     NOTE: This is EXPERIMENTAL.
     """  # TODO: get rid of EXPERIMENTAL label
-    engine=create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     try:
         print cls_script_python.make_update_script_for_model(engine,oldmodel,model,repository,**opts)
     except exceptions.PathFoundError,e:
@@ -308,7 +315,8 @@ def update_db_from_model(url,model,repository,**opts):
 
     NOTE: This is EXPERIMENTAL.
     """  # TODO: get rid of EXPERIMENTAL label
-    engine=create_engine(url)
+    echo = 'True' == opts.get('echo', False)
+    engine = create_engine(url, echo=echo)
     schema = cls_schema(engine,repository)
     schema.update_db_from_model(model)