Osp-Installer merge changes from tizen_2.2
[platform/framework/native/installer.git] / src / backend / backend.cpp
index 36b2b39..8aec998 100755 (executable)
@@ -33,6 +33,7 @@
 #include <FAppPkg_PackageManagerImpl.h>
 
 #include "InstallerManager.h"
+#include "HybridInstaller.h"
 
 using namespace Tizen::App;
 using namespace Tizen::App::Package;
@@ -48,19 +49,18 @@ int
 main(int argc, char **argv)
 {
        int ret = 0;
-       const char *pkg_info = null;
-       char* pkg_path = null;
+       int errorType = 0;
+       int reqType = 0;
+       int emul = 0;
+       const char* pPkgInfo = null;
+       const char* pPkgPath = null;
        const char* pOptional = null;
        const char* pStoreClientId = null;
        String path;
        String optionalData;
        PackageId packageId;
-       int errorType = 0;
-       pkgmgr_installer *pi = null;
-       int req_type = 0;
 
        appcore_set_i18n(null, null);
-
        Osp_Initialize();
 
        String buf;
@@ -82,46 +82,91 @@ main(int argc, char **argv)
                }
        }
 
-       int emul = 0;
-
 #ifdef _OSP_EMUL_
        emul = 1;
 #endif
-       fprintf(stderr, "  ## osp-installer: %s[%s] cmd=[%ls]\n", OSP_INSTALLER_VERSION, emul?"Emulator":"Target", buf.GetPointer());
+       fprintf(stderr, "  ## osp-installer: %s device=[%s] cmd=[%ls]\n", OSP_INSTALLER_VERSION, emul?"Emulator":"Target", buf.GetPointer());
 
        if (argc == TEST_ARG_COUNT)
        {
                errorType = InstallerManager::ReqeustByTest();
                goto CATCH;
        }
-       else if (argc == COMMAND_ARG_COUNT)
+       else if (argc <= COMMAND_ARG_COUNT && (!(argv[1][2] == 'v' || argv[1][1] == 'v')))
        {
                errorType = InstallerManager::RequestByCommand(argc, argv);
                goto CATCH;
        }
+       else if (argv[1][2] == 'v')
+       {
+               if (argv[3] && argv[3][1] == 'p')
+               {
+                       if(argv[4])
+                       {
+                               errorType = InstallerManager::RequestHybrid(argv[1][1], argv[2], atoi(argv[4]));
+                       }
+                       else
+                       {
+                               errorType = INSTALLER_ERROR_SIGNATURE_NOT_FOUND;
 
-       pi = pkgmgr_installer_new();
-       _pi = pi;
+                               AppLog("stdout is updated by errorType [%d]", errorType);
+                               fprintf(stdout, "%d", errorType);
 
-       pkgmgr_installer_receive_request(pi, argc, argv);
+                               goto CATCH;
+                       }
+               }
+               else
+               {
+                       errorType = InstallerManager::RequestHybrid(argv[1][1], argv[2]);
+               }
+               goto CATCH;
+       }
+       else if(argv[1][1] == 'v')
+       {
+               if (argv[3] && argv[3][1] == 'p')
+               {
+                       if(argv[4])
+                       {
+                               errorType = InstallerManager::RequestHybrid(argv[1][1], argv[2], atoi(argv[4]));
+                       }
+                       else
+                       {
+                               errorType = INSTALLER_ERROR_SIGNATURE_NOT_FOUND;
+
+                               AppLog("stdout is updated by errorType [%d]", errorType);
+                               fprintf(stdout, "%d", errorType);
+
+                               goto CATCH;
+                       }
+               }
+               else
+               {
+                       errorType = InstallerManager::RequestHybrid(argv[1][2], argv[2]);
+               }
+               goto CATCH;
+       }
+
+       _pi = pkgmgr_installer_new();
 
-       req_type = pkgmgr_installer_get_request_type(pi);
-       if (PKGMGR_REQ_INVALID >= req_type)
+       pkgmgr_installer_receive_request(_pi, argc, argv);
+
+       reqType = pkgmgr_installer_get_request_type(_pi);
+       if (PKGMGR_REQ_INVALID >= reqType)
        {
                goto CATCH;
        }
 
