Blame view

scripts/get_maintainer_nxp.sh 3.74 KB
af25b1e0f   Dong Aisheng   LF-2358-1 script:...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  #!/bin/bash
  
  V=${V:=false}
  scriptName=${0##*/}
  scriptDir="$(dirname $(readlink -f $0))"
  mfile=$scriptDir/../MAINTAINERS.NXP
  pl_script="./scripts/get_maintainer.pl"
  maillist="\
  linux-devel@linux.nxdi.nxp.com (Linux Factory Review List)
  lnxrevli@nxp.com (i.MX Review List)"
  
  usage() {
  cat <<EOF
  Wrapper script for kernel get_maintainer.pl
  
  Usage: $0 [options] patchfile
         $0 [options] -f file|directory
  
  Options:
    -s,--sendemail => send patch to maintainers for review
      --from=<address> => email sender
      --to=<address>,... => primary email recipient
      --cc=<address>,... => additional email recipient
      --confirm=<mode> => confirm just before sending (default: always)
    --help => show this help information
  
    Run "$pl_script -h" to get all other supported options.
  
  EOF
  }
  
  args="$@"
  # check -h and --help options
  if [ -n "`echo $args |awk '/(^| )(-h|--help)( |$)/'`" ];then
      usage
      exit
  fi
  
  # filter out --sendemail arguments
  sendemail=false
  if echo $args |grep -Eq '(^| )(\-s|\-\-sendemail)( |$)';then
      sendemail=true
      $V && echo "Sendemail: $sendemail"
      args="`echo $args |sed -r 's,(^| )(-s|--sendemail)( |$), ,g'`"
  fi
  
  # filter out --from arguments
  email_from=""
  if echo $args |grep -Eq '\-\-from[ =]*[^ ]+';then
      email_from="`echo $args |sed 's,--from[ =]*[^ ]*,
  &,g;s,[^
  ]*
  \(--from[ =]*[^ ]*\)[^
  ]*,\1 ,g;s/.$//'`"
      $V && echo "From: `echo $email_from |sed 's,--from[ =]*,,g'`"
      args="`echo $args |sed -e 's,--from[ =]*[^ ]*,,g'`"
  fi
  
  # filter out --to arguments
  email_to=""
  if echo $args |grep -Eq '\-\-to[ =]*[^ ]+';then
      email_to="`echo $args |sed 's,--to[ =]*[^ ]*,
  &,g;s,[^
  ]*
  \(--to[ =]*[^ ]*\)[^
  ]*,\1 ,g;s/.$//'`"
      $V && echo "To: `echo $email_to |sed 's,--to[ =]*,,g'`"
      args="`echo $args |sed -e 's,--to[ =]*[^ ]*,,g'`"
  fi
  
  # filter out --cc arguments
  email_cc=""
  if echo $args |grep -Eq '\-\-cc[ =]*[^ ]+';then
      email_cc="`echo $args |sed 's,--cc[ =]*[^ ]*,
  &,g;s,[^
  ]*
  \(--cc[ =]*[^ ]*\)[^
  ]*,\1 ,g;s/.$//'`"
      $V && echo "Cc: `echo $email_cc |sed 's,--cc[ =]*,,g'`"
      args="`echo $args |sed -e 's,--cc[ =]*[^ ]*,,g'`"
  fi
  
  # filter out --confirm arguments
  email_confirm="--confirm=always"
  if echo $args |grep -Eq '\-\-confirm[ =]*[^ ]+';then
      email_confirm="`echo $args |sed 's,--confirm[ =]*[^ ]*,
  &,g;s,[^
  ]*
  \(--confirm[ =]*[^ ]*\)[^
  ]*,\1 ,g;s/.$//'`"
      $V && echo "Confirm: `echo $email_confirm |sed 's,--confirm[ =]*,,g'`"
      args="`echo $args |sed -e 's,--confirm[ =]*[^ ]*,,g'`"
  fi
  
  # remaining arguments to get_maintainer.pl
  $V && echo "Arguments: $args"
  
  # customized options to get_maintainer.pl
  opts="--n --rolestats"
  
  # filters for emails
  filter="/@/{/@[^@]*(nxp.com|nxp1.onmicrosoft.com)/I!d;}"
  
  perl $pl_script $opts --mpath $mfile $args |sed -r "$filter"
  echo "$maillist"
  echo
  
  if $sendemail;then
     opts="--no-n --no-rolestats"
     emails="`perl $pl_script $opts --mpath $mfile $args |sed -r "$filter"`"
     emails="`echo $emails |sed -r 's,^[ \t]*,,;s,[ \t]*$,,;s/[ \t]+/,/g'`"
     $V && echo "Maintainers: $emails"
     # get patch files
     for arg in $args;do
         $V && echo $arg
         if [ -e "$arg" ] && [ -z "`git ls-files $arg`" ];then
             patches="$patches $arg"
         fi
     done
     $V && echo "Patches: $patches"
     if [ -z "$patches" ];then
         echo "Error: no patch file found."
         exit
     fi
     # display email sending command first in case users want to modify
     echo git send-email --no-chain-reply-to --no-signed-off-by-cc --quiet --suppress-cc=all $email_confirm $email_from --to=$emails $email_to $email_cc --cc=linux-devel@linux.nxdi.nxp.com,lnxrevli@nxp.com $patches
     git send-email --no-chain-reply-to --no-signed-off-by-cc --quiet --suppress-cc=all $email_confirm $email_from --to=$emails $email_to $email_cc --cc=linux-devel@linux.nxdi.nxp.com,lnxrevli@nxp.com $patches
  fi