f8String find_package_info_string(const f8String& what) { auto itr(package_info().find(what)); return itr != package_info().cend() ? itr->second : f8String{}; }
int main(int argc, char **argv) { char *package_name = NULL; int operations = 0; struct option longopts[] = { { "install", required_argument, 0, 'i' }, { "remove", required_argument, 0, 'r' }, { "list", no_argument, 0, 'l' }, { "unpack", required_argument, 0, 'u' }, { "configure", required_argument, 0, 'c' }, { "status", required_argument, 0, 's' }, { "offline", required_argument, 0, 'o' }, { "verbose", no_argument, 0, 'V' }, { "no-database", no_argument, 0, 'n' }, { "confall", no_argument, 0, 'a' }, { "depends", required_argument, 0, 'd' }, { "all-depends", no_argument, 0, 'x' }, { "files", required_argument, 0, 'f' }, { "init", required_argument, 0, 'p' }, { "cached", required_argument, 0, 'C' }, { "custom-db", required_argument, 0, 'D' }, { "info", required_argument, 0, 't' }, { "version", no_argument, 0, 'v' }, { "help", no_argument, 0, 'h' }, { NULL, 0, NULL, 0 }, }; while (optind < argc) { switch (getopt_long(argc, argv, "i:r:lu:c:s:o:Vnad:xf:p:C:D:vht:", longopts, &optind)) { case 'i': operations |= OPERATION_INSTALL; create_packages_from_argv(argc, argv, &optind); break; case 'r': operations |= OPERATION_REMOVE; create_packages_from_argv(argc, argv, &optind); break; case 'l': operations |= OPERATION_LIST; break; case 'u': operations |= OPERATION_UNPACK; create_packages_from_argv(argc, argv, &optind); break; case 'c': operations |= OPERATION_CONFIGURE; create_packages_from_argv(argc, argv, &optind); break; case 's': operations |= OPERATION_STATUS; create_packages_from_argv(argc, argv, &optind); break; case 'o': offline = 1; offline_root = strdup(optarg); break; case 'V': verbose = 1; break; case 'n': nodatabase = 1; break; case 'a': operations |= OPERATION_CONFALL; break; case 'd': operations |= OPERATION_DEPENDS; create_packages_from_argv(argc, argv, &optind); break; case 'x': operations |= OPERATION_ALLDEPENDS; break; case 'f': operations |= OPERATION_FILES; create_packages_from_argv(argc, argv, &optind); return 0; break; case 'p': operations |= OPERATION_INIT; break; case 'C': cached_dir = strdup(optarg); break; case 'D': custom_db = strdup(optarg); break; case 't': operations |= OPERATION_INFO; package_name = strdup(optarg); break; case 'v': printf("Version : %s\n", pkg_version); printf("Build Date : "__DATE__" "__TIME__"\n"); exit(EXIT_SUCCESS); case 'h': usage(); exit(EXIT_SUCCESS); default: exit(EXIT_FAILURE); } } // set Apkg library settings apkg_settings(verbose, offline, nodatabase, offline_root); if (operations & OPERATION_INSTALL) { return apkg_install(custom_db, packages); } else if (operations & OPERATION_REMOVE) { return apkg_remove(custom_db, packages); } else if (operations & OPERATION_LIST) { return apkg_print_packages(custom_db); // list all packages in status file } else if (operations & OPERATION_UNPACK) { return apkg_unpack(packages); } else if (operations & OPERATION_CONFIGURE) { return apkg_configure(packages); } else if (operations & OPERATION_CONFALL) { return apkg_install_all_unpacked(); } else if (operations & OPERATION_STATUS) { return apkg_status_of(custom_db, packages); } else if (operations & OPERATION_DEPENDS) { return apkg_print_dep_tree(cached_dir, packages->package); } else if (operations & OPERATION_ALLDEPENDS) { return apkg_print_dep_tree_of_dir(cached_dir); } else if (operations & OPERATION_FILES) { return apkg_files_of_package(custom_db, packages); } else if (operations & OPERATION_INIT) { return apkg_init(cached_dir); } else if (operations & OPERATION_INFO) { return package_info(package_name); } else return FAILED; }