From 043a9688576b31a7c6bb0a61080da34e6da1f5d8 Mon Sep 17 00:00:00 2001 From: Lucas Bustamante Date: Sat, 23 Mar 2024 14:34:07 -0300 Subject: [PATCH] Delete dangling without asking --- qit | Bin 2074288 -> 2075344 bytes .../EnvironmentDanglingCleanup.php | 77 ++++++++++++------ 2 files changed, 52 insertions(+), 25 deletions(-) diff --git a/qit b/qit index dcdd3399a85169ff3bbddbe47d275fca9517fd04..70ea2fbe15d2fb69c013970d7dd264697f5b45f2 100755 GIT binary patch delta 67297 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 rT=q`op)B^header_printed ) { - $this->output->writeln( 'Cleaning up dangling temporary environments...' ); + $this->output->writeln( 'Removing dangling test environments...' ); $this->header_printed = true; } @@ -117,37 +117,64 @@ public function cleanup_dangling(): void { return; } - // Skip asking the user permission to delete in this directory if they answer with an "A". - $always_delete_from_this_directory = $this->cache->get( 'always_delete_from_this_directory' ); - $parent_dir = $this->get_parent_dir_to_delete(); + $expected_directories = [ + 'bin', + 'cache', + 'html', + 'mu-plugins', + ]; - if ( $always_delete_from_this_directory !== $parent_dir && ! is_ci() ) { - $this->output->writeln( "Found dangling temporary environments in directory: $parent_dir" ); + $allowed_extensions = [ + 'php', + 'js', + 'json', + ]; - $question = new Question( - "Do you want to clean up these environments? [Y/n/A]\nA: Yes, and always clean up in this directory in the future. (Recommended)\n", - 'n' // Default to 'n'. - ); + foreach ( $this->dangling_directories as $directory ) { + $unexpected_contents = null; + + /* + * We are being extra zealous here. + * We already have good security boundaries for deleting files, but since + * this is a recursive directory deletion, we validate the contents of the directory to be deleted. + */ + /** @var \DirectoryIterator $file_info */ + foreach ( new \DirectoryIterator( $directory ) as $file_info ) { + if ( $file_info->isDot() || $file_info->isLink() ) { + continue; + } - $answer = strtolower( ( new QuestionHelper() )->ask( $this->input, $this->output, $question ) ); + if ( $file_info->isDir() ) { + if ( ! in_array( $file_info->getFilename(), $expected_directories, true ) ) { + $this->debug_output( "Found non-expected directory: {$file_info->getPathname()}" ); + $unexpected_contents = $file_info; + break; + } + } elseif ( $file_info->isFile() ) { + $extension = pathinfo( $file_info->getFilename(), PATHINFO_EXTENSION ); + if ( ! in_array( $extension, $allowed_extensions, true ) ) { + $this->debug_output( "Found non-expected file: {$file_info->getPathname()}" ); + $unexpected_contents = $file_info; + break; + } + } + } - switch ( $answer ) { - case 'y': - // no-op. Proceed with the action. - break; - case 'a': - $this->cache->set( 'always_delete_from_this_directory', $parent_dir, YEAR_IN_SECONDS ); - break; - case 'n': - default: - $this->output->writeln( 'Please delete the dangling environments in that directory manually.' ); + if ( ! is_null( $unexpected_contents ) ) { + $this->output->writeln( 'Failed to cleanup dangling directory' ); + $this->output->writeln( sprintf( 'Unexpected file: %s', $unexpected_contents->getFilename() ) ); - return; + // Ask the user if we can delete it. + $question = new Question( 'Do you want to delete this directory? [y/N] ', 'n' ); + $answer = ( new QuestionHelper() )->ask( $this->input, $this->output, $question ); + if ( strtolower( $answer ) !== 'y' ) { + $this->output->writeln( 'Skipping directory deletion.' ); + continue; + } } - } - foreach ( $this->dangling_directories as $directory ) { - $this->output->writeln( "Removing dangling directory: {$directory}" ); + $this->debug_output( "Removing dangling directory: {$directory}" ); + SafeRemove::delete_dir( $directory, Environment::get_temp_envs_dir() ); } }