static std::pair<std::vector<std::string>, std::vector<std::string> > read_ignore_patterns(const std::string& addon_name) { const std::string parentd = get_addon_campaigns_dir(); const std::string exterior = parentd + "/" + addon_name + ".ign"; const std::string interior = parentd + "/" + addon_name + "/_server.ign"; std::pair<std::vector<std::string>, std::vector<std::string> > patterns; std::string ign_file; LOG_CFG << "searching for .ign file for '" << addon_name << "'...\n"; if (file_exists(interior)) { ign_file = interior; } else if (file_exists(exterior)) { ign_file = exterior; } else { LOG_CFG << "no .ign file found for '" << addon_name << "'\n" << "inserting default ignore patterns...\n"; append_default_ignore_patterns(patterns); return patterns; // just default patterns } LOG_CFG << "found .ign file: " << ign_file << '\n'; std::istream *stream = istream_file(ign_file); std::string line; while (std::getline(*stream, line)) { utils::strip(line); const size_t l = line.size(); if (line[l - 1] == '/') { // directory; we strip the last / patterns.second.push_back(line.substr(0, l - 1)); } else { // file patterns.first.push_back(line); } } return patterns; }
static std::pair<std::vector<std::string>, std::vector<std::string> > read_ignore_patterns(const std::string& addon_name) { const std::string parentd = filesystem::get_addons_dir(); const std::string ign_file = parentd + "/" + addon_name + "/_server.ign"; std::pair<std::vector<std::string>, std::vector<std::string> > patterns; LOG_CFG << "searching for .ign file for '" << addon_name << "'...\n"; if (!filesystem::file_exists(ign_file)) { LOG_CFG << "no .ign file found for '" << addon_name << "'\n" << "inserting default ignore patterns...\n"; append_default_ignore_patterns(patterns); return patterns; // just default patterns } LOG_CFG << "found .ign file: " << ign_file << '\n'; std::istream *stream = filesystem::istream_file(ign_file); std::string line; while (std::getline(*stream, line)) { boost::trim(line); const size_t l = line.size(); // .gitignore & WML like comments if (l == 0 || !line.compare(0,2,"# ")) continue; if (line[l - 1] == '/') { // directory; we strip the last / patterns.second.push_back(line.substr(0, l - 1)); } else { // file patterns.first.push_back(line); } } return patterns; }