From 36464bc17d6dcf33242b8d75594d109e6c820fab Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 20 Sep 2021 18:22:06 -0700 Subject: [PATCH] Fix confirmation, because apparently you can't pass that along via cli vs interactively Signed-off-by: snipe --- app/Console/Commands/PaveIt.php | 82 ++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 38 deletions(-) diff --git a/app/Console/Commands/PaveIt.php b/app/Console/Commands/PaveIt.php index 34019b854d..bea97db5c7 100644 --- a/app/Console/Commands/PaveIt.php +++ b/app/Console/Commands/PaveIt.php @@ -15,7 +15,7 @@ class PaveIt extends Command * * @var string */ - protected $signature = 'snipeit:pave'; + protected $signature = 'snipeit:pave {--force : Skip the interactive yes/no prompt for confirmation}'; /** * The console command description. @@ -41,45 +41,51 @@ class PaveIt extends Command */ public function handle() { - if ($this->confirm("\n****************************************************\nTHIS WILL DELETE ALL OF THE DATA IN YOUR DATABASE. \nThere is NO undo. This WILL destroy ALL of your data. \n****************************************************\n\nDo you wish to continue? No backsies! [y|N]")) { - // List all the tables in the database so we don't have to worry about missing some as the app grows - $tables = DB::connection()->getDoctrineSchemaManager()->listTableNames(); - - $except_tables = [ - 'oauth_access_tokens', - 'oauth_clients', - 'oauth_personal_access_clients', - 'migrations', - 'settings', - 'users', - ]; - - // We only need to find out what these are so we can nuke these columns on the assets table. - $custom_fields = CustomField::get(); - foreach ($custom_fields as $custom_field) { - $this->info('Drop the '.$custom_field->db_column.' column from assets as well.'); - - if (\Schema::hasColumn('assets', $custom_field->db_column)) { - \Schema::table('assets', function ($table) use ($custom_field) { - $table->dropColumn($custom_field->db_column); - }); - } + if (!$this->option('force')) { + $confirmation = $this->confirm("\n****************************************************\nTHIS WILL DELETE ALL OF THE DATA IN YOUR DATABASE. \nThere is NO undo. This WILL destroy ALL of your data. \n****************************************************\n\nDo you wish to continue? No backsies! "); + if (!$confirmation) { + $this->error('ABORTING'); + exit(-1); } - - foreach ($tables as $table) { - if (in_array($table, $except_tables)) { - $this->info('Table '. $table. ' is skipped'); - } else { - \DB::statement('truncate '.$table); - $this->info('Table '. $table. ' is truncated'); - } - } - - // Leave in the demo oauth keys so we don't have to reset them every day in the demos - //\DB::statement('delete from users WHERE id > 2'); - \DB::statement('delete from oauth_clients WHERE id > 2'); - \DB::statement('delete from oauth_access_tokens WHERE id > 2'); } + + // List all the tables in the database so we don't have to worry about missing some as the app grows + $tables = DB::connection()->getDoctrineSchemaManager()->listTableNames(); + + $except_tables = [ + 'oauth_access_tokens', + 'oauth_clients', + 'oauth_personal_access_clients', + 'migrations', + 'settings', + 'users', + ]; + + // We only need to find out what these are so we can nuke these columns on the assets table. + $custom_fields = CustomField::get(); + foreach ($custom_fields as $custom_field) { + $this->info('DROP the '.$custom_field->db_column.' column from assets as well.'); + + if (\Schema::hasColumn('assets', $custom_field->db_column)) { + \Schema::table('assets', function ($table) use ($custom_field) { + $table->dropColumn($custom_field->db_column); + }); + } + } + + foreach ($tables as $table) { + if (in_array($table, $except_tables)) { + $this->info($table. ' is SKIPPED.'); + } else { + \DB::statement('truncate '.$table); + $this->info($table. ' is TRUNCATED.'); + } + } + + // Leave in the demo oauth keys so we don't have to reset them every day in the demos + \DB::statement('delete from oauth_clients WHERE id > 2'); + \DB::statement('delete from oauth_access_tokens WHERE id > 2'); + } } \ No newline at end of file