Add apt-get wrapper.
[tails.git] / data / wrappers / apt-get
blob6269c66f179f0fd3b0a127f5ee03e63efbcc3a02
1 #!/bin/sh
2 set -e
3 set -u
5 # XXX: what if a package is called install or source...
6 mode=unknown
7 for param in "$@"; do
8 case "$param" in
9 install | download | upgrade | dist-upgrade)
10 mode=binuris
12 source)
13 mode=srcuris
15 update | autoclean | autoremove | purge)
16 mode=noop
18 esac
19 done
21 # let's fail as early as possible:
22 if [ "$mode" = unknown ]; then
23 echo "E: unsupported apt-get operation, mode is still unknown" >&2
24 echo "E: requested operation follows:" "$@" >&2
25 exit 1
28 if [ "$mode" = binuris ]; then
29 apt-get.real "$@" --print-uris|perl -ne 'if (/^'\''(.+)'\'' ([^_]+)_([^_]+)_/) { my ($url, $package, $version)=($1,$2,$3); $version =~ s/%3a/:/g; print "$package $version $url\n"; }' >> /debootstrap/$mode
30 apt-get.real "$@"
31 elif [ "$mode" = srcuris ]; then
32 # all uris: perl -ne 'if (/^'\''(.+)'\'' (\S+)/) { my ($url, $filename) = ($1, $2); print "$filename $url\n"; }'
33 # only dsc: perl -ne 'if (/^'\''(.+)'\'' (\S+\.dsc)/) { my ($url, $filename) = ($1, $2); print "$filename $url\n"; }'
34 apt-get.real "$@" --print-uris|perl -ne 'if (/^'\''(.+)'\'' (\S+\.dsc)/) { my ($url, $filename) = ($1, $2); print "$filename $url\n"; }' >> /debootstrap/$mode.tmp
35 apt-get.real "$@"
36 while read filename uri; do
37 # extract source and version w/o taking the GnuPG version in the signature section, and add uri after that
38 s_v=$(awk '/^(Source|Version):/ {print $2}' "$filename" | head -2 | xargs)
39 echo "$s_v $uri" >> /debootstrap/$mode
40 done < /debootstrap/$mode.tmp
41 rm /debootstrap/$mode.tmp
42 else
43 # handle both noop and unknown here, each into its own file; unknown should be empty:
44 echo "command:" "$@" >> /debootstrap/$mode
45 apt-get.real "$@"