Add backup, fix upgrade v4
This commit is contained in:
42
main.cpp
42
main.cpp
@@ -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: {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user