mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
Added mkdir command
This commit is contained in:
parent
7dea71c83f
commit
90baf74f13
67
programs/disks/CommandMkDir.cpp
Normal file
67
programs/disks/CommandMkDir.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ICommand.h"
|
||||||
|
#include <Interpreters/Context.h>
|
||||||
|
|
||||||
|
namespace DB
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace ErrorCodes
|
||||||
|
{
|
||||||
|
extern const int BAD_ARGUMENTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CommandMkDir : public ICommand
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CommandMkDir()
|
||||||
|
{
|
||||||
|
command_name = "mkdir";
|
||||||
|
command_option_description.emplace(createOptionsDescription("Allowed options", getTerminalWidth()));
|
||||||
|
description = "Create directory or directories recursively";
|
||||||
|
usage = "mkdir [OPTION]... <PATH>";
|
||||||
|
command_option_description->add_options()
|
||||||
|
("recursive", "recursively create directories")
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
void processOptions(
|
||||||
|
Poco::Util::LayeredConfiguration & config,
|
||||||
|
po::variables_map & options) const override
|
||||||
|
{
|
||||||
|
if (options.count("recursive"))
|
||||||
|
config.setBool("recursive", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void execute(
|
||||||
|
const std::vector<String> & command_arguments,
|
||||||
|
DB::ContextMutablePtr & global_context,
|
||||||
|
Poco::Util::LayeredConfiguration & config) override
|
||||||
|
{
|
||||||
|
if (command_arguments.size() != 1)
|
||||||
|
{
|
||||||
|
printHelpMessage();
|
||||||
|
throw DB::Exception("Bad Arguments", DB::ErrorCodes::BAD_ARGUMENTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
String disk_name = config.getString("disk", "default");
|
||||||
|
|
||||||
|
String path = command_arguments[0];
|
||||||
|
|
||||||
|
DiskPtr disk = global_context->getDisk(disk_name);
|
||||||
|
|
||||||
|
String full_path = fullPathWithValidate(disk, path);
|
||||||
|
bool recursive = config.getBool("recursive", false);
|
||||||
|
|
||||||
|
if (recursive)
|
||||||
|
disk->createDirectories(full_path);
|
||||||
|
else
|
||||||
|
disk->createDirectory(full_path);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr <DB::ICommand> makeCommandMkDir()
|
||||||
|
{
|
||||||
|
return std::make_unique<DB::CommandMkDir>();
|
||||||
|
}
|
@ -63,7 +63,7 @@ void DisksApp::addOptions(
|
|||||||
|
|
||||||
positional_options_description.add("command_name", 1);
|
positional_options_description.add("command_name", 1);
|
||||||
|
|
||||||
supported_commands = {"list-disks", "list", "move", "remove", "link", "copy", "write", "read"};
|
supported_commands = {"list-disks", "list", "move", "remove", "link", "copy", "write", "read", "mkdir"};
|
||||||
|
|
||||||
command_descriptions.emplace("list-disks", makeCommandListDisks());
|
command_descriptions.emplace("list-disks", makeCommandListDisks());
|
||||||
command_descriptions.emplace("list", makeCommandList());
|
command_descriptions.emplace("list", makeCommandList());
|
||||||
@ -73,6 +73,7 @@ void DisksApp::addOptions(
|
|||||||
command_descriptions.emplace("copy", makeCommandCopy());
|
command_descriptions.emplace("copy", makeCommandCopy());
|
||||||
command_descriptions.emplace("write", makeCommandWrite());
|
command_descriptions.emplace("write", makeCommandWrite());
|
||||||
command_descriptions.emplace("read", makeCommandRead());
|
command_descriptions.emplace("read", makeCommandRead());
|
||||||
|
command_descriptions.emplace("mkdir", makeCommandMkDir());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisksApp::processOptions()
|
void DisksApp::processOptions()
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include "CommandLink.cpp"
|
#include "CommandLink.cpp"
|
||||||
#include "CommandList.cpp"
|
#include "CommandList.cpp"
|
||||||
#include "CommandListDisks.cpp"
|
#include "CommandListDisks.cpp"
|
||||||
|
#include "CommandMkDir.cpp"
|
||||||
#include "CommandMove.cpp"
|
#include "CommandMove.cpp"
|
||||||
#include "CommandRead.cpp"
|
#include "CommandRead.cpp"
|
||||||
#include "CommandRemove.cpp"
|
#include "CommandRemove.cpp"
|
||||||
|
@ -65,3 +65,4 @@ std::unique_ptr <DB::ICommand> makeCommandMove();
|
|||||||
std::unique_ptr <DB::ICommand> makeCommandRead();
|
std::unique_ptr <DB::ICommand> makeCommandRead();
|
||||||
std::unique_ptr <DB::ICommand> makeCommandRemove();
|
std::unique_ptr <DB::ICommand> makeCommandRemove();
|
||||||
std::unique_ptr <DB::ICommand> makeCommandWrite();
|
std::unique_ptr <DB::ICommand> makeCommandWrite();
|
||||||
|
std::unique_ptr <DB::ICommand> makeCommandMkDir();
|
||||||
|
Loading…
Reference in New Issue
Block a user