updated to clean up compiler issues with how functions were used from basis namespace;
[feisty_meow.git] / scripts / rev_control / rev_control.sh
1 #!/bin/bash
2
3 # these are helper functions for doing localized revision control.
4 # this script should be sourced into other scripts that use it.
5
6 # one unpleasantry to take care of first; cygwin barfs aggressively if the TMP directory
7 # is a DOS path, but we need it to be a DOS path for our XSEDE testing, so that blows.
8 # to get past this, TMP gets changed below to a hopefully generic and safe place.
9
10 if [[ "$TMP" =~ .:.* ]]; then
11   echo making weirdo temporary directory for DOS path.
12   export TMP=/tmp/rev_control_$USER
13 fi
14 if [ ! -d "$TMP" ]; then
15   mkdir $TMP
16 fi
17 if [ ! -d "$TMP" ]; then
18   echo "Could not create the temporary directory TMP in: $TMP"
19   echo "This script will not work properly without an existing TMP directory."
20 fi
21
22 this_host=
23 # gets the machine's hostname and stores it in the variable "this_host".
24 function get_our_hostname()
25 {
26   if [ "$OS" == "Windows_NT" ]; then
27     this_host=$(hostname)
28   elif [ ! -z "$(echo $MACHTYPE | grep apple)" ]; then
29     this_host=$(hostname)
30   elif [ ! -z "$(echo $MACHTYPE | grep suse)" ]; then
31     this_host=$(hostname --long)
32   else
33     this_host=$(hostname)
34   fi
35   #echo "hostname is $this_host"
36 }
37
38 # this function sets a variable called "home_system" to "true" if the
39 # machine is considered one of fred's home machines.  if you are not
40 # fred, you may want to change the machine choices.
41 export home_system=
42 function is_home_system()
43 {
44   # load up the name of the host.
45   get_our_hostname
46   # reset the variable that we'll be setting.
47   home_system=
48   if [[ $this_host == *.gruntose.blurgh ]]; then
49     home_system=true
50 #temp code
51 elif [[ $this_host == buildy ]]; then
52 home_system=true
53 elif [[ $this_host == simmy ]]; then
54 home_system=true
55 #temp code
56   fi
57 }
58
59 # we only want to totally personalize this script if the user is right.
60 function check_user()
61 {
62   if [ "$USER" == "fred" ]; then
63     export SVNUSER=fred_t_hamster@
64     export EXTRA_PROTOCOL=+ssh
65   else
66     export SVNUSER=
67     export EXTRA_PROTOCOL=
68   fi
69 }
70
71 # calculates the right modifier for hostnames / repositories.
72 modifier=
73 function compute_modifier()
74 {
75   modifier=
76   directory="$1"; shift
77   in_or_out="$1"; shift
78   check_user
79   # some project specific overrides.
80   if [[ "$directory" == hoople* ]]; then
81     modifier="svn${EXTRA_PROTOCOL}://${SVNUSER}svn.code.sf.net/p/hoople2/svn/"
82   fi
83   if [[ "$directory" == yeti* ]]; then
84     modifier="svn${EXTRA_PROTOCOL}://${SVNUSER}svn.code.sf.net/p/yeti/svn/"
85   fi
86   # see if we're on one of fred's home machines.
87   is_home_system
88   # special override to pick local servers when at home.
89   if [ "$home_system" == "true" ]; then
90     if [ "$in_or_out" == "out" ]; then
91       # need the right home machine for modifier when checking out.
92       modifier="svn://shaggy/"
93     else 
94       # no modifier for checkin.
95       modifier=
96     fi
97   fi
98 }
99