|
2 | 2 |
|
3 | 3 | export GIT_DIR=$(git rev-parse --git-dir) |
4 | 4 |
|
| 5 | +USE_COLOR=0 |
| 6 | +if [ -t 1 ]; then |
| 7 | + USE_COLOR=1 |
| 8 | +fi |
| 9 | + |
| 10 | +usage() |
| 11 | +{ |
| 12 | + local errCode=$1 |
| 13 | + echo -e "Usage: $(basename $0) [OPTS]" |
| 14 | + echo -e "\t--[no-]color Force color to be enabled/disabled" |
| 15 | + echo -e "\t-h,--help Diplay usage" |
| 16 | + exit $errCode |
| 17 | +} |
| 18 | + |
| 19 | + |
| 20 | +while [ $# -gt 0 ]; do |
| 21 | + ARG=$1 |
| 22 | + shift |
| 23 | + case "$ARG" in |
| 24 | + --color) |
| 25 | + USE_COLOR=1 |
| 26 | + ;; |
| 27 | + --no-color) |
| 28 | + USE_COLOR=0 |
| 29 | + ;; |
| 30 | + -h|--help) |
| 31 | + usage 0 |
| 32 | + ;; |
| 33 | + *) |
| 34 | + echo "ERROR: Invalid option $ARG" >&2 |
| 35 | + usage 1 |
| 36 | + ;; |
| 37 | + esac |
| 38 | +done |
| 39 | + |
| 40 | +if [ $USE_COLOR -eq 1 ]; then |
| 41 | + export YELLOW_NODIM='\033[00;33m' |
| 42 | + export RED_NODIM='\033[00;31m' |
| 43 | + export RED_DIM='\033[02;31m' |
| 44 | + export CYAN_BOLD='\033[01;36m' |
| 45 | + export WHITE='\033[00m' |
| 46 | + export COLOR_OPT="--color" |
| 47 | +else |
| 48 | + export COLOR_OPT="--no-color" |
| 49 | +fi |
| 50 | + |
| 51 | +__git_log() |
| 52 | +{ |
| 53 | + git --no-pager log $COLOR_OPT "$@" |
| 54 | +} |
5 | 55 | __colorize_todo() |
6 | 56 | { |
7 | | - awk -vC0='\033[00;33m' -vC1='\033[00;31m' -vC2='\033[00m' '{printf( C0 "%-7s " C1 $2 " " C2, $1); for (i = 3; i <= NF; i++) { printf("%s ", $i);}; printf("\n");}' |
| 57 | + awk -vC0=$YELLOW_NODIM -vC1=$RED_NODIM -vC2=$WHITE \ |
| 58 | + '{printf( C0 "%-7s " C1 $2 " " C2, $1); for (i = 3; i <= NF; i++) { printf("%s ", $i);}; printf("\n");}' |
8 | 59 | } |
9 | 60 |
|
10 | 61 | __git_log_todo() |
11 | 62 | { |
12 | | - git --no-pager log --format='%C(yellow nodim)pick %C(red nodim)%h %C(white)%s' $* |
| 63 | + __git_log --format='%C(auto,yellow nodim)pick %C(auto,red nodim)%h %C(auto,white)%s' $* |
13 | 64 | } |
14 | 65 | __colorize_current() |
15 | 66 | { |
16 | | - awk -vC0='\033[01;36m' -vC1='\033[00;31m' -vC2='\033[00m' '{printf( C0 "%-7s " C1 $2 " " C2, $1); for (i = 3; i <= NF; i++) { printf("%s ", $i);}; printf("\n");}' |
| 67 | + awk -vC0=$CYAN_BOLD -vC1=$RED_NODIM -vC2=$WHITE \ |
| 68 | + '{printf( C0 "%-7s " C1 $2 " " C2, $1); for (i = 3; i <= NF; i++) { printf("%s ", $i);}; printf("\n");}' |
17 | 69 | } |
18 | 70 | __git_log_current_unmerged() |
19 | 71 | { |
20 | | - git --no-pager log --format='%C(cyan bold)*pick %C(red nodim)%h %C(white)%s' $* |
| 72 | + __git_log --format='%C(auto,cyan bold)*pick %C(auto,red nodim)%h %C(auto,white)%s' $* |
21 | 73 | } |
22 | 74 | __git_log_current() |
23 | 75 | { |
24 | | - git --no-pager log --format='%C(cyan bold)pick %C(red nodim)%h %C(white)%s' $* |
| 76 | + __git_log --format='%C(auto,cyan bold)pick %C(auto,red nodim)%h %C(auto,white)%s' $* |
25 | 77 | } |
26 | 78 |
|
27 | 79 | __colorize_done() |
28 | 80 | { |
29 | | - awk -vC0='\033[02;31m' -vC1='\033[00;31m' -vC2='\033[00m' '{printf( C0 "%-7s " C1 $2 " " C2, $1); for (i = 3; i <= NF; i++) { printf("%s ", $i);}; printf("\n");}' |
| 81 | + awk -vC0=$RED_DIM -vC1=$RED_NODIM -vC2=$WHITE '{printf( C0 "%-7s " C1 $2 " " C2, $1); for (i = 3; i <= NF; i++) { printf("%s ", $i);}; printf("\n");}' |
30 | 82 | } |
31 | 83 | __git_log_done() |
32 | 84 | { |
33 | | - git --no-pager log --format='%C(red dim)done %C(red nodim)%h %C(white)%s' $* |
| 85 | + __git_log --format='%C(auto,red dim)done %C(auto,red nodim)%h %C(auto,white)%s' $* |
34 | 86 | } |
35 | 87 |
|
36 | 88 | __git_log_onto() |
37 | 89 | { |
38 | | - git --no-pager log -n 1 --format='%C(red dim)onto %C(red nodim)%h %C(white)%s' $* |
| 90 | + __git_log -n 1 --format='%C(auto,red dim)onto %C(auto,red nodim)%h %C(auto,white)%s' $* |
39 | 91 |
|
40 | 92 | } |
41 | 93 | __has_unmerged() |
@@ -101,7 +153,7 @@ __simple_action() |
101 | 153 | local COMMIT=$(cat ${GIT_DIR}/$HEADFILE) |
102 | 154 | shift 2 |
103 | 155 | echo "# " $* " a single commit" |
104 | | - echo "*$ACTION $(git --no-pager log --format='%h %s' -n 1 $COMMIT)" | __colorize_current |
| 156 | + echo "*$ACTION $(__git_log --format='%h %s' -n 1 $COMMIT)" | __colorize_current |
105 | 157 | __git_log_onto ${BASE} |
106 | 158 | } |
107 | 159 |
|
|
0 commit comments