xref: /Universal-ctags/misc/tinst (revision e7b94675f3c160f277ded00fc32accb41854d009)
15a2d71c5SMasatake YAMATO#!/bin/sh
293c4b724Sviccuad#
393c4b724Sviccuad#   Copyright (C) 2014 Masatake YAMATO
493c4b724Sviccuad#
593c4b724Sviccuad#   This program is free software; you can redistribute it and/or modify
693c4b724Sviccuad#   it under the terms of the GNU General Public License as published by
7*7963e4b9Sviccuad#   the Free Software Foundation; either version 2 of the License, or
893c4b724Sviccuad#   (at your option) any later version.
993c4b724Sviccuad#
1093c4b724Sviccuad#   This program is distributed in the hope that it will be useful,
1193c4b724Sviccuad#   but WITHOUT ANY WARRANTY; without even the implied warranty of
1293c4b724Sviccuad#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1393c4b724Sviccuad#   GNU General Public License for more details.
1493c4b724Sviccuad#
1593c4b724Sviccuad#   You should have received a copy of the GNU General Public License
1693c4b724Sviccuad#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
1793c4b724Sviccuad
185a2d71c5SMasatake YAMATOTINST_ROOT=
195a2d71c5SMasatake YAMATO
205a2d71c5SMasatake YAMATOERROR ()
215a2d71c5SMasatake YAMATO{
22d4ac6ddaSMasatake YAMATO    local status=$1
23d4ac6ddaSMasatake YAMATO    local msg=$2
245a2d71c5SMasatake YAMATO    shift 2
255a2d71c5SMasatake YAMATO    echo "$msg" 1>&2
265a2d71c5SMasatake YAMATO    exit $status
275a2d71c5SMasatake YAMATO}
285a2d71c5SMasatake YAMATO
295a2d71c5SMasatake YAMATOMSG_title()
305a2d71c5SMasatake YAMATO{
315a2d71c5SMasatake YAMATO    printf '%-70s' "${1}"
325a2d71c5SMasatake YAMATO}
335a2d71c5SMasatake YAMATO
345a2d71c5SMasatake YAMATOMSG_passed()
355a2d71c5SMasatake YAMATO{
365a2d71c5SMasatake YAMATO    echo passed
375a2d71c5SMasatake YAMATO}
385a2d71c5SMasatake YAMATO
395a2d71c5SMasatake YAMATOMSG_failed()
405a2d71c5SMasatake YAMATO{
415a2d71c5SMasatake YAMATO    echo failed
425a2d71c5SMasatake YAMATO}
435a2d71c5SMasatake YAMATO
445a2d71c5SMasatake YAMATOMSG_done()
455a2d71c5SMasatake YAMATO{
465a2d71c5SMasatake YAMATO    echo done
475a2d71c5SMasatake YAMATO}
485a2d71c5SMasatake YAMATO
495a2d71c5SMasatake YAMATO
505a2d71c5SMasatake YAMATOT_existing()
515a2d71c5SMasatake YAMATO{
525a2d71c5SMasatake YAMATO    local f=$1
535a2d71c5SMasatake YAMATO    shift
545a2d71c5SMasatake YAMATO    local op
555a2d71c5SMasatake YAMATO    local r=0
565a2d71c5SMasatake YAMATO
575a2d71c5SMasatake YAMATO    for op in "$@"; do
585a2d71c5SMasatake YAMATO	case "$op" in
595a2d71c5SMasatake YAMATO	    -d)
605a2d71c5SMasatake YAMATO		MSG_title "The existence of $f as a directory"
615a2d71c5SMasatake YAMATO		;;
625a2d71c5SMasatake YAMATO	    -f)
635a2d71c5SMasatake YAMATO		MSG_title "The existence of $f as an file"
645a2d71c5SMasatake YAMATO		;;
655a2d71c5SMasatake YAMATO	    -r)
665a2d71c5SMasatake YAMATO		MSG_title "The read mode of $f"
675a2d71c5SMasatake YAMATO		;;
685a2d71c5SMasatake YAMATO	    -x)
695a2d71c5SMasatake YAMATO		MSG_title "The existence of $f as an executable"
705a2d71c5SMasatake YAMATO		;;
715a2d71c5SMasatake YAMATO	    *)
725a2d71c5SMasatake YAMATO		MSG_title "The existence of $f with $op operator"
735a2d71c5SMasatake YAMATO		;;
745a2d71c5SMasatake YAMATO	esac
755a2d71c5SMasatake YAMATO	if [ $op ${TINST_ROOT}/$f ]; then
765a2d71c5SMasatake YAMATO	    MSG_passed
775a2d71c5SMasatake YAMATO	else
785a2d71c5SMasatake YAMATO	    MSG_failed
795a2d71c5SMasatake YAMATO	    r=$(( r + 1 ))
805a2d71c5SMasatake YAMATO	fi
815a2d71c5SMasatake YAMATO    done
825a2d71c5SMasatake YAMATO    return ${r}
835a2d71c5SMasatake YAMATO}
845a2d71c5SMasatake YAMATO
855a2d71c5SMasatake YAMATOprepare()
865a2d71c5SMasatake YAMATO{
87d4ac6ddaSMasatake YAMATO    local srcdir=$1
88d4ac6ddaSMasatake YAMATO    local root=$2
895a2d71c5SMasatake YAMATO
905a2d71c5SMasatake YAMATO
915a2d71c5SMasatake YAMATO    MSG_title "Preparing installation tests"
925a2d71c5SMasatake YAMATO
93d4ac6ddaSMasatake YAMATO    if ! [ -e ${srcdir}/configure ]; then
945a2d71c5SMasatake YAMATO	ERROR 2 "cannot find configure script"
955a2d71c5SMasatake YAMATO    fi
965a2d71c5SMasatake YAMATO
97d4ac6ddaSMasatake YAMATO    mkdir -p "$root"
985a2d71c5SMasatake YAMATO
99d4ac6ddaSMasatake YAMATO    if ! [ -d "$root" ]; then
100d4ac6ddaSMasatake YAMATO	ERROR 2 "failed in directory creation: $roo"
1015a2d71c5SMasatake YAMATO    fi
1025a2d71c5SMasatake YAMATO
1035a2d71c5SMasatake YAMATO    rm Makefile
1045a2d71c5SMasatake YAMATO
105d4ac6ddaSMasatake YAMATO    if ! ${srcdir}/configure --prefix=$root > /dev/null; then
106d4ac6ddaSMasatake YAMATO	ERROR 2 "failed in running configure script $root"
1075a2d71c5SMasatake YAMATO    fi
1085a2d71c5SMasatake YAMATO
1095a2d71c5SMasatake YAMATO    if ! [ -e Makefile ]; then
1105a2d71c5SMasatake YAMATO	ERROR 2 "cannot find Makefile"
1115a2d71c5SMasatake YAMATO    fi
1125a2d71c5SMasatake YAMATO
1135a2d71c5SMasatake YAMATO    if ! make > /dev/null; then
1145a2d71c5SMasatake YAMATO	ERROR 2 "failed in building ctags"
1155a2d71c5SMasatake YAMATO    fi
1165a2d71c5SMasatake YAMATO
1175a2d71c5SMasatake YAMATO    if ! make install > /dev/null; then
1185a2d71c5SMasatake YAMATO	ERROR 2 "failed in installing ctags"
1195a2d71c5SMasatake YAMATO    fi
1205a2d71c5SMasatake YAMATO
1215a2d71c5SMasatake YAMATO    MSG_done
1225a2d71c5SMasatake YAMATO    return 0
1235a2d71c5SMasatake YAMATO}
1245a2d71c5SMasatake YAMATO
1255a2d71c5SMasatake YAMATOcleanup()
1265a2d71c5SMasatake YAMATO{
1275a2d71c5SMasatake YAMATO    MSG_title "Cleanup installation tests"
1285a2d71c5SMasatake YAMATO    MSG_done
1295a2d71c5SMasatake YAMATO    return 0
1305a2d71c5SMasatake YAMATO}
1315a2d71c5SMasatake YAMATO
1325a2d71c5SMasatake YAMATOcheck()
1335a2d71c5SMasatake YAMATO{
1345a2d71c5SMasatake YAMATO    T_existing /bin/ctags -f -x
1355a2d71c5SMasatake YAMATO    T_existing /bin/readtags -f -x
1365a2d71c5SMasatake YAMATO
1375a2d71c5SMasatake YAMATO    T_existing /share/man/man1/ctags.1 -f -r
1385a2d71c5SMasatake YAMATO}
1395a2d71c5SMasatake YAMATO
1405a2d71c5SMasatake YAMATOmain()
1415a2d71c5SMasatake YAMATO{
142d4ac6ddaSMasatake YAMATO    local srcdir
1435a2d71c5SMasatake YAMATO    local root
1445a2d71c5SMasatake YAMATO    local status
1455a2d71c5SMasatake YAMATO
146d4ac6ddaSMasatake YAMATO    if [ $# = 2 ]; then
147d4ac6ddaSMasatake YAMATO	srcdir=$1
148d4ac6ddaSMasatake YAMATO	root=$2
149d4ac6ddaSMasatake YAMATO	shift 2
1505a2d71c5SMasatake YAMATO    else
15142067cf8SK.Takata	ERROR 2 "A installation root must be given as the first argument"
1525a2d71c5SMasatake YAMATO    fi
1535a2d71c5SMasatake YAMATO
154d4ac6ddaSMasatake YAMATO    prepare "${srcdir}" "${root}"
1555a2d71c5SMasatake YAMATO
1565a2d71c5SMasatake YAMATO    TINST_ROOT=${root}
1575a2d71c5SMasatake YAMATO    check
1585a2d71c5SMasatake YAMATO    status=$?
1595a2d71c5SMasatake YAMATO
1605a2d71c5SMasatake YAMATO    cleanup "${root}"
1615a2d71c5SMasatake YAMATO
1625a2d71c5SMasatake YAMATO    return $status
1635a2d71c5SMasatake YAMATO}
1645a2d71c5SMasatake YAMATO
1655a2d71c5SMasatake YAMATOmain "$@"
166