
#include <string>
#include <vector>
#include <filesystem>

namespace dropshell {

class template_info {
    public:
        template_info() {}
        template_info(std::string n, std::string p) : template_name(n), local_template_path(p) {}

        std::string template_name;
        std::string local_template_path;
};

    // templates are stored in multiple locations:
    // 1. /opt/dropshell/templates
    // 2. CONFIG_DIR/templates 


    bool get_templates(std::vector<template_info>& templates);
    bool get_template_info(const std::string& template_name, template_info& info);        
    bool template_command_exists(const std::string& template_name,const std::string& command);
    void list_templates();


    // create a template
    // 1. create a new directory in the user templates directory
    // 2. copy the example template from the system templates directory into the new directory
    // 3. print out the README.txt file in the new template directory, and the path to the new template
    void create_template(const std::string& template_name);

    bool get_all_template_config_directories(std::vector<std::string>& template_config_directories);

} // namespace dropshell
