Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Thursday, September 19, 2024

File: [Platon] / scripts / shell / cvs-switch / cvs-switch.sh (download)

Revision 1.5, Sun Oct 31 14:56:23 2004 UTC (19 years, 10 months ago) by rajo


Changes since 1.4: +1 -2 lines

Old CVS_IGNORE_REMOTE_ROOT removed - not supported by cvs > 1.10

#!/bin/sh

#
# cvs-switch.sh - easily switch between multiple CVS Repositories
#

#
# Usage: add next line to your ~/.bashrc, ~/.zshrc or etc.:
#
# alias cvs-switch='eval `$HOME/prog/cvs/scripts/shell/cvs-switch/cvs-switch.sh`'
#
# Then you can easily switch between CVS Repositories with alias 'cvs-switch'
# Available CVS Repositories are configured in your ~/.cvs-repositories.conf,
# see cvs-repositories.conf example
#

#
# Developed by Lubomir Host 'rajo' <rajo AT platon.sk>
# Copyright (c) 2004 Platon SDG, http://platon.sk/
# Licensed under terms of GNU General Public License.
# All rights reserved.
#
# Changelog:
# 2004-04-13 - created
#

# $Platon: scripts/shell/cvs-switch/cvs-switch.sh,v 1.4 2004/10/31 12:11:11 rajo Exp $

#
# This code is tested on Linux, FreeBSD and Solaris
#

print_message()
{ # {{{
    echo $*" " > /dev/stderr
} # }}}

print_if_not_empty()
{ # {{{
    name=$1
    value=$2
    if [ ! -z "$value" ]; then
        print_message "    $name = $value"
    fi
} # }}}

print_exported()
{ # {{{
    name=$1
    value=$2
    if [ -z $value ]; then
        echo "unset $name;"
    else
        echo "export $name=\"$value\";"
    fi
} # }}}

#
# This can't be function loaded by the shell, because error message appears:
# ...
# switch-cvs:50: bad substitution
# ...

#switch-cvs()
#{ # {{{

    CVS_SWITCH_CONFIG="$HOME/.cvs-repositories.conf"

    # cmd for sed:
    TOLOWER="y/.-ABCDEFGHIJKLMNOPQRSTUVWXYZ/__abcdefghijklmnopqrstuvwxyz/"

    if [ -f "$CVS_SWITCH_CONFIG" ]; then
        . "$CVS_SWITCH_CONFIG";
    fi

    UNAME="`uname`" # OS depend code {{{
    case "$UNAME" in
        Linux)
            HOSTNAME="`hostname`"
            DOMAINNAME="`hostname -d`"
            ;;
        FreeBSD)
            HOSTNAME="`hostname -s`"
            DOMAINNAME="`hostname | sed 's/^[^.]*\.//g'`"
            ;;
        SunOS)
            HOSTNAME="`hostname`"
            DOMAINNAME="`domainname`"
            ;;
        *)
            print_message "Unsupported operating system, sorry...";
            exit 1;
            ;;
    esac
    # }}}

    x_HOSTNAME=`echo "$HOSTNAME" | sed "$TOLOWER"`
    x_DOMAINNAME=`echo "$DOMAINNAME" | sed "$TOLOWER"`

    #echo "x_HOSTNAME='$x_HOSTNAME'"
    #echo "x_DOMAINNAME='$x_DOMAINNAME'"

    REPOSITORIES="DOMAIN_${x_DOMAINNAME}"

    #echo "Available repositories: ${!REPOSITORIES}";

    SET_VARIABLES='title="TITLE_$rep";
    cvsroot="CVSROOT_$rep";
    cvs_rsh="CVS_RSH_$rep";'

    TITLE_none="NONE"
    CVSROOT_none=""
    CVS_RSH_none=""

    i=0
    for rep in none ${!REPOSITORIES}; do
        eval rep_$i="$rep";
        eval "$SET_VARIABLES";

        print_message
        print_message "$i - ${!title}";
        print_if_not_empty "CVSROOT" "${!cvsroot}"
        print_if_not_empty "CVS_RSH" "${!cvs_rsh}"

        i=$((i + 1))
    done

    print_message
    print_message -en "Your choice: [0]:"
    read x
    if [ -z "$x" ]; then
        i=1;
    else
        i="$x";
    fi

    myrep="rep_$i"
    rep=${!myrep};
    eval "$SET_VARIABLES";
    print_exported "CVSROOT" "${!cvsroot}"
    print_exported "CVS_RSH" "${!cvs_rsh}"

#} # }}}

#cvs-switch

# vim: ts=4
# vim600: fdl=0 fdc=3 fdm=marker


Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top