// Copyright (c) 2008-2009 Hartmut Kaiser // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include "saga-advert.hpp" #include #include /////////////////////////////////////////////////////////////////////////////// static int argc_; void printUsage() { std::cout << "Usage: saga-advert " << std::endl; std::cout << "" << std::endl; std::cout << " Commands: Options:\n" << std::endl; std::cout << " list_directory " << std::endl; std::cout << " dump_directory " << std::endl; std::cout << " add_directory " << std::endl; std::cout << "" << std::endl; std::cout << " add_entry " << std::endl; std::cout << " remove_entry " << std::endl; std::cout << " remove_directory " << std::endl; std::cout << "" << std::endl; std::cout << " store_string " << std::endl; std::cout << " retrieve_string " << std::endl; std::cout << "" << std::endl; std::cout << " list_attributes " << std::endl; std::cout << " set_attribute " << std::endl; std::cout << " remove_attribute " << std::endl; std::cout << "" << std::endl; std::cout << " (advert-url: {any|advert}://host:port/path)" << std::endl; std::cout << "" << std::endl; std::cout << "This is a SAGA-based tool for advert management."<< std::endl; std::cout << "For additional information, see http://saga.cct.lsu.edu."<< std::endl; } void ExitIfArgcLessThan(int n) { if (argc_ < n) { printUsage(); exit(-1); } } /////////////////////////////////////////////////////////////////////////////// int main (int argc, char* argv[]) { #if !defined(SAGA_HAVE_PACKAGE_ADVERT) || !defined(SAGA_HAVE_PACKAGE_NAMESPACE) std::cerr << "saga-advert: saga has been compiled without the advert or " "namespace packages, bailing out" << std::endl; #else argc_ = argc; ExitIfArgcLessThan(2); SAGA_GUARDED_EXEC ( if(!strcmp(argv[1], "list_directory")) { ExitIfArgcLessThan(4); advert_list_directory(std::string(argv[2]), std::string(argv[3])); } else if(!strcmp(argv[1], "add_directory")) { ExitIfArgcLessThan(3); advert_add_directory(std::string(argv[2])); } else if(!strcmp(argv[1], "dump_directory")) { ExitIfArgcLessThan(3); advert_dump_directory(std::string(argv[2])); } else if(!strcmp(argv[1], "add_entry")) { ExitIfArgcLessThan(3); advert_add_entry(std::string(argv[2])); } else if(!strcmp(argv[1], "remove_entry")) { ExitIfArgcLessThan(3); advert_remove_entry(std::string(argv[2])); } else if(!strcmp(argv[1], "remove_directory")) { ExitIfArgcLessThan(3); advert_remove_directory(std::string(argv[2])); } else if(!strcmp(argv[1], "store_string")) { ExitIfArgcLessThan(4); advert_store_string(std::string(argv[2]), std::string(argv[3])); } else if(!strcmp(argv[1], "retrieve_string")) { ExitIfArgcLessThan(3); advert_retrieve_string(std::string(argv[2])); } else if(!strcmp(argv[1], "list_attributes")) { ExitIfArgcLessThan(3); advert_list_attributes(std::string(argv[2])); } else if(!strcmp(argv[1], "set_attribute")) { ExitIfArgcLessThan(5); advert_add_attribute (std::string(argv[2]), std::string(argv[3]), std::string(argv[4])); } else if(!strcmp(argv[1], "remove_attribute")) { ExitIfArgcLessThan(4); advert_remove_attribute(std::string(argv[2]), std::string(argv[3])); } else { std::cout << "Unknown command: " << std::string(argv[1]) << std::endl; printUsage(); exit(-1); } ) #endif return 0; }