#pragma once #include #include namespace dropshell { /** * Prints a formatted title surrounded by a box of dashes. * * @param title The title string to display */ void maketitle(const std::string& title); bool replace_line_in_file(const std::string& file_path, const std::string& search_string, const std::string& replacement_line); // utility functions std::string trim(std::string str); std::string dequote(std::string str); std::string quote(std::string str); std::string halfquote(std::string str); std::string requote(std::string str); std::string escapequotes(std::string str); std::string multi2string(std::vector values); std::vector string2multi(std::string values); std::vector split(const std::string& str, const std::string& delimiter); int str2int(const std::string & str); void recursive_copy(const std::string & source, const std::string & destination); void ensure_directories_exist(std::vector directories); // KMP algorithm std::vector search(const std::string &pat, const std::string &txt); int count_substring(const std::string &substring, const std::string &text); std::string replace_with_environment_variables_like_bash(std::string str); std::string random_alphanumeric_string(int length); int die(const std::string & msg); std::string safearg(int argc, char *argv[], int index); std::string safearg(const std::vector & args, int index); void print_left_aligned(const std::string & str, int width); void print_centered(const std::string & str, int width); void print_right_aligned(const std::string & str, int width); std::string left_align(const std::string & str, int width); std::string right_align(const std::string & str, int width); std::string center_align(const std::string & str, int width); } // namespace dropshell