scripts/unify-sources.sh
changeset 293 47fbc814aa31
parent 38 a0cd9917c5a2
child 393 a76f55d7d397
equal deleted inserted replaced
0:4ea6e8a6b8a7 0:8425204d375c
     1 #!/bin/bash
     1 #!/bin/bash
     2 
     2 
     3 YEAR=`date +2003-%Y`
     3 YEAR=`date +2003-%Y`
     4 HGROOT=`hg root`
     4 HGROOT=`hg root`
     5 
     5 
     6 function update_file() {
     6 function update_header() {
     7     TMP_FILE=`mktemp`
     7     TMP_FILE=`mktemp`
     8     FILE_NAME=$1
     8     FILE_NAME=$1
     9 
     9 
    10     (echo "/* -*- C++ -*-
    10     (echo "/* -*- mode: C++; indent-tabs-mode: nil; -*-
    11  *
    11  *
    12  * This file is a part of LEMON, a generic C++ optimization library
    12  * This file is a part of LEMON, a generic C++ optimization library.
    13  *
    13  *
    14  * Copyright (C) "$YEAR"
    14  * Copyright (C) "$YEAR"
    15  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    15  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    16  * (Egervary Research Group on Combinatorial Optimization, EGRES).
    16  * (Egervary Research Group on Combinatorial Optimization, EGRES).
    17  *
    17  *
    30      /\/\* / && pm==0 { pm=1;}
    30      /\/\* / && pm==0 { pm=1;}
    31      /[^:blank:]/ && (pm==0 || pm==2) { pm=3; print;}
    31      /[^:blank:]/ && (pm==0 || pm==2) { pm=3; print;}
    32      /\*\// && pm==1 { pm=2;}
    32      /\*\// && pm==1 { pm=2;}
    33     ' $1
    33     ' $1
    34 	) >$TMP_FILE
    34 	) >$TMP_FILE
       
    35 
       
    36     HEADER_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES`
       
    37 
    35     rm $FILE_NAME
    38     rm $FILE_NAME
    36     mv $TMP_FILE $FILE_NAME
    39     mv $TMP_FILE $FILE_NAME
    37 }
    40 }
    38 
    41 
       
    42 function update_tabs() {
       
    43     TMP_FILE=`mktemp`
       
    44     FILE_NAME=$1
    39 
    45 
       
    46     cat $1 |
       
    47     sed -e 's/\t/        /g' >$TMP_FILE
       
    48 
       
    49     TABS_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES`
       
    50 
       
    51     rm $FILE_NAME
       
    52     mv $TMP_FILE $FILE_NAME
       
    53 }
       
    54 
       
    55 function remove_trailing_space() {
       
    56     TMP_FILE=`mktemp`
       
    57     FILE_NAME=$1
       
    58 
       
    59     cat $1 |
       
    60     sed -e 's/ \+$//g' >$TMP_FILE
       
    61 
       
    62     SPACES_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES`
       
    63 
       
    64     rm $FILE_NAME
       
    65     mv $TMP_FILE $FILE_NAME
       
    66 }
       
    67 
       
    68 function long_line_test() {
       
    69     cat $1 |grep -q -E '.{81,}'
       
    70 }
       
    71 
       
    72 function update_file() {
       
    73     echo -n '    update' $i ...
       
    74 
       
    75     update_header $1
       
    76     update_tabs $1
       
    77     remove_trailing_space $1
       
    78 
       
    79     CHANGED=NO;
       
    80     if [[ $HEADER_CH = YES ]];
       
    81     then
       
    82 	echo -n '  [header updated]'
       
    83 	CHANGED=YES;
       
    84     fi
       
    85     if [[ $TABS_CH = YES ]];
       
    86     then
       
    87 	echo -n ' [tabs removed]'
       
    88 	CHANGED=YES;
       
    89     fi
       
    90     if [[ $SPACES_CH = YES ]];
       
    91     then
       
    92 	echo -n ' [trailing spaces removed]'
       
    93 	CHANGED=YES;
       
    94     fi
       
    95     if long_line_test $1 ;
       
    96     then
       
    97 	echo -n ' [LONG LINES]'
       
    98 	((LONG_LINE_FILES++))
       
    99     fi
       
   100     echo
       
   101     if [[ $CHANGED = YES ]];
       
   102     then
       
   103 	((CHANGED_FILES++))
       
   104     fi
       
   105 }
       
   106 
       
   107 CHANGED_FILES=0
       
   108 TOTAL_FILES=0
       
   109 LONG_LINE_FILES=0
    40 if [ $# == 0 ]; then
   110 if [ $# == 0 ]; then
    41     echo -n Update all source files...
   111     echo Update all source files...
    42     for i in `hg manifest|grep -E  '\.(cc|h|dox)$'`
   112     for i in `hg manifest|grep -E  '\.(cc|h|dox)$'`
    43     do
   113     do
    44 	update_file $HGROOT/$i
   114 	update_file $HGROOT/$i
       
   115 	((TOTAL_FILES++))
    45     done
   116     done
    46     echo ' done.'
   117     echo '  done.'
    47 else
   118 else
    48     for i in $*
   119     for i in $*
    49     do
   120     do
    50 	update_file $i
   121 	update_file $i
       
   122 	((TOTAL_FILES++))
    51     done
   123     done
    52 fi
   124 fi
       
   125 echo $CHANGED_FILES out of $TOTAL_FILES files has been changed.
       
   126 if [[ $LONG_LINE_FILES -gt 1 ]]; then
       
   127     echo
       
   128     echo WARNING: $LONG_LINE_FILES files contains long lines!    
       
   129     echo
       
   130 elif [[ $LONG_LINE_FILES -gt 0 ]]; then
       
   131     echo
       
   132     echo WARNING: a file contains long lines!
       
   133     echo
       
   134 fi