Automatic APT Repository build infrastructure
[shellsnippets/shellsnippets.git] / mksh / sysadmin / mvndput.sh
1 #!/bin/mksh
2 # $Id: mvndput.sh 2077 2011-06-09 12:30:40Z tglase $
3 #-
4 # Copyright (c) 2011
5 #       Thorsten Glaser <t.glaser@tarent.de>
6 #
7 # Provided that these terms and disclaimer and all copyright notices
8 # are retained or reproduced in an accompanying document, permission
9 # is granted to deal in this work without restriction, including un-
10 # limited rights to use, publicly perform, distribute, sell, modify,
11 # merge, give away, or sublicence.
12 #
13 # This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
14 # the utmost extent permitted by applicable law, neither express nor
15 # implied; without malicious intent or gross negligence. In no event
16 # may a licensor, author or contributor be held liable for indirect,
17 # direct, other damage, loss, or other issues arising in any way out
18 # of dealing in the work, even if advised of the possibility of such
19 # damage or existence of a defect, except proven that it results out
20 # of said person's immediate fault when using the work as intended.
21
22 whereami=$(realpath "$(dirname "$0")")
23
24 usage() {
25         print -u2 "Syntax: /opt/mvn-debs/mvndput.sh job squeeze main *.changes"
26         exit ${1:-2}
27 }
28
29 (( $# < 4 )) && usage
30 jobname=$1
31 suitename=$2
32 distname=$3
33 shift
34 shift
35 shift
36
37 if [[ $jobname != +([a-z0-9_-]) ]]; then
38         print -u2 "Invalid job name '$jobname'"
39         usage
40 fi
41
42 if [[ $suitename != +([a-z0-9_]) ]]; then
43         print -u2 "Invalid suite name '$suitename'"
44         usage
45 fi
46
47 if [[ $distname != +([a-z0-9_-]) ]]; then
48         print -u2 "Invalid dist name '$distname'"
49         usage
50 fi
51
52 if ! T=$(mktemp /tmp/mvndput.XXXXXXXXXX); then
53         print -u2 Cannot create temporary file.
54         exit 255
55 fi
56 tag=mvndebs$RANDOM
57
58 rc=0
59 for changesfile in "$@"; do
60         if [[ $changesfile != *.changes ]]; then
61                 print -u2 "Not a *.changes file: '$changesfile'"
62                 continue
63         fi
64
65         pkgname=$(sed -e '/^-----BEGIN PGP/,/^$/d' -e '/^$/,$d' \
66             <"$changesfile" | sed -n '/^Source: /s///p')
67         if [[ $pkgname != [a-z0-9]+([a-z0-9+.-]) ]]; then
68                 print -u2 "Invalid Source '$pkgname' in '$changesfile'"
69                 continue
70         fi
71
72         cat >"$T" <<-EOF
73                 [$tag]
74                 method = local
75                 allow_unsigned_uploads = 1
76                 incoming = ${whereami}/$jobname/dists/$suitename/$distname/Pkgs/$pkgname
77                 pre_upload_command = mkdir -p ${whereami}/$jobname/dists/$suitename/$distname/Pkgs/$pkgname
78                 post_upload_command = mksh ${whereami}/mvndebri.sh ${whereami} $jobname $suitename
79 EOF
80         print -u2 "Processing ${changesfile}..."
81         dput -c "$T" $tag "$changesfile"
82         rc=$?
83         if (( rc )); then
84                 print -u2 "===> failed with errorlevel $rc"
85                 rc=1
86         fi
87 done
88 rm -f "$T"
89 (( rc )) && usage 1
90 exit 0