fix: check if rollback callback is defined

Don't raise exceptions where a simple print() will suffice
Print exception before prompting for rollback

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
Akhil Narang 2024-03-28 15:57:56 +05:30
parent c58e986a87
commit 4b2fde1d8f
No known key found for this signature in database
GPG key ID: 9DCC61E211BF645F
3 changed files with 10 additions and 3 deletions

View file

@ -2,6 +2,7 @@
import os
import shutil
import sys
import traceback
# imports - third party imports
import click
@ -100,8 +101,10 @@ def new_site(
use(site)
except Exception:
traceback.print_exc()
if sys.__stdin__.isatty() and click.confirm("Do you want to rollback the failed site?", abort=True):
rollback_callback.run()
sys.exit(1)
@click.command("restore")

View file

@ -1,4 +1,5 @@
import os
import sys
import click
@ -36,7 +37,8 @@ def setup_database(force, verbose, no_mariadb_socket=False):
if force or (db_name not in dbman.get_database_list()):
dbman.drop_database(db_name)
else:
raise Exception(f"Database {db_name} already exists")
print(f"Database {db_name} already exists, please drop it manually or pass `--force`.")
sys.exit(1)
dbman.create_database(db_name)
if verbose:

View file

@ -89,7 +89,8 @@ def _new_site(
enable_scheduler = False
make_site_dirs()
rollback_callback.add(lambda: shutil.rmtree(frappe.get_site_path()))
if rollback_callback:
rollback_callback.add(lambda: shutil.rmtree(frappe.get_site_path()))
with filelock("bench_new_site", timeout=1):
install_db(
@ -173,7 +174,8 @@ def install_db(
if setup:
setup_database(force, verbose, no_mariadb_socket)
rollback_callback.add(drop_user_and_database(db_name, db_user or db_name))
if rollback_callback:
rollback_callback.add(drop_user_and_database(db_name, db_user or db_name))
bootstrap_database(
verbose=verbose,