Nguyễn Thái Ngọc Duy | aa218df | 2018-03-24 08:44:57 +0100 | [diff] [blame] | 1 | #include "test-tool.h" |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 2 | #include "cache.h" |
Jeff King | fe299ec | 2020-03-30 10:03:46 -0400 | [diff] [blame] | 3 | #include "oid-array.h" |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 4 | |
brian m. carlson | 1b7ba79 | 2017-03-31 01:39:59 +0000 | [diff] [blame] | 5 | static int print_oid(const struct object_id *oid, void *data) |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 6 | { |
brian m. carlson | 1b7ba79 | 2017-03-31 01:39:59 +0000 | [diff] [blame] | 7 | puts(oid_to_hex(oid)); |
Jeff King | 16ddcd4 | 2016-09-26 08:00:29 -0400 | [diff] [blame] | 8 | return 0; |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 9 | } |
| 10 | |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 11 | int cmd__oid_array(int argc, const char **argv) |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 12 | { |
brian m. carlson | 910650d | 2017-03-31 01:40:00 +0000 | [diff] [blame] | 13 | struct oid_array array = OID_ARRAY_INIT; |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 14 | struct strbuf line = STRBUF_INIT; |
brian m. carlson | 54cbbe4 | 2020-06-19 17:55:55 +0000 | [diff] [blame] | 15 | int nongit_ok; |
| 16 | |
| 17 | setup_git_directory_gently(&nongit_ok); |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 18 | |
Junio C Hamano | f06068c | 2015-10-28 13:32:10 -0700 | [diff] [blame] | 19 | while (strbuf_getline(&line, stdin) != EOF) { |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 20 | const char *arg; |
brian m. carlson | 57836f1 | 2017-03-26 16:01:32 +0000 | [diff] [blame] | 21 | struct object_id oid; |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 22 | |
| 23 | if (skip_prefix(line.buf, "append ", &arg)) { |
brian m. carlson | 57836f1 | 2017-03-26 16:01:32 +0000 | [diff] [blame] | 24 | if (get_oid_hex(arg, &oid)) |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 25 | die("not a hexadecimal oid: %s", arg); |
brian m. carlson | 910650d | 2017-03-31 01:40:00 +0000 | [diff] [blame] | 26 | oid_array_append(&array, &oid); |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 27 | } else if (skip_prefix(line.buf, "lookup ", &arg)) { |
brian m. carlson | 57836f1 | 2017-03-26 16:01:32 +0000 | [diff] [blame] | 28 | if (get_oid_hex(arg, &oid)) |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 29 | die("not a hexadecimal oid: %s", arg); |
brian m. carlson | 910650d | 2017-03-31 01:40:00 +0000 | [diff] [blame] | 30 | printf("%d\n", oid_array_lookup(&array, &oid)); |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 31 | } else if (!strcmp(line.buf, "clear")) |
brian m. carlson | 910650d | 2017-03-31 01:40:00 +0000 | [diff] [blame] | 32 | oid_array_clear(&array); |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 33 | else if (!strcmp(line.buf, "for_each_unique")) |
brian m. carlson | 910650d | 2017-03-31 01:40:00 +0000 | [diff] [blame] | 34 | oid_array_for_each_unique(&array, print_oid, NULL); |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 35 | else |
| 36 | die("unknown command: %s", line.buf); |
| 37 | } |
Ævar Arnfjörð Bjarmason | 6ad66ab | 2021-10-07 12:01:34 +0200 | [diff] [blame] | 38 | |
| 39 | strbuf_release(&line); |
| 40 | oid_array_clear(&array); |
| 41 | |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 42 | return 0; |
| 43 | } |