update_man_pages.sh (2152B)
1 #!/bin/sh 2 3 usage_exit() { 4 echo "Usage: $(basename $0) (-d) (-g)" 5 exit 1 6 } 7 8 if [[ "$1" == "-h" ]]; then 9 usage_exit 10 fi 11 12 if [[ "$1" == "-?" ]]; then 13 usage_exit 14 fi 15 16 if [[ "$1" == "-d" ]]; then 17 date=true 18 shift 19 fi 20 21 if [[ "$1" == "-g" ]]; then 22 git=true 23 shift 24 fi 25 26 version=$(grep '^our $VERSION' SBO-Lib/lib/SBO/Lib.pm | grep -Eo '[0-9]+(\.[0-9RC@gita-f]+){0,1}') 27 28 if ! [[ -d "./man1" ]]; then 29 echo "you do not seem to be at the right place to run this." 30 echo "the man{1,5}/ directories should be under ." 31 exit 1 32 fi 33 34 old_version=$(head -1 man1/sbocheck.1 | rev | cut -d' ' -f2 | rev \ 35 | sed 's/"//g') 36 37 tmpfile=$(mktemp /tmp/XXXXXXXXX) 38 39 sed_file() { 40 if [[ "$1" == "" || "$2" == "" ]]; then 41 echo "sed_file(): two arguments required." 42 exit 1 43 fi 44 45 file="$1" 46 sed_cmd="$2" 47 48 cat $file | sed "$sed_cmd" > $tmpfile 49 if [[ "$?" == "0" ]]; then 50 mv $tmpfile $file 51 else 52 return 1 53 fi 54 55 return 0 56 } 57 58 for i in $(ls man1); do 59 sed_file man1/$i "s/$old_version/$version/g" 60 done 61 62 for i in $(ls man5); do 63 sed_file man5/$i "s/$old_version/$version/g" 64 done 65 66 if [[ "$?" == "0" ]]; then 67 echo "version updated." 68 fi 69 70 update_date() { 71 if ! which ddate >/dev/null 2>&1; then 72 echo "I can't find ddate." 73 return 1 74 fi 75 76 old_date=$(head -1 man1/sbocheck.1 | cut -d' ' -f4- | rev \ 77 | cut -d' ' -f4- | rev | sed 's/"//g') 78 79 new_date=$(ddate +"%{%A, %B %d%}, %Y YOLD%N - %H") 80 81 for i in man1/*; do 82 sed_file $i "s/$old_date/$new_date/g" 83 done 84 85 for i in man5/*; do 86 sed_file $i "s/$old_date/$new_date/g" 87 done 88 89 if [[ "$?" == "0" ]]; then 90 echo "date updated." 91 else 92 return 1 93 fi 94 95 return 0 96 } 97 98 update_git() { 99 if ! which git >/dev/null 2>&1; then 100 echo "I can't find git." 101 return 1 102 fi 103 104 if [[ "$date" == "true" ]]; then 105 extra=" and dates" 106 fi 107 108 git add man1/* man5/* 109 git commit -m "updated versions$extra for man pages" 110 git push 111 112 if [[ "$?" == "0" ]]; then 113 echo "git updated." 114 else 115 return 1 116 fi 117 118 return 0 119 } 120 121 date_return=0 122 if [[ "$date" == "true" ]]; then 123 update_date 124 date_return=$? 125 fi 126 127 git_return=0 128 if [[ "$git" == "true" ]]; then 129 update_git 130 git_return=$? 131 fi 132 133 if [[ "$date_return" != "0" || "$git_return" != "0" ]]; then 134 exit 1 135 fi 136 137 exit 0