Skip to content

Commit fa17527

Browse files
jltoblergitster
authored andcommitted
builtin/repo: add helper for printing keyvalue output
The machine-parsable formats for the git-repo(1) "structure" subcommand print output in keyvalue pairs. Introduce the helper function `print_keyvalue()` to remove some code duplication and improve readability. Signed-off-by: Justin Tobler <jltobler@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 31c771a commit fa17527

1 file changed

Lines changed: 42 additions & 35 deletions

File tree

builtin/repo.c

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -446,44 +446,51 @@ static void stats_table_clear(struct stats_table *table)
446446
string_list_clear(&table->rows, 1);
447447
}
448448

449+
static inline void print_keyvalue(const char *key, char key_delim, size_t value,
450+
char value_delim)
451+
{
452+
printf("%s%c%" PRIuMAX "%c", key, key_delim, (uintmax_t)value,
453+
value_delim);
454+
}
455+
449456
static void structure_keyvalue_print(struct repo_structure *stats,
450457
char key_delim, char value_delim)
451458
{
452-
printf("references.branches.count%c%" PRIuMAX "%c", key_delim,
453-
(uintmax_t)stats->refs.branches, value_delim);
454-
printf("references.tags.count%c%" PRIuMAX "%c", key_delim,
455-
(uintmax_t)stats->refs.tags, value_delim);
456-
printf("references.remotes.count%c%" PRIuMAX "%c", key_delim,
457-
(uintmax_t)stats->refs.remotes, value_delim);
458-
printf("references.others.count%c%" PRIuMAX "%c", key_delim,
459-
(uintmax_t)stats->refs.others, value_delim);
460-
461-
printf("objects.commits.count%c%" PRIuMAX "%c", key_delim,
462-
(uintmax_t)stats->objects.type_counts.commits, value_delim);
463-
printf("objects.trees.count%c%" PRIuMAX "%c", key_delim,
464-
(uintmax_t)stats->objects.type_counts.trees, value_delim);
465-
printf("objects.blobs.count%c%" PRIuMAX "%c", key_delim,
466-
(uintmax_t)stats->objects.type_counts.blobs, value_delim);
467-
printf("objects.tags.count%c%" PRIuMAX "%c", key_delim,
468-
(uintmax_t)stats->objects.type_counts.tags, value_delim);
469-
470-
printf("objects.commits.inflated_size%c%" PRIuMAX "%c", key_delim,
471-
(uintmax_t)stats->objects.inflated_sizes.commits, value_delim);
472-
printf("objects.trees.inflated_size%c%" PRIuMAX "%c", key_delim,
473-
(uintmax_t)stats->objects.inflated_sizes.trees, value_delim);
474-
printf("objects.blobs.inflated_size%c%" PRIuMAX "%c", key_delim,
475-
(uintmax_t)stats->objects.inflated_sizes.blobs, value_delim);
476-
printf("objects.tags.inflated_size%c%" PRIuMAX "%c", key_delim,
477-
(uintmax_t)stats->objects.inflated_sizes.tags, value_delim);
478-
479-
printf("objects.commits.disk_size%c%" PRIuMAX "%c", key_delim,
480-
(uintmax_t)stats->objects.disk_sizes.commits, value_delim);
481-
printf("objects.trees.disk_size%c%" PRIuMAX "%c", key_delim,
482-
(uintmax_t)stats->objects.disk_sizes.trees, value_delim);
483-
printf("objects.blobs.disk_size%c%" PRIuMAX "%c", key_delim,
484-
(uintmax_t)stats->objects.disk_sizes.blobs, value_delim);
485-
printf("objects.tags.disk_size%c%" PRIuMAX "%c", key_delim,
486-
(uintmax_t)stats->objects.disk_sizes.tags, value_delim);
459+
print_keyvalue("references.branches.count", key_delim,
460+
stats->refs.branches, value_delim);
461+
print_keyvalue("references.tags.count", key_delim,
462+
stats->refs.tags, value_delim);
463+
print_keyvalue("references.remotes.count", key_delim,
464+
stats->refs.remotes, value_delim);
465+
print_keyvalue("references.others.count", key_delim,
466+
stats->refs.others, value_delim);
467+
468+
print_keyvalue("objects.commits.count", key_delim,
469+
stats->objects.type_counts.commits, value_delim);
470+
print_keyvalue("objects.trees.count", key_delim,
471+
stats->objects.type_counts.trees, value_delim);
472+
print_keyvalue("objects.blobs.count", key_delim,
473+
stats->objects.type_counts.blobs, value_delim);
474+
print_keyvalue("objects.tags.count", key_delim,
475+
stats->objects.type_counts.tags, value_delim);
476+
477+
print_keyvalue("objects.commits.inflated_size", key_delim,
478+
stats->objects.inflated_sizes.commits, value_delim);
479+
print_keyvalue("objects.trees.inflated_size", key_delim,
480+
stats->objects.inflated_sizes.trees, value_delim);
481+
print_keyvalue("objects.blobs.inflated_size", key_delim,
482+
stats->objects.inflated_sizes.blobs, value_delim);
483+
print_keyvalue("objects.tags.inflated_size", key_delim,
484+
stats->objects.inflated_sizes.tags, value_delim);
485+
486+
print_keyvalue("objects.commits.disk_size", key_delim,
487+
stats->objects.disk_sizes.commits, value_delim);
488+
print_keyvalue("objects.trees.disk_size", key_delim,
489+
stats->objects.disk_sizes.trees, value_delim);
490+
print_keyvalue("objects.blobs.disk_size", key_delim,
491+
stats->objects.disk_sizes.blobs, value_delim);
492+
print_keyvalue("objects.tags.disk_size", key_delim,
493+
stats->objects.disk_sizes.tags, value_delim);
487494

488495
fflush(stdout);
489496
}

0 commit comments

Comments
 (0)