Add backup, fix upgrade v4

This commit is contained in:
Aurélie Delhaie
2022-10-17 20:01:27 +02:00
parent dcc90fb009
commit 7b6636720c
2 changed files with 37 additions and 7 deletions

View File

@@ -4,6 +4,7 @@
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray> #include <QJsonArray>
#include <QDateTime>
#include <iostream> #include <iostream>
#include "version2upgrader.h" #include "version2upgrader.h"
@@ -11,25 +12,51 @@
#include "version4upgrader.h" #include "version4upgrader.h"
#define SAVE_FILENAME "data.json" #define SAVE_FILENAME "data.json"
#define BACKUP_FILENAME "backup_%1.json"
QString get_save_file_path() { QString get_save_file_path(QString name) {
QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
if (!QDir(path).exists()) { if (!QDir(path).exists()) {
QDir().mkpath(path); QDir().mkpath(path);
} }
path += "/data/"; path += "/data/";
if (!QDir(path).exists()) { if (!QDir(path).exists()) {
QDir().mkpath(path); std::cerr << "[ERROR] Chronos data folder not found. Chronos never ran on this computer ?????" << std::endl;
exit(-1);
} }
path += SAVE_FILENAME; path += name;
return path; return path;
} }
void make_backup() {
std::cout << "[INFO] Making backup..." << std::endl;
QFile* file = new QFile(get_save_file_path(SAVE_FILENAME));
bool res = file->open(QIODevice::ReadOnly);
if (!res) {
std::cerr << "[ERROR] Chronos data file not found. Chronos never ran on this computer ?????" << std::endl;
exit(-1);
}
QString backup_file_name = QString(BACKUP_FILENAME).arg(QDateTime::currentSecsSinceEpoch());
QFile *f = new QFile(get_save_file_path(backup_file_name));
if (f->open(QIODevice::WriteOnly)) {
f->write(file->readAll());
f->close();
}
file->close();
delete file;
delete f;
std::cout << "[INFO] Backup was created on " << backup_file_name.toStdString() << std::endl;
}
QJsonObject open_save() { QJsonObject open_save() {
QFile* file = new QFile(get_save_file_path()); QFile* file = new QFile(get_save_file_path(SAVE_FILENAME));
file->open(QIODevice::ReadOnly); bool res = file->open(QIODevice::ReadOnly);
if (!res) {
std::cerr << "[ERROR] Chronos data file not found. Chronos never ran on this computer ?????" << std::endl;
exit(-1);
}
auto json = QString(file->readAll()); auto json = QString(file->readAll());
file->close(); file->close();
delete file; delete file;
@@ -38,7 +65,7 @@ QJsonObject open_save() {
void save_to_file(QJsonObject save) { void save_to_file(QJsonObject save) {
QJsonDocument doc(save); QJsonDocument doc(save);
QFile *f = new QFile(get_save_file_path()); QFile *f = new QFile(get_save_file_path(SAVE_FILENAME));
if (f->open(QIODevice::WriteOnly)) { if (f->open(QIODevice::WriteOnly)) {
f->write(doc.toJson()); f->write(doc.toJson());
f->close(); f->close();
@@ -48,9 +75,10 @@ void save_to_file(QJsonObject save) {
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
std::cout << "Chronos Save Upgrader v2.1" << std::endl; std::cout << "Chronos Save Upgrader v2.1.1" << std::endl;
std::cout << "by Aurélie Delhaie - https://github.com/mojitaurelie/chronos-save-updater" << std::endl << std::endl; std::cout << "by Aurélie Delhaie - https://github.com/mojitaurelie/chronos-save-updater" << std::endl << std::endl;
QCoreApplication::setApplicationName("Chronos"); QCoreApplication::setApplicationName("Chronos");
make_backup();
QJsonObject save = open_save(); QJsonObject save = open_save();
switch (save["version"].toInt()) { switch (save["version"].toInt()) {
case 1: { case 1: {

View File

@@ -29,6 +29,7 @@ QJsonObject Version4Upgrader::UpgradeTemplate(QJsonObject week)
newTemplate["wednesday"] = UpgradeDayTemplate(week["wednesday"].toObject()); newTemplate["wednesday"] = UpgradeDayTemplate(week["wednesday"].toObject());
newTemplate["thurday"] = UpgradeDayTemplate(week["thurday"].toObject()); newTemplate["thurday"] = UpgradeDayTemplate(week["thurday"].toObject());
newTemplate["friday"] = UpgradeDayTemplate(week["friday"].toObject()); newTemplate["friday"] = UpgradeDayTemplate(week["friday"].toObject());
newTemplate["timeDelta"] = week["timeDelta"].toInt();
newTemplate["weekNumber"] = week["weekNumber"].toInt(); newTemplate["weekNumber"] = week["weekNumber"].toInt();
return newTemplate; return newTemplate;
} }
@@ -44,6 +45,7 @@ QJsonArray Version4Upgrader::UpgradeWeeks(QJsonArray weeks)
newWeek["wednesday"] = UpgradeDay(week["wednesday"].toObject()); newWeek["wednesday"] = UpgradeDay(week["wednesday"].toObject());
newWeek["thurday"] = UpgradeDay(week["thurday"].toObject()); newWeek["thurday"] = UpgradeDay(week["thurday"].toObject());
newWeek["friday"] = UpgradeDay(week["friday"].toObject()); newWeek["friday"] = UpgradeDay(week["friday"].toObject());
newWeek["timeDelta"] = week["timeDelta"].toInt();
newWeek["weekNumber"] = week["weekNumber"].toInt(); newWeek["weekNumber"] = week["weekNumber"].toInt();
newWeeks.append(newWeek); newWeeks.append(newWeek);
} }