#include "ICommand.h" #include namespace DB { namespace ErrorCodes { extern const int BAD_ARGUMENTS; } class CommandRemove final : public ICommand { public: CommandRemove() { command_name = "remove"; description = "Remove file or directory with all children. Throws exception if file doesn't exists.\nPath should be in format './' or './path' or 'path'"; usage = "remove [OPTION]... "; } void processOptions( Poco::Util::LayeredConfiguration &, po::variables_map &) const override {} void execute( const std::vector & command_arguments, std::shared_ptr & disk_selector, Poco::Util::LayeredConfiguration & config) override { if (command_arguments.size() != 1) { printHelpMessage(); throw DB::Exception(DB::ErrorCodes::BAD_ARGUMENTS, "Bad Arguments"); } String disk_name = config.getString("disk", "default"); const String & path = command_arguments[0]; DiskPtr disk = disk_selector->get(disk_name); String relative_path = validatePathAndGetAsRelative(path); disk->removeRecursive(relative_path); } }; } std::unique_ptr makeCommandRemove() { return std::make_unique(); }