Commit | Line | Data |
---|---|---|
d60d9f65 SS |
1 | #! /bin/bash - |
2 | # | |
3 | # mkdist - make a distribution directory from a master manifest file | |
4 | # | |
5 | # usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version | |
6 | # | |
7 | # SRCDIR defaults to src | |
8 | # MANIFEST defaults to $SRCDIR/MANIFEST | |
9 | # | |
10 | ||
11 | SRCDIR=src | |
12 | ROOTNAME=bash | |
13 | ||
14 | usage() | |
15 | { | |
16 | echo usage: mkdist [-m manifest] [-s srcdir] [-r rootname] [-v] version 1>&2 | |
17 | exit 2 | |
18 | } | |
19 | ||
20 | vmsg() | |
21 | { | |
22 | if [ -n "$verbose" ]; then | |
23 | echo mkdist: "$@" | |
24 | fi | |
25 | } | |
26 | ||
27 | while getopts m:s:r:v name | |
28 | do | |
29 | case $name in | |
30 | m) MANIFEST=$OPTARG ;; | |
31 | s) SRCDIR=$OPTARG ;; | |
32 | r) ROOTNAME=$OPTARG ;; | |
33 | v) verbose=yes ;; | |
34 | ?) usage ;; | |
35 | esac | |
36 | done | |
37 | ||
38 | : ${MANIFEST:=$SRCDIR/MANIFEST} | |
39 | ||
40 | vmsg using $MANIFEST | |
41 | ||
42 | shift $(( $OPTIND - 1 )) | |
43 | ||
44 | if [ $# -lt 1 ]; then | |
45 | usage | |
46 | fi | |
47 | ||
48 | version=$1 | |
49 | newdir=${ROOTNAME}-$version | |
50 | ||
c862e87b | 51 | vmsg creating distribution for $ROOTNAME version $version in $newdir |
d60d9f65 SS |
52 | |
53 | if [ ! -d $newdir ]; then | |
54 | mkdir $newdir || { echo $0: cannot make directory $newdir 1>&2 ; exit 1; } | |
55 | fi | |
56 | ||
57 | dirmode=755 | |
58 | filmode=644 | |
59 | ||
60 | while read fname type mode | |
61 | do | |
62 | [ -z "$fname" ] && continue | |
63 | ||
64 | case "$fname" in | |
65 | \#*) continue ;; | |
66 | esac | |
67 | ||
68 | case "$type" in | |
69 | d) mkdir $newdir/$fname ;; | |
70 | f) cp -p $SRCDIR/$fname $newdir/$fname ;; | |
71 | *) echo "unknown file type $type" 1>&2 ;; | |
72 | esac | |
73 | ||
74 | if [ -n "$mode" ]; then | |
75 | chmod $mode $newdir/$fname | |
76 | fi | |
77 | ||
78 | done < $MANIFEST | |
79 | ||
80 | # cut off the `-alpha' in something like `2.0-alpha', leaving just the | |
81 | # numeric version | |
82 | #version=${version%%-*} | |
83 | ||
84 | #case "$version" in | |
85 | #*.*.*) vers=${version%.*} ;; | |
86 | #*.*) vers=${version} ;; | |
87 | #esac | |
88 | ||
89 | #echo $vers > $newdir/.distribution | |
90 | ||
91 | #case "$version" in | |
92 | #*.*.*) plevel=${version##*.} ;; | |
93 | #*) plevel=0 ;; | |
94 | #esac | |
95 | #[ -z "$plevel" ] && plevel=0 | |
96 | #echo ${plevel} > $newdir/.patchlevel | |
97 | ||
98 | vmsg $newdir created | |
99 | ||
100 | exit 0 |