Code cleanup (#251)
[platform/core/dotnet/launcher.git] / NativeLauncher / tool / nitool.cc
index 9647369..29b6b78 100644 (file)
@@ -33,57 +33,54 @@ std::vector<std::string> getCmdArgs(char** begin, char** end)
        return list;
 }
 
+static bool cmdOptionExists(char** begin, char** end, const std::string& option)
+{
+       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"
-               "       --dir               - Create NI for directory\n"
-               "       --r2r               - Use ready-to-run option (default: FNV)\n"
-               "                             (This option should be used with other options)\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"
+               "%s is deprecated. Please use dotnettool instead.\n"
                "Example:\n"
-               "1. Create native image for dlls and exes under platform directories\n"
-               "   # %s --system\n"
-               "2. Create native image for dll\n"
-               "   # %s --dll /usr/bin/Tizen.Runtime.dll\n"
-               "3. Create native image under the package's bin and lib directory\n"
-               "   # %s --pkg org.tizen.FormsGallery\n"
-               "4. Regenerate native images for all installed .net packages with ready-to-run option\n"
-               "   # %s --r2r --regen-all-app\n\n";
-       printf(helpDesc, argv0, argv0, argv0, argv0, argv0);
+               "   # dotnettool --help\n\n";
+       printf(helpDesc, argv0);
 }
 
 int main(int argc, char* argv[])
 {
+       DWORD flags = 0;
        bool pkgMode = false;
        bool dllMode = false;
        bool dirMode = false;
        bool rmPkgMode = false;
-       bool enableR2R = false;
        bool pkgDllMode = false;
 
-       NiCommonOption option = {std::string(), std::string(), std::string()};
+       NICommonOption option = {std::string(), std::string(), std::string()};
        if (initNICommon(&option) != NI_ERROR_NONE) {
-               fprintf(stderr, "Fail to initialize NI Common\n");
                return -1;
        }
 
+       // Parse optional switches first.
        if (cmdOptionExists(argv, argv+argc, "--r2r")) {
-               enableR2R = true;
+               flags |= NI_FLAGS_ENABLER2R;
+       }
+       if (cmdOptionExists(argv, argv+argc, "--compatibility")) {
+               flags |= NI_FLAGS_COMPATIBILITY;
+       }
+       if (cmdOptionExists(argv, argv+argc, "--instrument")) {
+               flags |= NI_FLAGS_INSTRUMENT;
+       }
+       if (cmdOptionExists(argv, argv+argc, "--verbose")) {
+               flags |= NI_FLAGS_VERBOSE;
        }
 
+       // The following commands are mutually exclusive.
        if (cmdOptionExists(argv, argv+argc, "--help")) {
                help(argv[0]);
                return 0;
        } else if (cmdOptionExists(argv, argv+argc, "--system")) {
-               createNiPlatform(enableR2R);
+               createNIPlatform(flags);
                return 0;
        } else if (cmdOptionExists(argv, argv+argc, "--dll")) {
                dllMode = true;
@@ -92,12 +89,12 @@ int main(int argc, char* argv[])
        } else if (cmdOptionExists(argv, argv+argc, "--dir")) {
                dirMode = true;
        } else if (cmdOptionExists(argv, argv+argc, "--reset-system")) {
-               removeNiPlatform();
+               removeNIPlatform();
                return 0;
        } else if (cmdOptionExists(argv, argv+argc, "--reset-pkg")) {
                rmPkgMode = true;
        } else if (cmdOptionExists(argv, argv+argc, "--regen-all-app")) {
-               regenerateAppNI(enableR2R);
+               regenerateAppNI(flags);
                return 0;
        } else if (cmdOptionExists(argv, argv+argc, "--pkg-dll")) {
                pkgDllMode = true;
@@ -110,27 +107,27 @@ int main(int argc, char* argv[])
 
        if (args.size() < 1) {
                if (pkgMode)
-                       fprintf(stderr, "Package name is missed\n");
+                       fprintf(stderr, "Package name is missing.\n");
                else if (dllMode)
-                       fprintf(stderr, "DLL path is missed\n");
+                       fprintf(stderr, "DLL path is missing.\n");
                help(argv[0]);
-               return 1;
+               return -1;
        }
 
        if (pkgMode) {
                for (const std::string pkg : args) {
                        // if there is AOTed dlls under package root, that is skiped.
-                       int ret = createNiUnderPkgRoot(pkg, enableR2R);
+                       int ret = createNIUnderPkgRoot(pkg, flags);
                        if (ret == NI_ERROR_INVALID_PACKAGE) {
                                fprintf(stderr, "Failed to get root path from [%s]\n", pkg.c_str());
                                return -1;
                        } else if (ret != NI_ERROR_NONE) {
-                               fprintf(stderr, "Failed to generate NI file [%s]\n", args[1].c_str());
+                               fprintf(stderr, "Failed to generate NI file [%s]\n", pkg.c_str());
                                return -1;
                        }
                }
        } else if (pkgDllMode) {
-               int ret = createNiDllUnderPkgRoot(args[0], args[1], enableR2R);
+               int ret = createNIDllUnderPkgRoot(args[0], args[1], flags);
                if (ret == NI_ERROR_INVALID_PACKAGE) {
                        fprintf(stderr, "Failed to get root path from [%s]\n", args[0].c_str());
                        return -1;
@@ -143,7 +140,7 @@ int main(int argc, char* argv[])
                }
        } else if (rmPkgMode) {
                for (const std::string pkg : args) {
-                       int ret = removeNiUnderPkgRoot(pkg);
+                       int ret = removeNIUnderPkgRoot(pkg);
                        if (ret == NI_ERROR_INVALID_PACKAGE) {
                                fprintf(stderr, "Failed to get root path from [%s]\n", pkg.c_str());
                                return -1;
@@ -156,7 +153,7 @@ int main(int argc, char* argv[])
                // donot return error code for generation failure.
                // we have to run crossgen for all input dlls.
                for (const std::string dll : args) {
-                       int ret = createNiDll(dll, enableR2R);
+                       int ret = createNIDll(dll, flags);
                        if (ret == NI_ERROR_ALREADY_EXIST) {
                                // skip for already exist case
                        } else if (ret != NI_ERROR_NONE) {
@@ -164,7 +161,7 @@ int main(int argc, char* argv[])
                        }
                }
        } else if (dirMode) {
-               createNiUnderDirs(args.data(), args.size(), enableR2R);
+               createNIUnderDirs(args.data(), args.size(), flags);
        }
 
        return 0;