6288bd41484c7a4efbff6443b2f99dc1cf20b23b
[oweals/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 }