+int main(int argc, char **argv)
+{
+ pkg_t *pkg;
+ int err;
+
+ if (argc < 2) {
+ printf("Usage: %s command\n"
+ "\nCommands:\n"
+ "\tupdate - Update package lists\n"
+ "\tfind [package] - Print details of the specified package\n"
+ "\tinstall [package] - Install the specified package\n"
+ "\tupgrade [package] - Upgrade the specified package\n"
+ "\tlist upgrades - List the available upgrades\n"
+ "\tlist all - List all available packages\n"
+ "\tlist installed - List all the installed packages\n"
+ "\tremove [package] - Remove the specified package\n"
+ "\trping - Reposiroties ping, check the accessibility of repositories\n"
+ "\ttest - Run test script\n", basename(argv[0]));
+ exit(0);
+ }
+
+ setenv("OFFLINE_ROOT", "/tmp", 0);
+
+ if (opkg_new()) {
+ printf("opkg_new() failed. This sucks.\n");
+ print_error_list();
+ return 1;
+ }
+
+ switch (argv[1][0]) {
+ case 'f':
+ pkg = opkg_find_package(argv[2], NULL, NULL, NULL);
+ if (pkg) {
+ print_package(pkg);
+ } else
+ printf("Package \"%s\" not found!\n", find_pkg->name);
+ break;
+ case 'i':
+ err =
+ opkg_install_package(argv[2], progress_callback,
+ "Installing...");
+ printf("\nopkg_install_package returned %d\n", err);
+ break;
+
+ case 'u':
+ if (argv[1][2] == 'd') {
+ err =
+ opkg_update_package_lists(progress_callback,
+ "Updating...");
+ printf("\nopkg_update_package_lists returned %d\n",
+ err);
+ break;
+ } else {
+ if (argc < 3) {
+ err =
+ opkg_upgrade_all(progress_callback,
+ "Upgrading all...");
+ printf("\nopkg_upgrade_all returned %d\n", err);
+ } else {
+ err =
+ opkg_upgrade_package(argv[2],
+ progress_callback,
+ "Upgrading...");
+ printf("\nopkg_upgrade_package returned %d\n",
+ err);
+ }
+ }
+ break;
+
+ case 'l':
+ if (argc < 3) {
+ printf
+ ("Please specify one either all, installed or upgrades\n");
+ } else {
+ switch (argv[2][0]) {
+ case 'u':
+ printf("Listing upgradable packages...\n");
+ opkg_list_upgradable_packages
+ (package_list_upgradable_callback, NULL);
+ break;
+ case 'a':
+ printf("Listing all packages...\n");
+ opkg_list_packages(package_list_callback, NULL);
+ printf("\n");
+ break;
+ case 'i':
+ printf("Listing installed packages...\n");
+ opkg_list_packages
+ (package_list_installed_callback, NULL);
+ break;
+ default:
+ printf("Unknown list option \"%s\"\n", argv[2]);
+ }
+ }
+ break;
+
+ case 'r':
+ if (argv[1][1] == 'e') {
+ err =
+ opkg_remove_package(argv[2], progress_callback,
+ "Removing...");
+ printf("\nopkg_remove_package returned %d\n", err);
+ break;
+ } else if (argv[1][1] == 'p') {
+ err = opkg_repository_accessibility_check();
+ printf
+ ("\nopkg_repository_accessibility_check returned (%d)\n",
+ err);
+ break;
+ }
+
+ default:
+ printf("Unknown command \"%s\"\n", argv[1]);
+ }
+
+ opkg_free();
+
+ return 0;