File: change-header

package info (click to toggle)
coq 8.16.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 40,596 kB
  • sloc: ml: 219,376; sh: 3,545; python: 3,231; ansic: 2,529; makefile: 767; lisp: 279; javascript: 63; xml: 24; sed: 2
file content (53 lines) | stat: -rwxr-xr-x 1,323 bytes parent folder | download | duplicates (5)
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
#!/bin/sh

#This script changes the header of .ml* files

if [ ! $# = 2 ]; then
  echo Usage: change-header old-header-file new-header-file
  exit 1
fi

oldheader=$1
newheader=$2

if [ ! -f $oldheader ]; then echo Cannot read file $oldheader; exit 1; fi
if [ ! -f $newheader ]; then echo Cannot read file $newheader; exit 1; fi

n=$(wc -l $oldheader | sed -e "s/ *\([0-9]*\).*/\1/g")
nsucc=$(expr $n + 1)

modified=0
kept=0

for i in $(git grep --name-only --fixed-strings "$(head -1 $oldheader)"); do
  headline=$(head -n 1 $i)
  if $(echo $headline | grep "(\* -\*- .* \*)" > /dev/null) || $(echo $headline | grep "^#\!" > /dev/null); then
      # Has header
      head -n +$nsucc $i | tail -n $n > $i.head.tmp$$
      hasheadline=1
      nnext=$(expr $nsucc + 1)
  else
      head -n +$n $i > $i.head.tmp$$
      hasheadline=0
      nnext=$nsucc
  fi
  if diff -a -q $oldheader $i.head.tmp$$ > /dev/null; then
    echo "$i: header changed"
    if [ $hasheadline = 1 ]; then
        echo $headline > $i.tmp$$
    else
        touch $i.tmp$$
    fi
    cat $newheader >> $i.tmp$$
    tail -n +$nnext $i >> $i.tmp$$
    mv $i.tmp$$ $i
    modified=$(expr $modified + 1)
  else
    echo "$i: header unchanged"
    kept=$(expr $kept + 1)
  fi
  rm $i.head.tmp$$
done

echo $modified files updated 
echo $kept files unchanged