-       pkg_info = pkgmgr_installer_get_request_info(pi);
-       pkg_path = (const_cast<char*>(pkg_info));
-       AppLog(" # path = [%s]", pkg_path);
+       pPkgInfo = pkgmgr_installer_get_request_info(_pi);
+       pPkgPath = (const_cast<char*>(pPkgInfo));
+       AppLog(" # path = [%s]", pPkgPath);
 
-       path = pkg_path;
+       path = pPkgPath;
 
-       switch (req_type)
+       switch (reqType)
        {
        case PKGMGR_REQ_INSTALL:
                {
-                       pOptional = pkgmgr_installer_get_optional_data(pi);
+                       pOptional = pkgmgr_installer_get_optional_data(_pi);
                        if (pOptional)
                        {
                                optionalData = pOptional;
@@ -160,7 +205,7 @@ main(int argc, char **argv)
                                AppLog(" # path = [%ls] -> optionalData = [%ls]", path.GetPointer(), optionalData.GetPointer());
                        }
 
-                       pStoreClientId = pkgmgr_installer_get_caller_pkgid(pi);
+                       pStoreClientId = pkgmgr_installer_get_caller_pkgid(_pi);
                        if (pStoreClientId)
                        {
                                PackageId StoreClientId = pStoreClientId;
@@ -169,7 +214,7 @@ main(int argc, char **argv)
                                AppLog(" # optionalData = [%ls]", optionalData.GetPointer());
                        }
 
-                       errorType = InstallerManager::Request(path, INSTALLER_OPERATION_INSTALL, INSTALLER_OPTION_NORMAL, pi, &optionalData);
+                       errorType = InstallerManager::Request(path, INSTALLER_OPERATION_INSTALL, INSTALLER_OPTION_NORMAL, _pi, &optionalData);
 
 //             if (errorType != 0)
 //                     {
@@ -183,16 +228,18 @@ main(int argc, char **argv)
        case PKGMGR_REQ_UNINSTALL:
                {
                        bool isCscPackage = false;
+                       String originPath;
                        PackageId reqeustPackageId;
                        path.SubString(0, PACKAGE_ID_LENGTH, reqeustPackageId);
                        AppLog("reqeustPackage = %ls", reqeustPackageId.GetPointer());
 
-                       String originPath;
                        if (InstallerManager::IsUninstallUpdates(reqeustPackageId, originPath, isCscPackage) == true)
                        {
                                AppLog("originPath = [%ls], isCscPackage = [%s]", originPath.GetPointer(), isCscPackage?"true":"false");
                                optionalData = reqeustPackageId;
 
+                               errorType = InstallerManager::Request(reqeustPackageId, INSTALLER_OPERATION_UNINSTALL, INSTALLER_OPTION_NORMAL, _pi);
+
                                if (isCscPackage == false)
                                {
                                        errorType = InstallerManager::Request(originPath, INSTALLER_OPERATION_INSTALL, INSTALLER_OPTION_RESET_PRELOADED, _pi, &optionalData);
@@ -207,7 +254,7 @@ main(int argc, char **argv)
                        }
                        else
                        {
-                               ret = InstallerManager::Request(reqeustPackageId, INSTALLER_OPERATION_UNINSTALL, INSTALLER_OPTION_NORMAL, _pi);
+                               errorType = InstallerManager::Request(reqeustPackageId, INSTALLER_OPERATION_UNINSTALL, INSTALLER_OPTION_NORMAL, _pi);
                        }
 
                        __osp_installer_report_result(reqeustPackageId, errorType);
@@ -234,7 +281,7 @@ main(int argc, char **argv)
                                int moveType = -1;
                                moveType = pkgmgr_installer_get_move_type(_pi);
 
-                               InstallerManager::RequestMove(path, moveType);
+                               InstallerManager::RequestMove(path, moveType, _pi);
                        }
                        else
                        {