int main()

in zookeeper-contrib/zookeeper-contrib-zktreeutil/src/ZkTreeUtilMain.cc [141:259]


int main(int argc, char **argv)
{
    if (argc == 1) {
        usage(argc, argv);
        exit(0);
    }

    // Parse the arguments.
     int op = 0;
     bool force = false;
     string zkHosts;
     string xmlFile;
     string path = "/";
     string cert;
     int depth = 0;
     while (1)
     {
         int c = getopt_long(argc, argv, short_options, long_options, 0);
         if (c == -1)
             break;

         switch (c) {
             case 'I': op = c;
                          break;
             case 'E': op = c;
                          break;
             case 'U': op = c;
                          break;
             case 'F': op = c;
                          break;
             case 'D': op = c;
                          break;
             case 'f': force = true;
                          break;
             case 'x': xmlFile = optarg;
                          break;
             case 'p': path = optarg;
                          break;
             case 'd': depth = atoi (optarg);
                          break;
             case 'z': zkHosts = optarg;
                          break;
             case 's': cert = optarg;
                    break;
             case 'h': usage (argc, argv);
                          exit(0);
         }
     }

     ZkTreeUtil zkTreeUtil;
     if (!cert.empty()) zkTreeUtil.setSslParams(cert);

     switch (op)
     {
         case 'I':    {
                            if (zkHosts == "" || xmlFile == "")
                            {
                                std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
                                exit (-1);
                            }
                            zkTreeUtil.loadZkTreeXml (xmlFile);
                            zkTreeUtil.writeZkTree (zkHosts, path, force);
                            std::cout << "[zktreeutil] import successful!" << std::endl;
                            break;
                        }
         case 'E':    {
                            if (zkHosts == "")
                            {
                                std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
                                exit (-1);
                            }
                            zkTreeUtil.loadZkTree (zkHosts, path);
                            zkTreeUtil.dumpZkTree (true);
                            break;
                        }
         case 'U':    {
                            if (zkHosts == "" || xmlFile == "")
                            {
                                std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
                                exit (-1);
                            }
                            zkTreeUtil.loadZkTreeXml (xmlFile);
                            vector< ZkAction > zkActions = zkTreeUtil.diffZkTree (zkHosts, path);
                            int flags = ZkTreeUtil::EXECUTE;
                            if (!force) flags |= ZkTreeUtil::INTERACTIVE;
                            zkTreeUtil.executeZkActions (zkHosts, zkActions, flags);
                            std::cout << "[zktreeutil] update successful!" << std::endl;
                            break;
                        }
         case 'F':    {
                            if (zkHosts == "" || xmlFile == "")
                            {
                                std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
                                exit (-1);
                            }
                            zkTreeUtil.loadZkTreeXml (xmlFile);
                            vector< ZkAction > zkActions = zkTreeUtil.diffZkTree (zkHosts, path);
                            zkTreeUtil.executeZkActions (zkHosts, zkActions, ZkTreeUtil::PRINT);
                            break;
                        }
         case 'D':    {
                            if (zkHosts != "")
                                zkTreeUtil.loadZkTree (zkHosts, path);
                            else if (xmlFile != "")
                                zkTreeUtil.loadZkTreeXml (xmlFile);
                            else
                            {
                                std::cout << "[zktreeutil] missing params; please see usage" << std::endl;
                                exit (-1);
                            }
                            // Dump the ZK tree
                            if (depth) zkTreeUtil.dumpZkTree (false, depth);
                            else zkTreeUtil.dumpZkTree (false);
                            break;
                        }
     }

     exit(0);
}