add missing else
[platform/core/dotnet/launcher.git] / NativeLauncher / installer-plugin / nitool.cc
index d0dd552..5c1ea0a 100644 (file)
  * limitations under the License.
  */
 
-#include "common.h"
+#include "ni_common.h"
 
 #include <cstdio>
 #include <cstring>
 
 #include <algorithm>
+#include <vector>
 
-std::vector<const char*> get_cmd_args(char** begin, char** end)
+std::vector<std::string> getCmdArgs(char** begin, char** end)
 {
-  for (char** itr = end-1; itr != begin-1; --itr)
-  {
-    if (itr != end && strncmp(*itr, "--", 2) == 0)
-    {
-      itr++;
-      int len = end - itr;
-      return std::vector<const char*>(len, *itr);
-    }
-  }
-  return std::vector<const char*>(end-begin-1, *(begin+1));
+       std::vector<std::string> list;
+       for (char** itr = begin+1; itr != end; itr++) {
+               if (strncmp(*itr, "--", 2) != 0)
+                       list.push_back(*itr);
+       }
+       return list;
 }
 
-bool cmd_option_exists(char** begin, char** end, const std::string& option)
+bool cmdOptionExists(char** begin, char** end, const std::string& option)
 {
-  return std::find(begin, end, option) != end;
+       return std::find(begin, end, option) != end;
 }
 
 static void help(const char *argv0)
 {
-  const char* helpdesc = 
-    "Usage: %s [args] <root paths or pkg name>\n"
-    "      --help       - Display this screen\n"
-    "      --system     - Create NI under System DLLs\n"
-    "      --dll        - Create NI for DLL\n"
-    "      --pkg        - Create NI for package\n"
-    "\n"
-    "Example:\n"
-    "Create native image for dlls and exes under platform directories\n"
-    "%s --system\n"
-    "Create native image for dll\n"
-    "%s --dll /usr/bin/Tizen.Runtime.Coreclr.dll\n"
-    "Create native image under the package's bin and lib directory\n"
-    "%s --pkg org.tizen.FormsGallery\n\n";
-  printf(helpdesc, argv0, argv0, argv0, argv0);
+       const char* helpDesc =
+               "Usage: %s [args] <root paths or pkg name>\n"
+               "               --help              - Display this screen\n"
+               "               --system            - Create NI under System DLLs\n"
+               "               --dll               - Create NI for DLL\n"
+               "               --pkg               - Create NI for package\n"
+               "               --dir               - Create NI for directory\n"
+               "               --r2r               - Use ready-to-run option (default: FNV)\n"
+               "               --reset-system      - Remove System NI files\n"
+               "               --reset-pkg         - Remove App NI files\n"
+               "               --regen-all-app     - Re-generate All App NI files\n"
+               "\n"
+               "Example:\n"
+               "Create native image for dlls and exes under platform directories\n"
+               "%s --system\n"
+               "Create native image for dll\n"
+               "%s --dll /usr/bin/Tizen.Runtime.dll\n"
+               "Create native image under the package's bin and lib directory\n"
+               "%s --pkg org.tizen.FormsGallery\n\n";
+       printf(helpDesc, argv0, argv0, argv0, argv0);
 }
 
 int main(int argc, char* argv[])
 {
-  bool pkg_mode = false;
-  bool dll_mode = false;
+       bool pkgMode = false;
+       bool dllMode = false;
+       bool dirMode = false;
+       bool rmPkgMode = false;
+       bool enableR2R = false;
+       bool pkgDllMode = false;
 
-  if (cmd_option_exists(argv, argv+argc, "--help"))
-  {
-    help(argv[0]);
-    return 0;
-  }
+       NiCommonOption option = {std::string(), std::string(), std::string()};
+       if (initNICommon(&option) < 0) {
+               fprintf(stderr, "Fail to initialize NI Common\n");
+               return -1;
+       }
 
-  if (cmd_option_exists(argv, argv+argc, "--system"))
-  {
-    create_ni_platform();
-    return 0;
-  }
+       if (cmdOptionExists(argv, argv+argc, "--r2r")) {
+               enableR2R = true;
+       }
 
-  if (cmd_option_exists(argv, argv+argc, "--dll"))
-  {
-    dll_mode = true;
-  }
+       if (cmdOptionExists(argv, argv+argc, "--help")) {
+               help(argv[0]);
+               return 0;
+       } else if (cmdOptionExists(argv, argv+argc, "--system")) {
+               createNiPlatform(enableR2R);
+               return 0;
+       } else if (cmdOptionExists(argv, argv+argc, "--dll")) {
+               dllMode = true;
+       } else if (cmdOptionExists(argv, argv+argc, "--pkg")) {
+               pkgMode = true;
+       } else if (cmdOptionExists(argv, argv+argc, "--dir")) {
+               dirMode = true;
+       } else if (cmdOptionExists(argv, argv+argc, "--reset-system")) {
+               removeNiPlatform();
+               return 0;
+       } else if (cmdOptionExists(argv, argv+argc, "--reset-pkg")) {
+               rmPkgMode = true;
+       } else if (cmdOptionExists(argv, argv+argc, "--regen-all-app")) {
+               regenerateAppNI();
+               return 0;
+       } else if (cmdOptionExists(argv, argv+argc, "--pkg-dll")) {
+               pkgDllMode = true;
+       } else {
+               help(argv[0]);
+               return 0;
+       }
 
-  if (cmd_option_exists(argv, argv+argc, "--pkg"))
-  {
-    pkg_mode = true;
-  }
+       std::vector<std::string> args = getCmdArgs(argv, argv+argc);
 
-  std::vector<const char*> args = get_cmd_args(argv, argv+argc);
+       if (args.size() < 1) {
+               if (pkgMode)
+                       fprintf(stderr, "Package name is missed\n");
+               else if (dllMode)
+                       fprintf(stderr, "DLL path is missed\n");
+               help(argv[0]);
+               return 1;
+       }
 
-  if (args.size() < 1)
-  {
-    if (pkg_mode)
-      fprintf(stderr, "Package name is missed\n");
-    else if (dll_mode)
-      fprintf(stderr, "DLL path is missed\n");
-    help(argv[0]);
-    return 1;
-  }
+       if (pkgMode) {
+               for (const std::string pkg : args) {
+                       if (createNiUnderPkgRoot(pkg, enableR2R) != 0) {
+                               fprintf(stderr, "Failed to get root path from [%s]\n", pkg.c_str());
+                               return -1;
+                       }
+               }
+       } else if (pkgDllMode) {
+               if (createNiDllUnderPkgRoot(args[0], args[1], enableR2R) != 0) {
+                       fprintf(stderr, "Failed to get root path from [%s]\n", args[0].c_str());
+                       return -1;
+               }
+       } else if (rmPkgMode) {
+               for (const std::string pkg : args) {
+                       if (removeNiUnderPkgRoot(pkg) != 0) {
+                               fprintf(stderr, "Failed to get root path from [%s]\n", pkg.c_str());
+                               return -1;
+                       }
+               }
+       } else if (dllMode) {
+               for (const std::string dll : args)
+                       createNiDll(dll, enableR2R);
+       } else if (dirMode) {
+               createNiUnderDirs(args.data(), args.size(), enableR2R);
+       }
 
-  if (pkg_mode)
-  {
-    for (const char* pkg : args)
-    {
-      if (create_ni_under_pkg_root(pkg) != 0)
-      {
-        fprintf(stderr, "Failed to get root path from [%s]\n", pkg);
-        return 1;
-      }
-    }
-  }
-  else if (dll_mode)
-  {
-    for (const char* dll : args)
-    {
-      create_ni_select(dll);
-    }
-  }
-  else
-  {
-    create_ni_under_dirs(args.data(), args.size());
-  }
-
-  return 0;
+       return 0;
 }