2022-04-08 07:52:16 +00:00
# include "ICommand.h"
2022-07-20 20:30:16 +00:00
# include <Interpreters/Context.h>
2022-04-08 07:52:16 +00:00
namespace DB
{
namespace ErrorCodes
{
extern const int BAD_ARGUMENTS ;
}
2022-12-08 17:20:54 +00:00
class CommandRemove final : public ICommand
2022-04-08 07:52:16 +00:00
{
public :
CommandRemove ( )
{
command_name = " remove " ;
description = " Remove file or directory with all children. Throws exception if file doesn't exists. \n Path should be in format './' or './path' or 'path' " ;
2022-06-16 17:38:33 +00:00
usage = " remove [OPTION]... <PATH> " ;
2022-04-08 07:52:16 +00:00
}
void processOptions (
2022-06-06 11:14:50 +00:00
Poco : : Util : : LayeredConfiguration & ,
2022-06-16 17:38:33 +00:00
po : : variables_map & ) const override
{ }
2022-04-08 07:52:16 +00:00
2022-06-16 17:38:33 +00:00
void execute (
const std : : vector < String > & command_arguments ,
2023-11-30 03:09:55 +00:00
std : : shared_ptr < DiskSelector > & disk_selector ,
2022-06-16 17:38:33 +00:00
Poco : : Util : : LayeredConfiguration & config ) override
2022-04-08 07:52:16 +00:00
{
2022-06-16 17:38:33 +00:00
if ( command_arguments . size ( ) ! = 1 )
2022-04-08 07:52:16 +00:00
{
printHelpMessage ( ) ;
2023-01-23 21:13:58 +00:00
throw DB : : Exception ( DB : : ErrorCodes : : BAD_ARGUMENTS , " Bad Arguments " ) ;
2022-04-08 07:52:16 +00:00
}
String disk_name = config . getString ( " disk " , " default " ) ;
2022-12-08 17:20:54 +00:00
const String & path = command_arguments [ 0 ] ;
2022-04-08 07:52:16 +00:00
2023-11-30 03:09:55 +00:00
DiskPtr disk = disk_selector - > get ( disk_name ) ;
2022-04-08 07:52:16 +00:00
2022-12-08 17:43:54 +00:00
String relative_path = validatePathAndGetAsRelative ( path ) ;
2022-04-08 07:52:16 +00:00
2022-12-08 17:43:54 +00:00
disk - > removeRecursive ( relative_path ) ;
2022-04-08 07:52:16 +00:00
}
} ;
}
std : : unique_ptr < DB : : ICommand > makeCommandRemove ( )
{
return std : : make_unique < DB : : CommandRemove > ( ) ;
}