From 226e9a7e85ef1cf148daa61a54039ebfa060f4cb Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 16 Jun 2015 06:58:22 -0700 Subject: [PATCH] Implement a standalone HTML exporter This is mostly a proof of concept right now; it shows that it is possible to create a headless server application that exports a git repository based data file as html. Signed-off-by: Dirk Hohndel --- CMakeLists.txt | 4 ++++ export-html.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 export-html.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 16e0c6430..d1b59c849 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -444,6 +444,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") add_dependencies(${SUBSURFACE_TARGET} generate_qtconf) endif() +# build an automated html exporter +add_executable(export-html EXCLUDE_FROM_ALL export-html.cpp qt-init.cpp qthelper.cpp ${SUBSURFACE_RESOURCES}) +target_link_libraries(export-html subsurface_corelib ${SUBSURFACE_LINK_LIBRARIES}) + # QTest based tests macro(TEST NAME FILE) add_executable(${NAME} EXCLUDE_FROM_ALL tests/${FILE} ${SUBSURFACE_RESOURCES}) diff --git a/export-html.cpp b/export-html.cpp new file mode 100644 index 000000000..041c52807 --- /dev/null +++ b/export-html.cpp @@ -0,0 +1,55 @@ +/* Dirk Hohndel, 2015 */ + +#include +#include +#include + +#include "qt-gui.h" +#include "dive.h" +#include "save-html.h" +#include "stdio.h" +#include "git2.h" +#include "subsurfacestartup.h" +#include "divelogexportlogic.h" + +QTranslator *qtTranslator, *ssrfTranslator; + +int main(int argc, char **argv) +{ + QApplication *application = init_qt(&argc, &argv); + git_libgit2_init(); + setup_system_prefs(); + prefs = default_prefs; + init_qt_late(); + + QCommandLineParser parser; + QCommandLineOption sourceDirectoryOption(QStringList() << "s" << "source", + "Read git repository from ", + "directory"); + parser.addOption(sourceDirectoryOption); + QCommandLineOption outputDirectoryOption(QStringList() << "u" << "output", + "Write HTML files into ", + "directory"); + parser.addOption(outputDirectoryOption); + + parser.process(*application); + + QString source = parser.value(sourceDirectoryOption); + QString output = parser.value(outputDirectoryOption); + + if (source.isEmpty() || output.isEmpty()) { + qDebug() << "need --source and --output"; + exit(1); + } + qDebug() << source << output; + fprintf(stderr, "parse_file returned %d\n", parse_file(qPrintable(source))); + + struct htmlExportSetting hes; + hes.themeFile = "sand.css"; + hes.exportPhotos = true; + hes.selectedOnly = false; + hes.listOnly = false; + hes.yearlyStatistics = true; + exportHtmlInitLogic(output, &hes); + exit(0); +}