SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
BranchCommand.hxx
См. документацию.
1
21#pragma once
22
23#include "ICommand.hxx"
26
27#include <string>
28#include <vector>
29#include <memory>
30
39 * @namespace svcs::cli
40 * @brief Компоненты командной строки и реализации команд.
41 * @details Содержит все CLI команды, с которыми пользователи взаимодействуют напрямую,
42 * включая AddCommand, CommitCommand, StatusCommand и другие.
43 */
44namespace svcs::cli {
45
46using namespace svcs::core;
47
61class BranchCommand : public ICommand {
62public:
74 BranchCommand(std::shared_ptr<ISubject> event_bus,
75 std::shared_ptr<BranchManager> branch_manager);
76
84 ~BranchCommand() override = default;
85
95 [[nodiscard]] std::string getName() const override;
96
106 [[nodiscard]] std::string getDescription() const override;
107
117 [[nodiscard]] std::string getUsage() const override;
118
130 bool execute(const std::vector<std::string>& args) override;
131
139 void showHelp() const override;
140
141private:
151 bool listBranches() const;
152
164 bool createBranch(const std::string& branch_name) const;
165
167
179 bool createBranchFromCommit(const std::string& branch_name, const std::string& commit_hash) const;
180
194 bool deleteBranch(const std::string& branch_name, bool force = false) const;
195
209 bool renameBranch(const std::string& old_name, const std::string& new_name) const;
210
220 bool showCurrentBranch() const;
221
233 bool switchBranch(const std::string& branch_name) const;
234
246 [[nodiscard]] static bool isValidBranchName(const std::string& name);
247
259 [[nodiscard]] bool branchExists(const std::string& name) const;
260
272 [[nodiscard]] static bool isValidCommitHash(const std::string& hash);
273
274private:
282 std::shared_ptr<ISubject> event_bus_;
283
291 std::shared_ptr<BranchManager> branch_manager_;
292};
293
294}
Declaration of the BranchManager class for handling version control branches.
Объявление интерфейса ICommand для всех исполняемых CLI команд.
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
std::string getUsage() const override
Получает синтаксис использования команды.
Определения BranchCommand.cxx:37
~BranchCommand() override=default
Деструктор.
std::string getName() const override
Получает имя команды.
Определения BranchCommand.cxx:29
std::string getDescription() const override
Получает описание команды.
Определения BranchCommand.cxx:33
BranchCommand(std::shared_ptr< ISubject > event_bus, std::shared_ptr< BranchManager > branch_manager)
Конструктор для BranchCommand.
Определения BranchCommand.cxx:24
bool execute(const std::vector< std::string > &args) override
Выполняет команду branch с заданными аргументами.
Определения BranchCommand.cxx:91
void showHelp() const override
Отображает справочную информацию для команды.
Определения BranchCommand.cxx:191
Интерфейс (абстрактный базовый класс) для всех команд, выполняемых через CLI.
Определения ICommand.hxx:31
Компоненты командной строки и реализации команд.
Основные структуры данных СКВ и модель объектов.