Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 1 | /* |
| 2 | * GIT - The information manager from hell |
| 3 | * |
| 4 | * Copyright (C) Eric Biederman, 2005 |
| 5 | */ |
| 6 | #include "cache.h" |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 7 | |
Petr Baudis | 4d1f119 | 2005-07-29 11:01:26 +0200 | [diff] [blame] | 8 | static const char var_usage[] = "git-var [-l | <variable>]"; |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 9 | |
| 10 | struct git_var { |
| 11 | const char *name; |
Junio C Hamano | 749be72 | 2006-02-18 20:31:05 -0800 | [diff] [blame] | 12 | const char *(*read)(int); |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 13 | }; |
| 14 | static struct git_var git_vars[] = { |
| 15 | { "GIT_COMMITTER_IDENT", git_committer_info }, |
| 16 | { "GIT_AUTHOR_IDENT", git_author_info }, |
| 17 | { "", NULL }, |
| 18 | }; |
| 19 | |
| 20 | static void list_vars(void) |
| 21 | { |
| 22 | struct git_var *ptr; |
| 23 | for(ptr = git_vars; ptr->read; ptr++) { |
Junio C Hamano | 774751a | 2007-12-08 17:32:08 -0800 | [diff] [blame] | 24 | printf("%s=%s\n", ptr->name, ptr->read(IDENT_WARN_ON_NO_NAME)); |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 25 | } |
| 26 | } |
| 27 | |
| 28 | static const char *read_var(const char *var) |
| 29 | { |
| 30 | struct git_var *ptr; |
| 31 | const char *val; |
| 32 | val = NULL; |
| 33 | for(ptr = git_vars; ptr->read; ptr++) { |
| 34 | if (strcmp(var, ptr->name) == 0) { |
Junio C Hamano | 774751a | 2007-12-08 17:32:08 -0800 | [diff] [blame] | 35 | val = ptr->read(IDENT_ERROR_ON_NO_NAME); |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 36 | break; |
| 37 | } |
| 38 | } |
| 39 | return val; |
| 40 | } |
| 41 | |
Linus Torvalds | e1b1039 | 2005-10-11 18:47:34 -0700 | [diff] [blame] | 42 | static int show_config(const char *var, const char *value) |
| 43 | { |
| 44 | if (value) |
| 45 | printf("%s=%s\n", var, value); |
| 46 | else |
| 47 | printf("%s\n", var); |
| 48 | return git_default_config(var, value); |
| 49 | } |
| 50 | |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 51 | int main(int argc, char **argv) |
| 52 | { |
| 53 | const char *val; |
Frank Lichtenheld | 2fba836 | 2008-03-14 18:29:27 +0100 | [diff] [blame] | 54 | int nongit; |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 55 | if (argc != 2) { |
| 56 | usage(var_usage); |
| 57 | } |
Junio C Hamano | 5d318ce | 2005-11-24 01:31:01 -0800 | [diff] [blame] | 58 | |
Frank Lichtenheld | 2fba836 | 2008-03-14 18:29:27 +0100 | [diff] [blame] | 59 | setup_git_directory_gently(&nongit); |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 60 | val = NULL; |
| 61 | |
| 62 | if (strcmp(argv[1], "-l") == 0) { |
Linus Torvalds | e1b1039 | 2005-10-11 18:47:34 -0700 | [diff] [blame] | 63 | git_config(show_config); |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 64 | list_vars(); |
| 65 | return 0; |
| 66 | } |
Linus Torvalds | e1b1039 | 2005-10-11 18:47:34 -0700 | [diff] [blame] | 67 | git_config(git_default_config); |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 68 | val = read_var(argv[1]); |
| 69 | if (!val) |
| 70 | usage(var_usage); |
Junio C Hamano | a6080a0 | 2007-06-07 00:04:01 -0700 | [diff] [blame] | 71 | |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 72 | printf("%s\n", val); |
Junio C Hamano | a6080a0 | 2007-06-07 00:04:01 -0700 | [diff] [blame] | 73 | |
Eric W. Biederman | aed022a | 2005-07-14 18:55:09 -0600 | [diff] [blame] | 74 | return 0; |
| 75 | } |