1#!/bin/sh
2
3#
4# Installation script
5#
6# This script ressembles the BSD "install" program, but it
7# also substitutes some patterns (TCLSH, LIBNETMAGIS, CONFFILE
8# and CONFPROG) while installing the files.
9#
10# Usage:
11#   ninstall opt tclsh libnetmagis conffile confprog file ... file dir
12#	with opt: [-m mode][-o owner][-g group][-d][-e sed-pattern]
13#
14
15mode=0755
16owner=
17group=
18createdir=false
19subst=
20
21usage ()
22{
23    (
24	echo "usage: `basename $0` opt tclsh libnetmagis conffile confprog file ... file dir"
25	echo "	opt: [-m mode][-o owner][-g group][-d][-e sed-pattern]"
26	echo "	Warning: no shell special characters in sed-pattern (including space)"
27    )
28}
29
30args=`getopt "dm:o:g:e:" $*`
31if [ $? != 0 ]
32then
33    usage
34    exit 1
35fi
36
37set -- $args
38
39while :
40do
41    case "$1" in
42	-d)	createdir=true ; shift ;;
43	-e)	subst="$subst -e $2" ; shift 2 ;;
44	-o)	owner=$2 ; shift 2 ;;
45	-g)	group=$2 ; shift 2 ;;
46	-m)	mode=$2 ; shift 2 ;;
47	--)	shift ; break ;;
48    esac
49done
50
51if [ $# -lt 6 ]
52then
53    usage
54    exit 1
55fi
56
57tclsh=$1
58libnetmagis=$2
59conffile=$3
60confprog=$4
61
62shift 4
63
64#
65# Search for dest directory (last argument) and create it if needed
66#
67
68files=""
69destdir=""
70nfiles=0
71while [ $# != 1 ]
72do
73    files=" $files $1"
74    nfiles=`expr $nfiles + 1`
75    shift
76done
77destdir="$1"
78
79#
80# Particular case : destdir is a file. In this case, there must
81# be at most one file to install.
82#
83
84dest="dir"
85if [ $createdir = true ]
86then
87    mkdir -p $destdir
88else
89    if [ $nfiles = 1 -a ! -d $destdir ]
90    then dest="file"
91    fi
92fi
93
94#
95# Process files
96#
97
98for f in $files
99do
100    b=`basename $f`
101
102    if [ $dest = "dir" ]
103    then destfile="$destdir/$b"
104    else destfile="$destdir"
105    fi
106
107    sed \
108	    -e "s|%TCLSH%|$tclsh|g" \
109	    -e "s|%LIBNETMAGIS%|$libnetmagis|g" \
110	    -e "s|%CONFFILE%|$conffile|g" \
111	    -e "s|%CONFPROG%|$confprog|g" \
112	    $subst \
113	    $f > "$destfile" \
114	&& chmod $mode "$destfile" \
115	&& if [ ! -z "$owner" ] ; then chown $owner "$destfile" ; fi \
116	&& if [ ! -z "$group" ] ; then chgrp $group "$destfile" ; fi
117    if [ $? != 0 ]
118    then
119	echo "abort."
120	exit 1
121    fi
122done
123
124exit 0
125