#pragma once

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

namespace GModTeach {
namespace Platform {

class PathUtils {
public:
    static std::filesystem::path GetExecutablePath();
    static std::filesystem::path GetExecutableDirectory();
    static std::filesystem::path GetGmadExecutablePath();
    static std::filesystem::path Get7zExecutablePath();

    static std::string Trim(const std::string& s);
    static std::string ToLower(std::string s);

    static std::filesystem::path FindInnerPayload(const std::filesystem::path& directory);
    static std::vector<std::filesystem::path> CollectFilesByExtension(
        const std::filesystem::path& root,
        const std::string& targetExtension,
        bool recursive = true
    );
};

} 
} 
