aboutsummaryrefslogtreecommitdiff
path: root/src/add_repo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/add_repo.cc')
-rw-r--r--src/add_repo.cc16
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();
}