Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Implement pkg info --raw-format ucl
Baptiste Daroussin committed 11 years ago
commit 3f144734fe0d20daf69579a607833deb9205e0c0
parent c2196d4
6 files changed +16 -4
modified libpkg/pkg.h.in
@@ -719,6 +719,7 @@ void pkg_manifest_parser_free(struct pkg_manifest_parser *p);
#define PKG_MANIFEST_EMIT_NOFILES (0x1 << 1)
#define PKG_MANIFEST_EMIT_PRETTY (0x1 << 2)
#define PKG_MANIFEST_EMIT_JSON (0x1 << 3)
+
#define PKG_MANIFEST_EMIT_UCL (0x1 << 4)

/**
 * Emit a manifest according to the attributes of pkg.
modified libpkg/pkg_manifest.c
@@ -1168,6 +1168,8 @@ emit_manifest(struct pkg *pkg, struct sbuf **out, short flags)

	if ((flags & PKG_MANIFEST_EMIT_PRETTY) == PKG_MANIFEST_EMIT_PRETTY)
		ucl_object_emit_sbuf(top, UCL_EMIT_YAML, out);
+
	else if ((flags & PKG_MANIFEST_EMIT_UCL) == PKG_MANIFEST_EMIT_UCL)
+
		ucl_object_emit_sbuf(top, UCL_EMIT_CONFIG, out);
	else if ((flags & PKG_MANIFEST_EMIT_JSON) == PKG_MANIFEST_EMIT_JSON)
		ucl_object_emit_sbuf(top, UCL_EMIT_JSON, out);
	else
modified src/info.c
@@ -207,14 +207,16 @@ exec_info(int argc, char **argv)
			break;
		case 1:
			if (strcasecmp(optarg, "json") == 0)
-
			       opt |= INFO_RAW_JSON;
+
				opt |= INFO_RAW_JSON;
			else if (strcasecmp(optarg, "json-compact") == 0)
				opt |= INFO_RAW_JSON_COMPACT;
			else if (strcasecmp(optarg, "yaml") == 0)
				opt |= INFO_RAW_YAML;
+
			else if (strcasecmp(optarg, "ucl") == 0)
+
				opt |= INFO_RAW_UCL;
			else
				errx(EX_USAGE, "Invalid format '%s' for the "
-
				    "raw output, expecting json, json-compat "
+
				    "raw output, expecting json, json-compact "
				    "or yaml", optarg);
			break;
		default:
modified src/pkgcli.h
@@ -232,6 +232,7 @@ void usage_config(void);
#define INFO_RAW_YAML		(-1LL<<62)
#define INFO_RAW_JSON		(-1LL<<61)
#define INFO_RAW_JSON_COMPACT	(-1LL<<60)
+
#define INFO_RAW_UCL		(-1LL<<59)

/* Everything in the 'full' package output */
#define INFO_FULL	(INFO_NAME|INFO_VERSION|INFO_INSTALLED|INFO_ORIGIN| \
modified src/search.c
@@ -347,9 +347,11 @@ exec_search(int argc, char **argv)
				opt |= INFO_RAW_JSON_COMPACT;
			else if (strcasecmp(optarg, "yaml") == 0)
				opt |= INFO_RAW_YAML;
+
			else if (strcasecmp(optarg, "ucl") == 0)
+
				opt |= INFO_RAW_UCL;
			else
				errx(EX_USAGE, "Invalid format '%s' for the "
-
				    "raw output, expecting json, json-compat "
+
				    "raw output, expecting json, json-compact "
				    "or yaml", optarg);
			break;
		default:
modified src/utils.c
@@ -279,10 +279,14 @@ print_info(struct pkg * const pkg, uint64_t options)
		PKG_PKGSIZE,       &pkgsize);

	if (options & INFO_RAW) {
-
		switch (options & (INFO_RAW_YAML|INFO_RAW_JSON|INFO_RAW_JSON_COMPACT)) {
+
		switch (options & (INFO_RAW_YAML|INFO_RAW_JSON|INFO_RAW_JSON_COMPACT|INFO_RAW_UCL)) {
		case INFO_RAW_YAML:
			outflags |= PKG_MANIFEST_EMIT_PRETTY;
			break;
+
		case INFO_RAW_UCL:
+
			printf("ici\n");
+
			outflags |= PKG_MANIFEST_EMIT_UCL;
+
			break;
		case INFO_RAW_JSON:
			outflags |= PKG_MANIFEST_EMIT_JSON;
		case INFO_RAW_JSON_COMPACT: