#include "version.hpp"

#include <filesystem>
#include <fstream>

namespace Version
{

    Version getOpenmwVersion(const std::filesystem::path& resourcePath)
    {
        std::ifstream stream(resourcePath / "version");

        Version v;
        std::getline(stream, v.mVersion);
        std::getline(stream, v.mCommitHash);
        std::getline(stream, v.mTagHash);
        return v;
    }

    std::string Version::describe() const
    {
        std::string str = "OpenMW version " + mVersion;
        std::string rev = mCommitHash;
        if (!rev.empty())
        {
            rev = rev.substr(0, 10);
            str += "\nRevision: " + rev;
        }
        return str;
    }

    std::string getOpenmwVersionDescription(const std::filesystem::path& resourcePath)
    {
        Version v = getOpenmwVersion(resourcePath);
        return v.describe();
    }

}