blob: d1324d086a24c0575e6beadaeef2ce1e8b6a80f0 [file] [log] [blame]
Nguyễn Thái Ngọc Duyaa218df2018-03-24 08:44:57 +01001#include "test-tool.h"
René Scharfe38d905b2014-10-01 17:00:33 +02002#include "cache.h"
Jeff Kingfe299ec2020-03-30 10:03:46 -04003#include "oid-array.h"
René Scharfe38d905b2014-10-01 17:00:33 +02004
brian m. carlson1b7ba792017-03-31 01:39:59 +00005static int print_oid(const struct object_id *oid, void *data)
René Scharfe38d905b2014-10-01 17:00:33 +02006{
brian m. carlson1b7ba792017-03-31 01:39:59 +00007 puts(oid_to_hex(oid));
Jeff King16ddcd42016-09-26 08:00:29 -04008 return 0;
René Scharfe38d905b2014-10-01 17:00:33 +02009}
10
Jeff Kinged4b8042020-03-30 10:04:03 -040011int cmd__oid_array(int argc, const char **argv)
René Scharfe38d905b2014-10-01 17:00:33 +020012{
brian m. carlson910650d2017-03-31 01:40:00 +000013 struct oid_array array = OID_ARRAY_INIT;
René Scharfe38d905b2014-10-01 17:00:33 +020014 struct strbuf line = STRBUF_INIT;
brian m. carlson54cbbe42020-06-19 17:55:55 +000015 int nongit_ok;
16
17 setup_git_directory_gently(&nongit_ok);
René Scharfe38d905b2014-10-01 17:00:33 +020018
Junio C Hamanof06068c2015-10-28 13:32:10 -070019 while (strbuf_getline(&line, stdin) != EOF) {
René Scharfe38d905b2014-10-01 17:00:33 +020020 const char *arg;
brian m. carlson57836f12017-03-26 16:01:32 +000021 struct object_id oid;
René Scharfe38d905b2014-10-01 17:00:33 +020022
23 if (skip_prefix(line.buf, "append ", &arg)) {
brian m. carlson57836f12017-03-26 16:01:32 +000024 if (get_oid_hex(arg, &oid))
Jeff Kinged4b8042020-03-30 10:04:03 -040025 die("not a hexadecimal oid: %s", arg);
brian m. carlson910650d2017-03-31 01:40:00 +000026 oid_array_append(&array, &oid);
René Scharfe38d905b2014-10-01 17:00:33 +020027 } else if (skip_prefix(line.buf, "lookup ", &arg)) {
brian m. carlson57836f12017-03-26 16:01:32 +000028 if (get_oid_hex(arg, &oid))
Jeff Kinged4b8042020-03-30 10:04:03 -040029 die("not a hexadecimal oid: %s", arg);
brian m. carlson910650d2017-03-31 01:40:00 +000030 printf("%d\n", oid_array_lookup(&array, &oid));
René Scharfe38d905b2014-10-01 17:00:33 +020031 } else if (!strcmp(line.buf, "clear"))
brian m. carlson910650d2017-03-31 01:40:00 +000032 oid_array_clear(&array);
René Scharfe38d905b2014-10-01 17:00:33 +020033 else if (!strcmp(line.buf, "for_each_unique"))
brian m. carlson910650d2017-03-31 01:40:00 +000034 oid_array_for_each_unique(&array, print_oid, NULL);
René Scharfe38d905b2014-10-01 17:00:33 +020035 else
36 die("unknown command: %s", line.buf);
37 }
Ævar Arnfjörð Bjarmason6ad66ab2021-10-07 12:01:34 +020038
39 strbuf_release(&line);
40 oid_array_clear(&array);
41
René Scharfe38d905b2014-10-01 17:00:33 +020042 return 0;
43}