700623448acc9647fd5ec53e66b0c4422264d3b5
[u/mrichter/AliRoot.git] / share / alifs
1 #!/bin/sh
2 #############################################################################
3 # alifs - a front-end shell for CASTOR and SHIFT
4 #############################################################################
5 #
6 # modification history
7 # $Log$
8 #
9 # SYNOPSIS
10 # alifs <command>
11 #
12 # DESCRIPTION
13 # This is an interface script to underlying mass storage manager. At present it supports CASTOR on RH6.1 and offers some basic Unix like commands:
14 #
15 # o) list directory
16 #       alifs ls [-cdilRTu] [--class] [--comment] path 
17 #
18 # o) move (rename) file or directory
19 #       alifs mv oldname newname...
20 #
21 # o) remove file or directory
22 #       alifs rm [-f] [-i] [-r] dirname... 
23 #
24 # o) create directory
25 #       alifs mkdir [-m absolute_mode] [-p] dirname...
26
27 #  CASTOR file system is accessible via RFIO (root must be configured configured with --enable-rfio switch and linked with appropriate libshift.a library). It provides experiment topl level directory (/castor/cern.ch/alice) and user directories following the AFS naming scheeme (like /castor/cern.ch/user/b/buncic).
28 #For more info on CASTOR commands, see related man pages (nsls, nsrename, nsrm, nsmkdir).
29 #   
30 #
31 # AUTHOR:
32 # Predrag Buncic, e-mail: Predrag.Buncic@cern.ch 
33 #
34 # CREATION DATE:
35 # 15-Feb-2001
36 #C<
37 ###########################################################################
38 Configure()
39 {
40   if [ "$CASTOR_USER_POOL" = "" ]
41   then
42     CASTOR_USER_POOL=$STAGE_POOL 
43   fi
44
45   if [ "$CASTOR_BIN" = "" ]
46   then
47     case `uname` in
48       Linux)
49          CASTOR_BIN=/afs/cern.ch/asis/packages/CASTOR/castor-1.3.1.1/i386_redhat61/usr.local/bin
50          EXEC_SHELL=/bin/sh
51          ;;
52         *) 
53          ;;
54     esac
55   fi
56
57   if [ ! -d $CASTOR_BIN ] 
58   then
59     printf "CASTOR is not supported on this platform.\n"
60     exit 255
61   fi
62
63   if [ "$EXEC_SHELL" = "" ]
64   then
65     EXEC_SHELL=bin/sh
66     for shell in bash zsh ksh
67     do
68       for dir in /bin /usr/bin /usr/local/bin
69       do
70         if [ -x $dir/$shell ]
71         then
72           EXEC_SHELL=$dir/$shell
73           break 2
74         fi
75       done
76     done
77     export EXEC_SHELL 
78     exec $EXEC_SHELL -norc  -noprofile $0 $*
79   fi
80 }
81 ###########################################################################
82 ALIFS::Usage()
83 {
84    printf "Usage: alifs <command [options]>\n"
85    exit 
86 }
87 ###########################################################################
88 ALIFS::Makeman()
89 ###########################################################################
90 {
91    mandir=../man/man4 
92    ./mangen -n tool $0
93    if [ $? -eq 0 ]
94    then
95      [ ! -d $mandir ]  && mkdir -p $mandir
96      mv `basename $0`.? $mandir
97      exit
98    fi
99 }
100 ###########################################################################
101 ALIFS::ls()
102 {
103    $CASTOR_BIN/nsls $*
104 }
105 ###########################################################################
106 ALIFS::mkdir()
107 {
108    $CASTOR_BIN/nsmkdir $*
109 }
110 ###########################################################################
111 ALIFS::mv()
112 {
113    $CASTOR_BIN/nsrename $*
114 }
115 ###########################################################################
116 ALIFS::rm()
117 {
118    $CASTOR_BIN/nsrm $*
119 }
120 ###########################################################################
121 Configure $*
122 ###########################################################################
123 ALIFS()
124 {
125   cmd=$1; shift 1
126
127   case `type -t ALIFS::$cmd` in
128      function)
129               ALIFS::$cmd $*
130               ;;
131             *) 
132               ALIFS::Usage;
133               ;;
134   esac 
135
136   exit
137 }
138 ###########################################################################
139 ###########################################################################
140
141 for param in $*
142 do
143     case $param in
144         -trace)
145             shift 1
146             set -vx
147             ;;
148         -echo)
149             shift 1
150             ECHO="echo "
151             ;;
152         -makeman)
153             shift 1
154             ALIFS::Makeman
155             ;;
156         -p)
157             shift 1
158             POOL=$1; shift 1
159             ;;
160         *)
161             ALIFS $*
162             ;;
163     esac
164 done
165
166