diff options
Diffstat (limited to 'src/add_repo.cc')
| -rw-r--r-- | src/add_repo.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/add_repo.cc b/src/add_repo.cc index 3de06dc..f2a4910 100644 --- a/src/add_repo.cc +++ b/src/add_repo.cc @@ -5,16 +5,22 @@ #include "vars.hh" void add_repo(std::string repo, std::string repo_name) { - std::ifstream rfile(repo_file); + bool is_previous_repos = false; std::string rfile_line; std::string rfile_contents; - while (getline(rfile, rfile_line)) { - rfile_contents += rfile_line + "\n"; + if (std::filesystem::exists(repo_file)) { + std::ifstream rfile(repo_file); + while (getline(rfile, rfile_line)) { + rfile_contents += rfile_line + "\n"; + } + rfile.close(); + is_previous_repos = true; } - rfile.close(); + + std::string previous_repos = is_previous_repos ? rfile_contents : ""; std::ofstream wfile; wfile.open(repo_file); - wfile << rfile_contents << "repos[\"" << repo_name << "\"] = \"" << repo << "\"" << std::endl; + wfile << previous_repos << "repos[\"" << repo_name << "\"] = \"" << repo << "\"" << std::endl; wfile.close(); } |
