From 18e70042133a8607e222648e726bc0e8df7677c8 Mon Sep 17 00:00:00 2001 From: "Jerry (Xinyu Hou)" Date: Wed, 21 Oct 2015 16:35:22 -0700 Subject: [PATCH] Add subscription functionalities in syntool #4715 --- src/lib/common/common.h | 11 +++++---- src/lib/synergy/ArgParser.cpp | 17 +++++++++++++- src/lib/synergy/SubscriptionManager.cpp | 2 +- src/lib/synergy/ToolApp.cpp | 31 +++++++++++++++++++++++++ src/lib/synergy/ToolArgs.cpp | 6 ++++- src/lib/synergy/ToolArgs.h | 3 +++ 6 files changed, 62 insertions(+), 8 deletions(-) diff --git a/src/lib/common/common.h b/src/lib/common/common.h index 9b249bce..bdfb5b3b 100644 --- a/src/lib/common/common.h +++ b/src/lib/common/common.h @@ -147,9 +147,10 @@ #include enum { - kExitSuccess = 0, // successful completion - kExitFailed = 1, // general failure - kExitTerminated = 2, // killed by signal - kExitArgs = 3, // bad arguments - kExitConfig = 4 // cannot read configuration + kExitSuccess = 0, // successful completion + kExitFailed = 1, // general failure + kExitTerminated = 2, // killed by signal + kExitArgs = 3, // bad arguments + kExitConfig = 4, // cannot read configuration + kExitSubscription = 5 // subscription error }; diff --git a/src/lib/synergy/ArgParser.cpp b/src/lib/synergy/ArgParser.cpp index 91a9c866..6d6935a7 100644 --- a/src/lib/synergy/ArgParser.cpp +++ b/src/lib/synergy/ArgParser.cpp @@ -163,7 +163,6 @@ ArgParser::parsePlatformArg(ArgsBase& argsBase, const int& argc, const char* con #endif } - bool ArgParser::parseToolArgs(ToolArgs& args, int argc, const char* const* argv) { @@ -196,6 +195,22 @@ ArgParser::parseToolArgs(ToolArgs& args, int argc, const char* const* argv) args.m_getArch = true; return true; } + else if (isArg(i, argc, argv, NULL, "--subscription-serial", 1)) { + args.m_subscriptionSerial = argv[++i]; + if (args.m_subscriptionSerial.empty()) { + LOG((CLOG_CRIT "subscription error: serial was not provided")); + return false; + } + return true; + } + else if (isArg(i, argc, argv, NULL, "--get-subscription-filename", 0)) { + args.m_printSubscriptionFilename = true; + return true; + } + else if (isArg(i, argc, argv, NULL, "--check-subscription", 0)) { + args.m_checkSubscription = true; + return true; + } else { return false; } diff --git a/src/lib/synergy/SubscriptionManager.cpp b/src/lib/synergy/SubscriptionManager.cpp index e13cf4c7..67357390 100644 --- a/src/lib/synergy/SubscriptionManager.cpp +++ b/src/lib/synergy/SubscriptionManager.cpp @@ -194,7 +194,7 @@ SubscriptionManager::parsePlainSerial(const String& plainText, SubscriptionKey& String SubscriptionManager::getFilename() { - String path = ARCH->getUserDirectory(); + String path = ARCH->getProfileDirectory(); path = ARCH->concatPath(path, kFile); if (path.empty()) { throw XSubscription("Could not get filename."); diff --git a/src/lib/synergy/ToolApp.cpp b/src/lib/synergy/ToolApp.cpp index ade16693..4edc5423 100644 --- a/src/lib/synergy/ToolApp.cpp +++ b/src/lib/synergy/ToolApp.cpp @@ -18,6 +18,7 @@ #include "synergy/ToolApp.h" #include "synergy/ArgParser.h" +#include "synergy/SubscriptionManager.h" #include "arch/Arch.h" #include "base/Log.h" #include "base/String.h" @@ -86,6 +87,36 @@ ToolApp::run(int argc, char** argv) else if (m_args.m_getArch) { std::cout << ARCH->getPlatformName() << std::endl; } + else if (!m_args.m_subscriptionSerial.empty()) { + try { + SubscriptionManager subscriptionManager; + subscriptionManager.activate(m_args.m_subscriptionSerial); + } + catch (XSubscription& e) { + LOG((CLOG_CRIT "subscription error: %s", e.what())); + return kExitSubscription; + } + } + else if (m_args.m_printSubscriptionFilename) { + try { + SubscriptionManager subscriptionManager; + subscriptionManager.printFilename(); + } + catch (XSubscription& e) { + LOG((CLOG_CRIT "subscription error: %s", e.what())); + return kExitSubscription; + } + } + else if (m_args.m_checkSubscription) { + try { + SubscriptionManager subscriptionManager; + subscriptionManager.checkFile(""); + } + catch (XSubscription& e) { + LOG((CLOG_CRIT "subscription error: %s", e.what())); + return kExitSubscription; + } + } else { throw XSynergy("Nothing to do"); } diff --git a/src/lib/synergy/ToolArgs.cpp b/src/lib/synergy/ToolArgs.cpp index 8c3af4f1..3bbe028b 100644 --- a/src/lib/synergy/ToolArgs.cpp +++ b/src/lib/synergy/ToolArgs.cpp @@ -23,6 +23,10 @@ ToolArgs::ToolArgs() : m_getPluginList(false), m_getPluginDir(false), m_getInstalledDir(false), - m_getProfileDir(false) + m_getProfileDir(false), + m_getArch(false), + m_printSubscriptionFilename(false), + m_checkSubscription(false), + m_subscriptionSerial() { } diff --git a/src/lib/synergy/ToolArgs.h b/src/lib/synergy/ToolArgs.h index fe0d1bb9..543b286c 100644 --- a/src/lib/synergy/ToolArgs.h +++ b/src/lib/synergy/ToolArgs.h @@ -31,4 +31,7 @@ public: bool m_getInstalledDir; bool m_getProfileDir; bool m_getArch; + bool m_printSubscriptionFilename; + bool m_checkSubscription; + String m_subscriptionSerial; };