SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
AddCommand.hxx
См. документацию.
1
13#pragma once
14
15#include "ICommand.hxx"
18
19#include <memory>
20#include <vector>
21#include <string>
22
32 * @brief Компоненты командной строки и реализации команд.
33 * @details Содержит все CLI команды, с которыми пользователи взаимодействуют напрямую,
34 * включая AddCommand, CommitCommand, StatusCommand и другие.
35 */
36namespace svcs::cli {
37
38using namespace svcs::core;
39
47enum class FileStatus {
53
56
63 */
65
73 DELETED,
74
83};
84
104class AddCommand : public ICommand {
105private:
106 std::shared_ptr<ISubject> eventBus_;
107 std::shared_ptr<RepositoryManager> repoManager_;
108
116 struct AddOptions {
124 bool dryRun = false;
125
133 bool interactive = false;
134
142 bool patch = false;
143
151 bool update = false;
152
160 bool force = false;
161
169 bool showHelp = false;
170
178 std::vector<std::string> files;
179
187 std::vector<std::string> excludePatterns;
188 };
189
190 // New methods
196
200 [[nodiscard]] bool addInteractive() const;
201
213 [[nodiscard]] bool addPatch(const std::string& filePath) const;
214
226 [[nodiscard]] bool showDryRun(const std::vector<std::string>& files) const;
227
241 [[nodiscard]] bool shouldAddFile(const std::string& file, bool force) const;
242
243 // Argument Parsing
255 [[nodiscard]] AddOptions parseArguments(const std::vector<std::string>& args) const;
256
257public:
269 AddCommand(std::shared_ptr<ISubject> subject,
270 std::shared_ptr<RepositoryManager> repoManager);
271
283 bool execute(const std::vector<std::string>& args) override;
284
296 [[nodiscard]] std::vector<std::string> getAllFilesInDirectory(const std::string& directory) const;
297
307 [[nodiscard]] std::string getName() const override { return "add"; }
308
318 [[nodiscard]] std::string getDescription() const override;
319
329 [[nodiscard]] std::string getUsage() const override;
330
338 void showHelp() const override;
339};
340
341}
Объявление интерфейса ICommand для всех исполняемых CLI команд.
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Declaration of the RepositoryManager class, managing all repository-level file operations.
Реализует команду "add" для Simple Version Control System (SVCS).
Определения AddCommand.hxx:63
void showHelp() const override
Отображает подробную справочную информацию для команды.
Определения AddCommand.cxx:295
bool execute(const std::vector< std::string > &args) override
Выполняет команду "add" с заданными аргументами.
Определения AddCommand.cxx:57
std::string getName() const override
Получает имя команды.
Определения AddCommand.hxx:177
std::vector< std::string > getAllFilesInDirectory(const std::string &directory) const
Получает все пути к файлам в заданной директории рекурсивно.
Определения AddCommand.cxx:268
AddCommand(std::shared_ptr< ISubject > subject, std::shared_ptr< RepositoryManager > repoManager)
Конструктор для AddCommand.
Определения AddCommand.cxx:19
std::string getUsage() const override
Получает синтаксис использования команды.
Определения AddCommand.cxx:291
std::string getDescription() const override
Получает краткое описание команды.
Определения AddCommand.cxx:287
Интерфейс (абстрактный базовый класс) для всех команд, выполняемых через CLI.
Определения ICommand.hxx:31
Компоненты командной строки и реализации команд.
FileStatus
Определяет статус файла в SVCS.
Определения AddCommand.hxx:32
@ MODIFIED
Файл отслеживается и был изменен с последнего коммита.
Определения AddCommand.hxx:41
@ DELETED
Файл отслеживается, но был удален из рабочей директории.
Определения AddCommand.hxx:46
@ UNMODIFIED
Файл отслеживается и не имеет изменений с последнего коммита.
Определения AddCommand.hxx:51
@ UNTRACKED
Файл присутствует, но не отслеживается SVCS.
Определения AddCommand.hxx:36
Основные структуры данных СКВ и модель объектов.