Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/src/pkgcli.h
2645 views
1
/*-
2
* Copyright (c) 2011-2024 Baptiste Daroussin <[email protected]>
3
* Copyright (c) 2013 Matthew Seaman <[email protected]>
4
*
5
* SPDX-License-Identifier: BSD-2-Clause
6
*/
7
8
#ifndef _PKGCLI_H
9
#define _PKGCLI_H
10
11
#include <search.h>
12
#include <stdbool.h>
13
#include <stdint.h>
14
#include <string.h>
15
#include <xstring.h>
16
#include <bsd_compat.h>
17
#include <pkg/vec.h>
18
19
#define pkg_warnx(fmt, ...) pkg_fprintf(stderr, "%S: " fmt, getprogname(), __VA_ARGS__, -1)
20
#define ll_foreach(head, el) for (el=head; el != NULL; el = (el)->next)
21
22
extern bool quiet;
23
extern bool newpkgversion;
24
extern int nbtodl;
25
26
/* pkg add */
27
int exec_add(int, char **);
28
void usage_add(void);
29
30
/* pkg alias */
31
int exec_alias(int, char **);
32
void usage_alias(void);
33
34
/* pkg annotate */
35
int exec_annotate(int, char **);
36
void usage_annotate(void);
37
38
/* pkg audit */
39
int exec_audit(int, char **);
40
void usage_audit(void);
41
42
/* pkg autoremove */
43
int exec_autoremove(int, char **);
44
void usage_autoremove(void);
45
46
/* pkg check */
47
int exec_check(int, char **);
48
void usage_check(void);
49
50
/* pkg clean */
51
int exec_clean(int, char **);
52
void usage_clean(void);
53
54
/* pkg create */
55
int exec_create(int, char **);
56
void usage_create(void);
57
58
/* pkg delete */
59
void usage_delete(void);
60
int exec_delete(int, char **);
61
62
/* pkg info */
63
64
int exec_info(int, char **);
65
void usage_info(void);
66
67
/* pkg install */
68
int exec_install(int, char **);
69
void usage_install(void);
70
71
/* pkg plugins */
72
int exec_plugins(int, char **);
73
void usage_plugins(void);
74
75
/* pkg key */
76
int exec_key(int, char **);
77
void usage_key(void);
78
79
/* pkg lock */
80
int exec_lock(int, char **);
81
int exec_unlock(int, char **);
82
void usage_lock(void);
83
84
/* pkg query */
85
int exec_query(int, char **);
86
void usage_query(void);
87
88
/* pkg register */
89
void usage_register(void);
90
int exec_register(int argc, char **argv);
91
92
/* pkg repo */
93
int exec_repo(int, char **);
94
void usage_repo(void);
95
96
/* pkg repo */
97
int exec_repositories(int, char **);
98
void usage_repositories(void);
99
100
/* pkg rquery */
101
int exec_rquery(int, char **);
102
void usage_rquery(void);
103
104
/* pkg set */
105
int exec_set(int, char **);
106
void usage_set(void);
107
108
/* pkg search */
109
int exec_search(int, char **);
110
void usage_search(void);
111
112
/* pkg shlib */
113
int exec_shlib(int, char **);
114
void usage_shlib(void);
115
char *sanitize(char *, const char *, size_t);
116
117
/* pkg stats */
118
#define STATS_LOCAL (1<<0)
119
#define STATS_REMOTE (1<<1)
120
121
int exec_stats(int, char **);
122
void usage_stats(void);
123
124
/* pkg triggers */
125
int exec_triggers(int, char **);
126
void usage_triggers(void);
127
128
/* pkg unregister */
129
void usage_unregister(void);
130
int exec_unregister(int, char **);
131
132
/* pkg update */
133
int exec_update(int, char **);
134
void usage_update(void);
135
int pkgcli_update(bool, bool, c_charv_t *);
136
137
/* pkg updating */
138
int exec_updating(int, char **);
139
void usage_updating(void);
140
141
/* pkg upgrade */
142
int exec_upgrade(int, char **);
143
void usage_upgrade(void);
144
145
/* pkg fetch */
146
int exec_fetch(int, char **);
147
void usage_fetch(void);
148
149
/* pkg shell */
150
int exec_shell(int, char **);
151
void usage_shell(void);
152
153
/* pkg version */
154
#define VERSION_SOURCE_INDEX (1U<<0)
155
#define VERSION_ORIGIN (1U<<1)
156
#define VERSION_QUIET (1U<<2)
157
#define VERSION_VERBOSE (1U<<3)
158
#define VERSION_STATUS (1U<<4)
159
#define VERSION_NOSTATUS (1U<<5)
160
#define VERSION_WITHORIGIN (1U<<7)
161
#define VERSION_TESTVERSION (1U<<8)
162
#define VERSION_TESTPATTERN (1U<<9)
163
#define VERSION_SOURCE_PORTS (1U<<10)
164
#define VERSION_SOURCE_REMOTE (1U<<11)
165
#define VERSION_INDEX_FILE_NAME (1U<<12)
166
#define VERSION_WITHNAME (1U<<13)
167
168
#define VERSION_SOURCES (VERSION_SOURCE_PORTS | \
169
VERSION_SOURCE_INDEX | \
170
VERSION_SOURCE_REMOTE)
171
172
int exec_version(int, char **);
173
void usage_version(void);
174
175
/* pkg which */
176
int exec_which(int, char **);
177
void usage_which(void);
178
179
/* pkg ssh */
180
int exec_ssh(int, char **);
181
void usage_ssh(void);
182
183
/* pkg config */
184
int exec_config(int, char **);
185
void usage_config(void);
186
187
/* utils */
188
189
/* These are the fields of the Full output, in order */
190
#define INFO_NAME (1LL<<0)
191
#define INFO_VERSION (1LL<<1)
192
#define INFO_INSTALLED (1LL<<2)
193
#define INFO_ORIGIN (1LL<<3)
194
#define INFO_ARCH (1LL<<4)
195
#define INFO_PREFIX (1LL<<5)
196
#define INFO_REPOSITORY (1LL<<6)
197
#define INFO_CATEGORIES (1LL<<7)
198
#define INFO_LICENSES (1LL<<8)
199
#define INFO_MAINTAINER (1LL<<9)
200
#define INFO_WWW (1LL<<10)
201
#define INFO_COMMENT (1LL<<11)
202
#define INFO_OPTIONS (1LL<<12)
203
#define INFO_SHLIBS_REQUIRED (1LL<<13)
204
#define INFO_SHLIBS_PROVIDED (1LL<<14)
205
#define INFO_ANNOTATIONS (1LL<<15)
206
#define INFO_FLATSIZE (1LL<<16)
207
#define INFO_PKGSIZE (1LL<<17)
208
#define INFO_DESCR (1LL<<18)
209
#define INFO_PROVIDED (1LL<<19)
210
#define INFO_REQUIRED (1LL<<20)
211
212
/* Other fields not part of the Full output */
213
#define INFO_MESSAGE (1LL<<21)
214
#define INFO_DEPS (1LL<<22)
215
#define INFO_RDEPS (1LL<<23)
216
#define INFO_FILES (1LL<<24)
217
#define INFO_DIRS (1LL<<25)
218
#define INFO_USERS (1LL<<26)
219
#define INFO_GROUPS (1LL<<27)
220
#define INFO_REPOURL (1LL<<28)
221
#define INFO_LOCKED (1LL<<29)
222
#define INFO_OPTION_DEFAULTS (1LL<<30)
223
#define INFO_OPTION_DESCRIPTIONS (1LL<<31)
224
225
#define INFO_LASTFIELD INFO_LOCKED
226
#define INFO_ALL (((INFO_LASTFIELD) << 1) - 1)
227
228
/* Identifying tags */
229
#define INFO_TAG_NAME (1LL<<32)
230
#define INFO_TAG_ORIGIN (1LL<<33)
231
#define INFO_TAG_NAMEVER (1LL<<34)
232
233
/* Output YAML format */
234
#define INFO_RAW (1LL<<35)
235
#define INFO_RAW_YAML (1LL<<36)
236
#define INFO_RAW_JSON (1LL<<37)
237
#define INFO_RAW_JSON_COMPACT (1LL<<38)
238
#define INFO_RAW_UCL (1LL<<39)
239
240
/* Everything in the 'full' package output */
241
#define INFO_FULL (INFO_NAME|INFO_VERSION|INFO_INSTALLED|INFO_ORIGIN| \
242
INFO_ARCH|INFO_PREFIX|INFO_REPOSITORY| \
243
INFO_CATEGORIES|INFO_LICENSES|INFO_MAINTAINER| \
244
INFO_WWW|INFO_COMMENT|INFO_OPTIONS| \
245
INFO_SHLIBS_REQUIRED|INFO_SHLIBS_PROVIDED| \
246
INFO_ANNOTATIONS|INFO_FLATSIZE|INFO_PKGSIZE| \
247
INFO_DESCR|INFO_PROVIDED|INFO_REQUIRED)
248
249
/* Everything that can take more than one line to print */
250
#define INFO_MULTILINE (INFO_OPTIONS|INFO_SHLIBS_REQUIRED| \
251
INFO_SHLIBS_PROVIDED|INFO_ANNOTATIONS| \
252
INFO_DESCR|INFO_MESSAGE|INFO_DEPS|INFO_RDEPS| \
253
INFO_FILES|INFO_DIRS)
254
255
bool query_yesno(bool deft, const char *msg, ...);
256
int query_select(const char *msg, const char **opts, int ncnt, int deft);
257
bool query_tty_yesno(bool deft, const char *msg, ...);
258
int info_flags(uint64_t opt, bool remote);
259
void print_info(struct pkgdb *db, struct pkg * const pkg, uint64_t opt);
260
int print_jobs_summary(struct pkg_jobs *j, const char *msg, ...);
261
262
void job_status_begin(xstring *);
263
void job_status_end(xstring *);
264
265
int event_callback(void *data, struct pkg_event *ev);
266
int print_pkg(struct pkg *p, void *ctx);
267
void print_repository(struct pkg_repo *repo, bool pad);
268
void progressbar_start(const char *pmsg);
269
void progressbar_tick(int64_t current, int64_t total);
270
void progressbar_stop(void);
271
272
extern xstring *messages;
273
274
275
/* pkg-query / pkg-rquery */
276
struct query_flags {
277
const char flag;
278
const char *options;
279
const unsigned multiline;
280
const int dbflags;
281
};
282
283
void print_query(struct pkg *pkg, char *qstr, char multiline);
284
int format_sql_condition(const char *str, xstring *sqlcond,
285
bool for_remote);
286
int analyse_query_string(char *qstr, struct query_flags *q_flags,
287
const unsigned int q_flags_len, int *flags,
288
char *multiline);
289
int password_cb(char *buf, int size, int rwflag, void *key);
290
291
extern int default_yes;
292
extern int yes;
293
extern int dry_run;
294
extern bool auto_update;
295
extern int force;
296
extern bool quiet;
297
extern bool newpkgversion;
298
void set_globals(void);
299
300
#endif
301
302