ClickHouse
54 строки · 1.3 Кб
1#include "ICommand.h"2#include <Interpreters/Context.h>3
4namespace DB5{
6
7namespace ErrorCodes8{
9extern const int BAD_ARGUMENTS;10}
11
12class CommandRemove final : public ICommand13{
14public:15CommandRemove()16{17command_name = "remove";18description = "Remove file or directory with all children. Throws exception if file doesn't exists.\nPath should be in format './' or './path' or 'path'";19usage = "remove [OPTION]... <PATH>";20}21
22void processOptions(23Poco::Util::LayeredConfiguration &,24po::variables_map &) const override25{}26
27void execute(28const std::vector<String> & command_arguments,29std::shared_ptr<DiskSelector> & disk_selector,30Poco::Util::LayeredConfiguration & config) override31{32if (command_arguments.size() != 1)33{34printHelpMessage();35throw DB::Exception(DB::ErrorCodes::BAD_ARGUMENTS, "Bad Arguments");36}37
38String disk_name = config.getString("disk", "default");39
40const String & path = command_arguments[0];41
42DiskPtr disk = disk_selector->get(disk_name);43
44String relative_path = validatePathAndGetAsRelative(path);45
46disk->removeRecursive(relative_path);47}48};49}
50
51std::unique_ptr <DB::ICommand> makeCommandRemove()52{
53return std::make_unique<DB::CommandRemove>();54}
55