4 # translation_listを自動作成するスクリプト with (N)AWK and BASH
6 # original/ディレクトリ以下にファイルを揃えてから、
7 # translation_listがあるべきディレクトリで実行して下さい。
8 # オリジナルからのコピーにおいてファイル日付が保存されていることを
9 # 前提にしています。"cp -p" や "cp -a" を使ってください。
10 # パッケージ名はディレクトリから、バージョンはlsmファイルから
11 # 所得します。ただし、コマンドライン引数で指定されたものを優先します。
12 # 標準出力に結果を出力するので、適当にリダイレクトして下さい。
15 # ・シンボリックリンクには対応していません。
16 # ・manページの日付所得に失敗することが多々あります。
17 # ・マクロ ".so" によるリンクには対応していません。
18 # ・ls コマンドは coreutils にあるもの(version 5.x)を前提としています
24 echo "$0: [ -p package ] [ -v version ] [ -l G | B | M | N ]"
25 echo '-p | --package <package>'
26 echo ' set package name'
27 echo '-v | --version <version>'
28 echo ' set version of package'
29 echo '-l | --license <license type>'
30 echo ' set license type'
33 echo ' M: Miscellaneous'
34 echo ' N: Not for commercial'
45 # output: <file> <YYYY/MM/DD>
49 LANG=C /bin/ls -l --full-time | $NAWK '
52 getline; # skip first line
55 s=$6; gsub(/-/, "/", s); print $9, s;
61 # output: common date string(unkown format)
62 # output: or ".so <link>"
63 get_date_or_link_file () {
65 header=`grep -i '^\.TH' $1 2> /dev/null`
68 echo $header | POSIXLY_CORRECT=1 $NAWK '
70 if ($0 !~ /([^ ]+ +){3}/) {
74 sub(/([^ ]+[ ]+){3}/, "");
83 header=`grep -i '^\.Dd' $1 2> /dev/null`
86 echo $header | $NAWK '
95 header=`grep -i '^\.so' $1 2> /dev/null`
104 # $1: roff file to parse
105 # $2: default date (which is used if parsing is fault)
106 # output: date string or ".so link"
107 get_date_or_link () {
108 local date=`get_date_or_link_file $1`
109 if [ $? -ne 0 -o -z "$date" ]; then
121 echo $date | $NAWK '{sub(/,/,"",$2); print $3 "/" $1 "/" $2}'
125 echo $date | $NAWK '{print $3 "/" $2 "/" $1}'
131 # input: "YYYY/Month_name/DD..."
132 # output: "YYYY/MM/DD..."
138 month["Jan"] = "01"; month["Feb"] = "02"; month["Mar"] = "03";
139 month["Apr"] = "04"; month["May"] = "05"; month["Jun"] = "06";
140 month["Jul"] = "07"; month["Aug"] = "08"; month["Sep"] = "09";
141 month["Oct"] = "10"; month["Nov"] = "11"; month["Dec"] = "12";
144 $2 = month[substr($2,1,3)];
149 # obtain version information from LSM
151 # $2: default version (which is used if it fail to obtain version)
153 local ver_line=`grep -i "^Version:" $1 2> /dev/null`
154 if [ $? -ne 0 ]; then
158 echo $ver_line | $NAWK '{print $2}'
164 while [ $# -ge 1 ]; do
167 if [ $# -eq 1 ]; then
176 if [ $# -eq 1 ]; then
185 if [ $# -eq 1 ]; then
195 echo "Unkown License Type: $1" 1>&2
207 echo "Unkown option: $1" 1>&2
216 LSM=`echo original/*.lsm`
217 if [ -f "$LSM" ]; then
218 VERSION=`get_version $LSM $VERSION`
221 mandirs=`echo original/man[0-9]*`
224 stat_dir $d | while read file date
226 DATE=`get_date_or_link $d/$file $date`
232 DATE=`echo $DATE | month2name`
233 MAN=`echo $file | sed 's/\.\([^.]*\)/:\1/'`
234 echo "$STATUS:$PKG:$VERSION:$DATE:$MAN::$LICENSE:::"