mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-02 01:18:23 +03:00
bin/remote-summary: Add options to show metadata
This commit is contained in:
parent
b49f93aa95
commit
70ec92e1cd
@ -1345,11 +1345,13 @@ _ostree_remote_show_url() {
|
||||
_ostree_remote_summary() {
|
||||
local boolean_options="
|
||||
$main_boolean_options
|
||||
--list-metadata-keys
|
||||
--raw
|
||||
"
|
||||
|
||||
local options_with_args="
|
||||
--cache-dir
|
||||
--print-metadata-key
|
||||
--repo
|
||||
"
|
||||
|
||||
|
@ -25,8 +25,10 @@
|
||||
#include "ot-dump.h"
|
||||
#include "ot-remote-builtins.h"
|
||||
|
||||
static gboolean opt_list_metadata_keys;
|
||||
static gboolean opt_raw;
|
||||
|
||||
static char *opt_print_metadata_key;
|
||||
static char* opt_cache_dir;
|
||||
|
||||
/* ATTENTION:
|
||||
@ -35,6 +37,8 @@ static char* opt_cache_dir;
|
||||
*/
|
||||
|
||||
static GOptionEntry option_entries[] = {
|
||||
{ "list-metadata-keys", 0, 0, G_OPTION_ARG_NONE, &opt_list_metadata_keys, "List the available metadata keys", NULL },
|
||||
{ "print-metadata-key", 0, 0, G_OPTION_ARG_STRING, &opt_print_metadata_key, "Print string value of metadata key", "KEY" },
|
||||
{ "cache-dir", 0, 0, G_OPTION_ARG_FILENAME, &opt_cache_dir, "Use custom cache dir", NULL },
|
||||
{ "raw", 0, 0, G_OPTION_ARG_NONE, &opt_raw, "Show raw variant data", NULL },
|
||||
{ NULL }
|
||||
@ -90,42 +94,54 @@ ot_remote_builtin_summary (int argc, char **argv, OstreeCommandInvocation *invoc
|
||||
goto out;
|
||||
}
|
||||
|
||||
ot_dump_summary_bytes (summary_bytes, flags);
|
||||
if (opt_list_metadata_keys)
|
||||
{
|
||||
ot_dump_summary_metadata_keys (summary_bytes);
|
||||
}
|
||||
else if (opt_print_metadata_key)
|
||||
{
|
||||
if (!ot_dump_summary_metadata_key (summary_bytes, opt_print_metadata_key, error))
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
{
|
||||
ot_dump_summary_bytes (summary_bytes, flags);
|
||||
|
||||
#ifndef OSTREE_DISABLE_GPGME
|
||||
if (!ostree_repo_remote_get_gpg_verify_summary (repo, remote_name,
|
||||
&gpg_verify_summary,
|
||||
error))
|
||||
goto out;
|
||||
|
||||
if (!gpg_verify_summary)
|
||||
g_clear_pointer (&signature_bytes, g_bytes_unref);
|
||||
|
||||
/* XXX Note we don't show signatures for "--raw". My intuition is
|
||||
* if someone needs to see or parse raw summary data, including
|
||||
* signatures in the output would probably just interfere.
|
||||
* If there's demand for it I suppose we could introduce a new
|
||||
* option for raw signature data like "--raw-signatures". */
|
||||
if (signature_bytes != NULL && !opt_raw)
|
||||
{
|
||||
g_autoptr(OstreeGpgVerifyResult) result = NULL;
|
||||
|
||||
/* The actual signed summary verification happens above in
|
||||
* ostree_repo_remote_fetch_summary(). Here we just parse
|
||||
* the signatures again for the purpose of printing. */
|
||||
result = ostree_repo_verify_summary (repo,
|
||||
remote_name,
|
||||
summary_bytes,
|
||||
signature_bytes,
|
||||
cancellable,
|
||||
error);
|
||||
if (result == NULL)
|
||||
if (!ostree_repo_remote_get_gpg_verify_summary (repo, remote_name,
|
||||
&gpg_verify_summary,
|
||||
error))
|
||||
goto out;
|
||||
|
||||
g_print ("\n");
|
||||
ostree_print_gpg_verify_result (result);
|
||||
}
|
||||
if (!gpg_verify_summary)
|
||||
g_clear_pointer (&signature_bytes, g_bytes_unref);
|
||||
|
||||
/* XXX Note we don't show signatures for "--raw". My intuition is
|
||||
* if someone needs to see or parse raw summary data, including
|
||||
* signatures in the output would probably just interfere.
|
||||
* If there's demand for it I suppose we could introduce a new
|
||||
* option for raw signature data like "--raw-signatures". */
|
||||
if (signature_bytes != NULL && !opt_raw)
|
||||
{
|
||||
g_autoptr(OstreeGpgVerifyResult) result = NULL;
|
||||
|
||||
/* The actual signed summary verification happens above in
|
||||
* ostree_repo_remote_fetch_summary(). Here we just parse
|
||||
* the signatures again for the purpose of printing. */
|
||||
result = ostree_repo_verify_summary (repo,
|
||||
remote_name,
|
||||
summary_bytes,
|
||||
signature_bytes,
|
||||
cancellable,
|
||||
error);
|
||||
if (result == NULL)
|
||||
goto out;
|
||||
|
||||
g_print ("\n");
|
||||
ostree_print_gpg_verify_result (result);
|
||||
}
|
||||
#endif /* OSTREE_DISABLE_GPGME */
|
||||
}
|
||||
|
||||
ret = TRUE;
|
||||
out:
|
||||
|
@ -157,6 +157,16 @@ assert_file_has_content summary.txt "Good signature from \"Ostree Tester <test@t
|
||||
grep static-deltas summary.txt > static-deltas.txt
|
||||
assert_file_has_content static-deltas.txt \
|
||||
$(${OSTREE} --repo=repo rev-parse origin:main)
|
||||
${OSTREE} --repo=repo remote summary origin --list-metadata-keys > metadata
|
||||
assert_file_has_content metadata "^ostree.static-deltas$"
|
||||
assert_file_has_content metadata "^ostree.summary.indexed-deltas$"
|
||||
assert_file_has_content metadata "^ostree.summary.last-modified$"
|
||||
assert_file_has_content metadata "^ostree.summary.mode$"
|
||||
assert_file_has_content metadata "^ostree.summary.tombstone-commits$"
|
||||
${OSTREE} --repo=repo remote summary origin --print-metadata-key=ostree.summary.indexed-deltas > metadata
|
||||
assert_file_has_content metadata "^true$"
|
||||
${OSTREE} --repo=repo remote summary origin --print-metadata-key=ostree.summary.mode > metadata
|
||||
assert_file_has_content metadata "^'archive-z2'$"
|
||||
|
||||
## Tests for handling of cached summaries while racing with remote summary updates
|
||||
|
||||
|
@ -194,6 +194,16 @@ assert_file_has_content summary.txt "* yet-another"
|
||||
grep static-deltas summary.txt > static-deltas.txt
|
||||
assert_file_has_content static-deltas.txt \
|
||||
$(${OSTREE} --repo=repo rev-parse origin:main)
|
||||
${OSTREE} --repo=repo remote summary origin --list-metadata-keys > metadata
|
||||
assert_file_has_content metadata "^ostree.static-deltas$"
|
||||
assert_file_has_content metadata "^ostree.summary.indexed-deltas$"
|
||||
assert_file_has_content metadata "^ostree.summary.last-modified$"
|
||||
assert_file_has_content metadata "^ostree.summary.mode$"
|
||||
assert_file_has_content metadata "^ostree.summary.tombstone-commits$"
|
||||
${OSTREE} --repo=repo remote summary origin --print-metadata-key=ostree.summary.indexed-deltas > metadata
|
||||
assert_file_has_content metadata "^true$"
|
||||
${OSTREE} --repo=repo remote summary origin --print-metadata-key=ostree.summary.mode > metadata
|
||||
assert_file_has_content metadata "^'archive-z2'$"
|
||||
|
||||
## Tests for handling of cached summaries while racing with remote summary updates
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user