Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6476 dpurdie 1
 
2
#
3
#   Receive a symlink to a package
4
#   Script run by ssh create a symlink to a package version
5
#   Works in bash and dash
6
#
7
#set -x
8
set -e
9
 
10
error() {
11
    echo ERROR: $*
12
    exit 1;
13
}
14
 
15
delete_dir() {
16
    if [ -d "$1" ] ; then
17
            chmod -R u+w "$1"
18
            rm -rf "$1"
19
    fi
20
}
21
 
22
# User options
23
while getopts D arg ; do
24
    case $arg in
25
        D) set -x ;;
26
        *) error Unknown option: $arg ;;
27
    esac
28
done
29
shift $(($OPTIND - 1))
30
 
31
# User arguments
32
pname=${1:?Need file name}
33
pver=${2:?Need package version}
34
tver=${3:?Need target package version}
35
 
36
dpkg="dpkg_archive"
37
[ -d $dpkg ] || error dpkg_archive not found
38
 
39
dpkg="dpkg_archive"
40
[ -d $dpkg ] || error dpkg_archive not found
41
 
42
#
43
#   Names of working directories
44
#
45
realdir="$dpkg/${pname}/${pver}"
46
newdir="$dpkg/${pname}/${pver}.NEW.TMPDIR"
47
olddir="$dpkg/${pname}/${pver}.OLD.TMPDIR"
48
pkgdir="$dpkg/${pname}"
49
 
50
#
51
#   Create package directory
52
#   Ensure its writable
53
mkdir -p "$pkgdir"
54
chmod u+w "$pkgdir"
55
 
56
#
57
#   Delete possible tmp directory
58
delete_dir "$newdir"
59
delete_dir "$olddir"
60
 
61
#
62
#   Create the temp symlink
63
#
64
ln -s "$tver" "$newdir"
65
 
66
#
67
#   Swap in the new directory - minimize disruption
68
#   Then delete the old
69
#
70
if [ -d "$realdir" ] ; then
71
    mv "$realdir" "$olddir"
72
fi
73
mv "$newdir" "$realdir"
74
 
75
#   Delete the original directory
76
delete_dir "$olddir"
77
 
78
# Fix up permissions on the package and package-version
79
chmod a-w "$pkgdir"
80