#pragma once
#include
#include "../utils/common.hpp"
#include "../wrapper/repository_wrapper.hpp"
class tag_subcommand
{
public:
explicit tag_subcommand(const libgit2_object&, CLI::App& app);
void run();
private:
void list_tags(repository_wrapper& repo);
void delete_tag(repository_wrapper& repo);
void create_lightweight_tag(repository_wrapper& repo);
void create_tag(repository_wrapper& repo);
std::optional get_target_obj(repository_wrapper& repo);
void handle_error(int error);
std::string m_delete;
std::string m_message;
std::string m_tag_name;
std::string m_target;
bool m_list_flag = false;
bool m_force_flag = false;
bool m_annotate_flag = false;
int m_num_lines = 0;
};