#include "wrt-installer.h"
#include "plugin_utils.h"
+#include <map>
#include <string>
#include <cstring>
#include <cstdlib>
m_packagePath = m_argv[2];
m_installMode = WRT_INSTALL_MODE_INSTALL_PRELOAD;
AddStep(&WrtInstaller::installStep);
+ } else if (arg == "-c" || arg == "--csc-update") {
+ // "path=/opt/system/csc/Ozq2iEG15R-2.0.0-arm.wgt:op=install:removable=true"
+ LogDebug("Install & uninstall by csc configuration");
+ if (m_argc != 3) {
+ return showHelpAndQuit();
+ }
+ std::string configuration = m_argv[2];
+ m_CSCconfigurationMap = parseCSCConfiguration(configuration);
+
+ CSCConfiguration::dataMap::iterator it;
+ it = m_CSCconfigurationMap.find(CSCConfiguration::KEY_OP);
+ if (it == m_CSCconfigurationMap.end()) {
+ return showHelpAndQuit();
+ }
+
+ if (it->second == CSCConfiguration::VALUE_INSTALL) {
+ LogDebug("operation = " << it->second);
+ m_installMode = WRT_INSTALL_MODE_INSTALL_WGT;
+ it = m_CSCconfigurationMap.find(CSCConfiguration::KEY_PATH);
+ if (it == m_CSCconfigurationMap.end()) {
+ return showHelpAndQuit();
+ }
+ m_packagePath = it->second;
+ AddStep(&WrtInstaller::installStep);
+ LogDebug("path = " << m_packagePath);
+ } else if (it->second == CSCConfiguration::VALUE_UNINSTALL) {
+ LogDebug("operation = " << it->second);
+ // uninstall command isn't confirmed yet
+ it = m_CSCconfigurationMap.find(CSCConfiguration::KEY_PATH);
+ if (it == m_CSCconfigurationMap.end()) {
+ return showHelpAndQuit();
+ }
+ m_packagePath = it->second;
+ AddStep(&WrtInstaller::unistallWgtFileStep);
+ LogDebug("operation = uninstall");
+ LogDebug("path = " << m_packagePath);
+ } else {
+ LogError("Unknown operation : " << it->second);
+ LogDebug("operation = " << it->second);
+ return showHelpAndQuit();
+ }
} else if (arg == "-un" || arg == "--uninstall-name") {
if (m_argc != 3) {
return showHelpAndQuit();
" -p, --install-plugins install plugins\n"
" -i, --install "
"install or update widget package for given path\n"
+ " -c, --csc-update "
+ "install or uninstall by CSC configuration \n"
" -un, --uninstall-name "
"uninstall widget for given package name\n"
" -up, --uninstall-packagepath "
AddStep(&WrtInstaller::installPluginsStep);
}
+CSCConfiguration::dataMap WrtInstaller::parseCSCConfiguration(
+ std::string str)
+{
+ // path=/opt/system/csc/Ozq2iEG15R-2.0.0-arm.wgt:op=install:removable=true
+ // parsing CSC configuration string
+ LogDebug("parseConfiguration");
+ CSCConfiguration::dataMap result;
+
+ if (str.empty()) {
+ LogDebug("Input argument is empty");
+ return result;
+ }
+
+ char* buf = strdup(str.c_str());
+ const char* ptr = strtok(buf,":");
+ while (ptr != NULL) {
+ std::string string = ptr;
+ size_t pos = string.find('=');
+ if (pos == std::string::npos) {
+ continue;
+ }
+ result.insert(
+ CSCConfiguration::dataPair(string.substr(0, pos),
+ string.substr(pos+1)));
+ ptr = strtok (NULL, ":");
+ }
+ return result;
+}
+
int main(int argc, char *argv[])
{
UNHANDLED_EXCEPTION_HANDLER_BEGIN
#include <dpl/task.h>
#include <dpl/string.h>
#include <string>
+#include <map>
#include <wrt_installer_api.h>
namespace WRTInstallerNS { //anonymous
typedef void (*ShowResultCallback)(void *data, Evas_Object *obj,
void *event_info);
+namespace CSCConfiguration {
+typedef std::map<std::string, std::string> dataMap;
+typedef std::pair<std::string, std::string> dataPair;
+const char* const KEY_OP = "op";
+const char* const KEY_PATH = "path";
+const char* const VALUE_INSTALL = "install";
+const char* const VALUE_UNINSTALL = "uninstall";
+}
enum ReturnValue
{
void installNewPlugins();
bool popupsEnabled() const;
+ CSCConfiguration::dataMap parseCSCConfiguration(std::string str);
// Private data
std::shared_ptr<PackageManager::IPkgmgrSignal> pkgmgrSignalInterface;
bool m_installByPkgmgr;
bool m_quiet;
bool m_startupPluginInstallation;
+ CSCConfiguration::dataMap m_CSCconfigurationMap;
typedef std::list<std::string> PluginPathList;
DPL::Optional<PluginPathList> m_pluginsPaths;