2022-04-08 07:52:16 +00:00
# pragma once
# include "ICommand.h"
namespace DB
{
namespace ErrorCodes
{
extern const int BAD_ARGUMENTS ;
}
class CommandRemove : public ICommand
{
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 ,
DB : : ContextMutablePtr & global_context ,
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 ( ) ;
throw DB : : Exception ( " Bad Arguments " , DB : : ErrorCodes : : BAD_ARGUMENTS ) ;
}
String disk_name = config . getString ( " disk " , " default " ) ;
2022-06-16 17:38:33 +00:00
String path = command_arguments [ 0 ] ;
2022-04-08 07:52:16 +00:00
DiskPtr disk = global_context - > getDisk ( disk_name ) ;
String full_path = fullPathWithValidate ( disk , path ) ;
disk - > removeRecursive ( full_path ) ;
}
} ;
}
std : : unique_ptr < DB : : ICommand > makeCommandRemove ( )
{
return std : : make_unique < DB : : CommandRemove > ( ) ;
}