6288bd41484c7a4efbff6443b2f99dc1cf20b23b
[project/opkg-lede.git] / tests / libopkg_test.c
1 #include <opkg.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 opkg_package_t *find_pkg = NULL;
6
7 void
8 progress_callback (opkg_t *opkg, const opkg_progress_data_t *progress, void *data)
9 {
10 printf ("\r%s %3d%%", (char*) data, progress->percentage);
11 fflush (stdout);
12 }
13
14 void
15 package_list_callback (opkg_t *opkg, opkg_package_t *pkg, void *data)
16 {
17 static install_count = 0;
18 static total_count = 0;
19
20 if (pkg->installed)
21 install_count++;
22
23 total_count++;
24
25 printf ("\rPackage count: %d Installed, %d Total Available", install_count, total_count);
26 fflush (stdout);
27
28 if (!find_pkg)
29 {
30 /* store the first package to print out later */
31 find_pkg = pkg;
32 }
33 else
34 opkg_package_free (pkg);
35 }
36
37 void
38 package_list_upgradable_callback (opkg_t *opkg, opkg_package_t *pkg, void *data)
39 {
40 printf ("%s - %s\n", pkg->name, pkg->version);
41 }
42
43 void
44 print_package (opkg_package_t *pkg)
45 {
46 printf (
47 "Name: %s\n"
48 "Version: %s\n"
49 "Repository: %s\n"
50 "Architecture: %s\n"
51 "Description: %s\n"
52 "Tags: %s\n"
53 "URL: %s\n"
54 "Size: %d\n"
55 "Installed: %s\n",
56 pkg->name,
57 pkg->version,
58 pkg->repository,
59 pkg->architecture,
60 pkg->description,
61 pkg->tags,
62 pkg->url,
63 pkg->size,
64 (pkg->installed ? "True" : "False")
65 );
66 }
67
68 int
69 main (int argc, char **argv)
70 {
71 opkg_t *opkg;
72 opkg_package_t *pkg;
73 int err;
74
75 opkg = opkg_new ();
76
77 opkg_set_option (opkg, "offline_root", "/tmp/");
78
79 opkg_re_read_config_files (opkg);
80
81 err = opkg_update_package_lists (opkg, progress_callback, "Updating...");
82 printf ("\nopkg_update_package_lists returned %d\n", err);
83
84 opkg_list_packages (opkg, package_list_callback, NULL);
85 printf ("\n");
86
87 if (find_pkg)
88 {
89 printf ("Finding package \"%s\"\n", find_pkg->name);
90 pkg = opkg_find_package (opkg, find_pkg->name, find_pkg->version, find_pkg->architecture, find_pkg->repository);
91 if (pkg)
92 {
93 print_package (pkg);
94 opkg_package_free (find_pkg);
95 opkg_package_free (pkg);
96 }
97 else
98 printf ("Package \"%s\" not found!\n", find_pkg->name);
99 }
100 else
101 printf ("No package available to test find_package.\n");
102
103 err = opkg_install_package (opkg, "aspell", progress_callback, "Installing...");
104 printf ("\nopkg_install_package returned %d\n", err);
105
106 err = opkg_upgrade_package (opkg, "aspell", progress_callback, "Upgrading...");
107 printf ("\nopkg_upgrade_package returned %d\n", err);
108
109 err = opkg_remove_package (opkg, "aspell", progress_callback, "Removing...");
110 printf ("\nopkg_remove_package returned %d\n", err);
111
112 printf ("Listing upgradable packages...\n");
113 opkg_list_upgradable_packages (opkg, package_list_upgradable_callback, NULL);
114
115 err = opkg_upgrade_all (opkg, progress_callback, "Upgrading all...");
116 printf ("\nopkg_upgrade_all returned %d\n", err);
117
118 opkg_free (opkg);
119
120 return 0;
121 }