source: trunk/debathena/scripts/gen-packages @ 22773

Revision 22773, 1.6 KB checked in by ghudson, 17 years ago (diff)
* debathena/scripts/gen-packages: Add a -c flag to scan a checkout instead of the repository, which is much faster but reliant on the up-to-dateness of the checkout.
  • Property svn:executable set to *
Line 
1#!/bin/sh
2
3# Usage: gen-packages [-c|-r] [LOCATION]
4
5# Scans the repository or a checkout of it and generates a file named
6# "packages" in the current directory containing a table of source
7# package names and their corresponding directories.  Scanning a
8# checkout is much faster, but relies on the checkout being
9# sufficiently up to date.
10
11# If -c is specified, scans a checkout.  If -r is specified, scans the
12# repository.  -r is the default.
13
14# If LOCATION is specified, it is used in preference to the canonical
15# Athena repository trunk or the canonical source checkout.
16
17set -e
18
19die() {
20  echo "$@" >&2
21  exit 1
22}
23
24usage() {
25  die "gen-packages [-r|-c] [LOCATION]"
26}
27
28type=repos
29
30while getopts cr opt; do
31  case "$opt" in
32  c)
33    type=checkout
34    ;;
35  r)
36    type=repos
37    ;;
38  \?)
39    usage
40    ;;
41  esac
42done
43
44shift $(($OPTIND - 1))
45if [ $# -gt 0 ]; then
46  loc=$1
47elif [ $type = repos ]; then
48  loc=svn+ssh://svn.mit.edu/athena/trunk
49else
50  loc=/afs/dev.mit.edu/source/src-svn
51fi
52
53rm -f packages.unsorted
54echo "Scanning file list of $loc"
55if [ $type = repos ]; then
56  for cf in $(svn ls -R $loc | grep 'debian/control$'); do
57    echo "Reading $cf"
58    name=$(svn cat $loc/$cf | sed -ne 's/^Source: \(.*\)$/\1/p')
59    dir=${cf%/debian/control}
60    printf "%-35s %s\n" $name $dir >> packages.unsorted
61  done
62else
63  for cf in $(cd $loc && find | sed -ne '/debian\/control$/s/^\.\///p'); do
64    echo "Reading $cf"
65    name=$(sed -ne 's/^Source: \(.*\)$/\1/p' $loc/$cf)
66    dir=${cf%/debian/control}
67    printf "%-35s %s\n" $name $dir >> packages.unsorted
68  done
69fi
70sort packages.unsorted > packages
71rm -f packages.unsorted
Note: See TracBrowser for help on using the repository browser.