Exemple #1
0
f8String find_package_info_string(const f8String& what)
{
	auto itr(package_info().find(what));
	return itr != package_info().cend() ? itr->second : f8String{};
}
Exemple #2
0
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;
}