aboutsummaryrefslogtreecommitdiff
path: root/src/UpdateTool.cpp
diff options
context:
space:
mode:
authortoni <toni@pdp7.tq-net.de>2017-11-16 15:07:12 +0100
committerToni Uhlig <Toni.Uhlig@tq-group.com>2017-11-27 15:36:43 +0100
commitef0f08a3d4d8eeb118592bc96480109d7b78e37b (patch)
tree8e57959487f08dd743b2728ab6fc0269b17cf4bd /src/UpdateTool.cpp
parent91f979252aa3ce910b2a7a577f807a941b24a555 (diff)
initial commit
Diffstat (limited to 'src/UpdateTool.cpp')
-rw-r--r--src/UpdateTool.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/UpdateTool.cpp b/src/UpdateTool.cpp
new file mode 100644
index 0000000..55da6d4
--- /dev/null
+++ b/src/UpdateTool.cpp
@@ -0,0 +1,89 @@
+#include <cstdio>
+#include <iostream>
+
+#include "UpdateFactory.hpp"
+
+#ifdef USE_GUI
+#include "UpdateGUI.hpp"
+
+wxIMPLEMENT_APP(UpdateGUI);
+
+#if defined(_UNICODE) && defined(WIN32)
+int wmain(int argc, wchar_t* wargv[])
+{
+ wxEntryStart(argc, wargv);
+ wxTheApp->CallOnInit();
+ wxTheApp->OnRun();
+ return 0;
+}
+#endif
+
+#else
+
+int main(int argc, char **argv)
+{
+ int rv;
+ std::vector<UpdateFactory*> uf;
+ std::string errstr;
+
+ if (argc == 0)
+ return 1;
+ if (argc == 3) {
+ uf.clear();
+ rv = loadUpdateFactoriesFromCSV(argv[1], argv[2], uf);
+ if (rv != UPDATE_OK) {
+ std::cerr << "CSV file read \"" << argv[1] << "\" failed with: " << rv << std::endl;
+ return 1;
+ }
+ } else
+ if (argc == 4) {
+ uf.push_back(new UpdateFactory());
+ uf[0]->setDest(argv[1], 80);
+ uf[0]->setPass(argv[2]);
+ uf[0]->setUpdateFile(argv[3]);
+ } else {
+ std::cerr << "Missing CLI arguments, using defaults .." << std::endl
+ << "usage: " << argv[0]
+ << " [update-csv-file]|[[hostname] [password]] [update-file]"
+ << std::endl << std::endl;
+ return 1;
+ }
+
+ for (auto *u : uf) {
+ rv = u->doAuth();
+ mapEmcError(rv, errstr);
+ std::cerr << "doAuth returned " << rv << ": " << errstr << std::endl;
+ if (rv == UPDATE_OK) {
+ std::cerr << "uploading file " << u->getUpdateFile() << std::endl;
+ rv = u->loadUpdateFile();
+ mapEmcError(rv, errstr);
+ std::cerr << "load file returned " << rv << ": " << errstr << std::endl;
+ rv = u->doUpdate();
+ mapEmcError(rv, errstr);
+ std::cerr << "doUpdate returned " << rv << ": " << errstr << std::endl;
+ }
+ }
+
+ for (auto *u : uf) {
+ delete u;
+ }
+ return 0;
+}
+
+#if defined(_UNICODE) && defined(WIN32)
+int wmain(int argc, wchar_t* wargv[])
+{
+ size_t len;
+ static char **argv = new char*[argc];
+
+ /* convert wide character argvector to ASCII */
+ for (int i = 0; i < argc; ++i) {
+ len = wcslen(wargv[i]) * sizeof(wchar_t);
+ argv[i] = (char *) calloc(len+1, sizeof(char));
+ wcstombs(argv[i], wargv[i], len);
+ fprintf(stderr, "arg[%d]: %s\n", i, argv[i]);
+ }
+ return main(argc, argv);
+}
+#endif
+#endif