aboutsummaryrefslogtreecommitdiffstats
path: root/repoctl
blob: f527f243809de3049dd7465f31b4148b04f80f65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/bash

. ./functions

function usage_cmd()
{
    case "$1" in
	mvpkg)
	    cat <<EOF
Usage: repoctl mvpkg [options] --srcrepo distribution:section:sectionrepo \
                                 --dstrepo distribution:section:sectionrepo \
				 --srcpkg|--binpkg name

Options:
  --dry-run : don't do anything, but show what would have been done.
  --no-genhdlists : don't regenerate hdlists
  --srcpkg name : name of a source package. All the binary packages
                   generated by this source package will also be moved.
  --binpkg name : name of a binary package.

Example :
  Move emacs packages from 1/core/updates_testing to 1/core/updates :
  repoctl mvpkg --srcrepo 1:core:updates_testing --dstrepo 1:core:updates \
                  --srcpkg emacs
EOF
	    ;;
    esac
}

function mvpkg()
{
    args=$(getopt -o hn -l srcrepo:,dstrepo:,dry-run,help,no-genhdlists,no-mirror,srcpkg:,binpkg: -- "$@")
    [ $? -ne 0 ] && usage_cmd mvpkg && exit 1
    eval set -- "$args"
    [ $# -lt 1 ] && exit 1
    while [ $# -gt 0 ]
    do
	case $1 in
	    -h|--help)
		usage_cmd mvpkg
		exit 0
		;;
	    -n|--dry-run)
		dryrun=echo
		shift;;
	    --no-genhdlists)
		nogenhdlists=1
		shift;;
	    --no-mirror)
		nomirror=1
		shift;;
	    --srcrepo)
		IFS=':' read -ra srcrepo <<< "$2"
		shift;shift;;
	    --dstrepo)
		IFS=':' read -ra dstrepo <<< "$2"
		shift;shift;;
	    --srcpkg)
		srcpkg="$2"
		shift;shift;;
	    --binpkg)
		binpkg="$2"
		shift;shift;;
	    --)
		shift;break;;
	    -*)
		usage
		exit 1
		;;
	    *)
		break
		;;
	esac
    done
    if [ -z "$srcrepo" -o -z "$dstrepo" -o \( -z "$srcpkg" -a -z "$binpkg" \) ]
    then
	usage
	exit 1
    fi
    if [ -n "$srcpkg" ]
    then
	move_pkg "${srcrepo[0]}" "${srcrepo[1]}" "${srcrepo[2]}" \
	         "${dstrepo[0]}" "${dstrepo[1]}" "${dstrepo[2]}" \
		 "$srcpkg" "/dev/stdout"
	if [ -z "$nogenhdlists" ]
	then
	    update_hdlists "${srcrepo[0]}" "${srcrepo[1]}" "${srcrepo[2]}"
	    update_hdlists "${dstrepo[0]}" "${dstrepo[1]}" "${dstrepo[2]}"
	    if [ -z "$nomirror" ]
	    then
		mirror_repository "${srcrepo[0]}"
		[ "${srcrepo[0]}" != "${dstrepo[0]}" ] &&
		    mirror_repository "${dstrepo[0]}"
	    fi
	fi
    else
	echo "The --binpkg option is not supported yet"
    fi
}

function usage()
{
    cat <<EOF
  Usage: repoctl COMMAND [COMMAND ARGUMENTS]

  Useful commands :
     mvpkg
     lnpkg
     rmpkg
     genhdlists
     mirror

  For more infos about a command, use :
    repoctl COMMAND --help

EOF
}

case "$1" in
    mvpkg)
	shift
	mvpkg $@
	;;
    *)
	usage
	exit 1
	;;
esac