sbotools2

Maintenance fork of the original sbotools version 2
git clone git://git.server.ky/slackcoder/sbotools2
Log | Files | Refs | README

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