]> git.saurik.com Git - apt.git/blame - cmdline/apt-changelog
* cmdline/apt-changelog: Read server name from configuration
[apt.git] / cmdline / apt-changelog
CommitLineData
23632f5a
MP
1#!/bin/sh
2# Fetch Package changelog for given source or binary package. Send it through
3# a pager if stdout is a terminal.
4# (C) 2010 Canonical Ltd
5# Author: Martin Pitt <martin.pitt@ubuntu.com>
6
7set -e
8
9# evaluate and check CLI argumens
10pkg="$1"
11
12if [ -z "$1" -o -n "$3" ]; then
13 echo "Usage: $0 <package_name> [ <version> | candidate ]" >&2
14 exit 1
15fi
16
17version="$2"
18
19# do we want the log for the currently installed version?
20if [ -z "$version" ]; then
21 if ! dpkgs=`dpkg -s $pkg 2>/dev/null`; then
22 echo "ERROR: Package $pkg is not installed; try 'candidate' version for uninstalled packages" >&2
23 exit 1
24 fi
25 version=`echo "$dpkgs" | grep ^Version`
26fi
27
28# turn binary package names into source
e0043d1d 29if src=`apt-cache show $pkg 2>/dev/null| grep -m 1 ^Source:`; then
23632f5a
MP
30 pkg=${src#Source: }
31fi
32
33# get version and directory
34if ! showsrc=`apt-cache showsrc $pkg 2>/dev/null` || [ -z "$showsrc" ] ; then
35 echo "ERROR: Source or binary package $pkg does not exist" >&2
36 exit 1
37fi
38
39if [ "$version" = "candidate" ]; then
40 version=`echo "$showsrc"| grep -m 1 ^Version:`
41fi
42
43# strip off tag name and epoch
44version=${version#Version: }
45version=${version#*:}
46
47dir=`echo "$showsrc"| grep ^Directory:`
48dir=${dir#Directory: }
49
f229813f
MP
50# get configuration
51eval `apt-config shell SERVER Apt::Changelog::Server`
52
53if [ -z "$SERVER" ]; then
54 echo "ERROR: You need to set Apt::Changelog::Server configuration option" >&2
55 exit 1
56fi
57
23632f5a
MP
58# fetch it
59OUT=`mktemp -t "${pkg}.changes.XXXXXX"`
60trap "rm $OUT" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
f229813f 61if ! wget -q -O- ${SERVER}/$dir/${pkg}_${version}/changelog > "$OUT"
23632f5a
MP
62then
63 echo "ERROR: changelog for this version is not (yet) available; try https://launchpad.net/ubuntu/+source/$pkg/+changelog" >&2
64 exit 1
65fi
66sensible-pager "$OUT"
67