summaryrefslogtreecommitdiffstats
path: root/bin/rancid-cvs.in
blob: a683f497d3a40e363bcf6a055b15cf99a576899c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#! /bin/sh
##
## $Id: rancid-cvs.in,v 1.17 2005/08/15 00:42:50 heas Exp $
##
## Copyright (C) 1997-2004 by Terrapin Communications, Inc.
## All rights reserved.
##
## This software may be freely copied, modified and redistributed
## without fee for non-commerical purposes provided that this license
## remains intact and unmodified with any RANCID distribution.
##
## There is no warranty or other guarantee of fitness of this software.
## It is provided solely "as is".  The author(s) disclaim(s) all
## responsibility and liability with respect to this software's usage
## or its effect upon hardware, computer systems, other software, or
## anything else.
##
## Except where noted otherwise, rancid was written by and is maintained by
## Henry Kilmer, John Heasley, Andrew Partan, Pete Whiting, and Austin Schutz.
##
#
# Create all of the misc files & dirs needed for each group and import them
# into CVS or Subversion.
#
# rancid-cvs
#

# Read in the environment
ENVFILE="@sysconfdir@/rancid.conf"

. $ENVFILE

# Base dir
if [ ! -d $BASEDIR ]; then
    mkdir -p $BASEDIR ||
	(echo "Could not create local state directory: $BASEDIR"; exit 1)
fi

cd $BASEDIR

# RCS system
RCSSYS=${RCSSYS:=cvs};
if [ $RCSSYS != "cvs" -a $RCSSYS != "svn" ] ; then
    echo "$RCSSYS is not a valid value for RCSSYS."
    exit 1
fi

# Top level CVS stuff
if [ ! -d $CVSROOT ]; then
    if [ $RCSSYS = cvs ]; then
	cvs -d $CVSROOT init
    else
	svnadmin create $CVSROOT
    fi
fi

# Log dir
if [ ! -d logs ]; then
    mkdir logs
fi

# Which groups to do
if [ $# -ge 1 ] ; then
	LIST_OF_GROUPS="$*"; export LIST_OF_GROUPS
elif [ "$LIST_OF_GROUPS" = "" ] ; then
	echo "LIST_OF_GROUPS is empty in $ENVFILE"
	exit 1
fi

for GROUP in `echo $LIST_OF_GROUPS` ;
do

    DIR=$BASEDIR/$GROUP

    # Directory for the group and the configs
    if [ ! -d $DIR ]; then
	mkdir -p $DIR
	cd $DIR
	if [ $RCSSYS = cvs ]; then
	    cvs import -m "$GROUP" $GROUP new rancid
	    cd $BASEDIR
	    cvs checkout $GROUP
	else
	    svn import -m "$GROUP" . file://$CVSROOT/$GROUP
	    cd $BASEDIR
	    svn checkout file://$CVSROOT/$GROUP $GROUP
	fi
    fi
    cd $DIR
    if [ ! -d configs ]; then
	mkdir configs
	$RCSSYS add configs
	$RCSSYS commit -m 'new' configs
    fi

    # main files
    if [ ! -f routers.all ]; then
	touch routers.all
    fi
    if [ ! -f routers.down ]; then
	touch routers.down
    fi
    if [ ! -f routers.up ]; then
	touch routers.up
    fi
    if [ ! -f router.db ]; then
	touch router.db
	$RCSSYS add router.db
	$RCSSYS commit -m 'new' router.db
    fi
done