File indexing completed on 2024-05-12 05:25:24

0001 /*
0002    SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "pimdataexportconsole_debug.h"
0008 #include "pimdataexporter-version.h"
0009 #include "pimdataexporterconsole.h"
0010 #include <KAboutData>
0011 #include <KLocalizedString>
0012 
0013 #include <QCommandLineOption>
0014 #include <QCommandLineParser>
0015 #include <QCoreApplication>
0016 
0017 #include <QTimer>
0018 
0019 int main(int argc, char *argv[])
0020 {
0021     QCoreApplication app(argc, argv);
0022 
0023     QCommandLineParser parser;
0024     KAboutData aboutData(QStringLiteral("pimdataexporterconsole"),
0025                          i18n("PIM Data Exporter Console"),
0026                          QStringLiteral(PIMDATAEXPORTER_VERSION),
0027                          i18n("PIM Data Exporter Console"),
0028                          KAboutLicense::GPL_V2,
0029                          i18n("Copyright © 2015-%1 pimdataexporter authors", QStringLiteral("2024")));
0030     aboutData.addAuthor(i18n("Laurent Montel"), i18n("Maintainer"), QStringLiteral("montel@kde.org"));
0031     const QCommandLineOption logOption(QStringList() << QStringLiteral("logfile"), i18n("File to log information to."), QStringLiteral("file"));
0032     parser.addOption(logOption);
0033     const QCommandLineOption templateOption(QStringList() << QStringLiteral("template"),
0034                                             i18n("Template file to define what data, settings to import or export."),
0035                                             QStringLiteral("file"));
0036     parser.addOption(templateOption);
0037     const QCommandLineOption importOption(QStringList() << QStringLiteral("import"), i18n("Import the given file."), QStringLiteral("file"));
0038     parser.addOption(importOption);
0039     const QCommandLineOption exportOption(QStringList() << QStringLiteral("export"), i18n("Export the given file."), QStringLiteral("file"));
0040     parser.addOption(exportOption);
0041 
0042     aboutData.setupCommandLine(&parser);
0043     parser.process(app);
0044     aboutData.processCommandLine(&parser);
0045 
0046     QString importFile;
0047     QString exportFile;
0048     if (parser.isSet(importOption)) {
0049         importFile = parser.value(importOption);
0050     } else if (parser.isSet(exportOption)) {
0051         exportFile = parser.value(exportOption);
0052     }
0053     if (importFile.isEmpty() && exportFile.isEmpty()) {
0054         parser.showHelp();
0055         return 0;
0056     }
0057     QString logFile;
0058     QString templateFile;
0059     if (parser.isSet(templateOption)) {
0060         templateFile = parser.value(templateOption);
0061         qCDebug(PIMDATAEXPORTERCONSOLE_LOG) << "Template file " << templateFile;
0062     }
0063     if (parser.isSet(logOption)) {
0064         logFile = parser.value(logOption);
0065         qCDebug(PIMDATAEXPORTERCONSOLE_LOG) << "Log file " << logFile;
0066     }
0067 
0068     auto console = new PimDataExporterConsole;
0069     if (!importFile.isEmpty()) {
0070         console->setMode(PimDataExporterConsole::Import);
0071         qCDebug(PIMDATAEXPORTERCONSOLE_LOG) << "Import Mode" << importFile;
0072         console->setImportExportFileName(importFile);
0073     } else if (!exportFile.isEmpty()) {
0074         console->setMode(PimDataExporterConsole::Export);
0075         qCDebug(PIMDATAEXPORTERCONSOLE_LOG) << "Export Mode" << exportFile;
0076         console->setImportExportFileName(exportFile);
0077     }
0078     if (!logFile.isEmpty()) {
0079         console->setLogFileName(logFile);
0080     }
0081     if (!templateFile.isEmpty()) {
0082         console->setTemplateFileName(templateFile);
0083     }
0084     QObject::connect(console, &PimDataExporterConsole::finished, &app, &QCoreApplication::quit);
0085     QTimer::singleShot(0, console, &PimDataExporterConsole::start);
0086 
0087     return app.exec();
0088 }