summaryrefslogtreecommitdiffstats
path: root/quilt/delete.in
blob: c35150a622bbc2182173414a16fe0cf1a16a40d4 (plain) (blame)
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
#! @BASH@

#  This script is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 2 as
#  published by the Free Software Foundation.
#
#  See the COPYING and AUTHORS files for more details.

# Read in library functions
if [ "$(type -t patch_file_name)" != function ]
then
	if ! [ -r @LIB@/patchfns ]
	then
		echo "Cannot read library @LIB@/patchfns" >&2
		exit 1
	fi
	. @LIB@/patchfns
fi

usage()
{
	echo "Usage: quilt delete [patch]"
	if [ x$1 = x-h ]
	then
		cat <<EOF

Remove the specified or topmost patchfrom the series file. If the patch
is applied, it is first tried to remove it. (Only the topmost patch can
be removed right now.)

EOF
		exit 0
	else
		exit 1
	fi
}

options=`getopt -o h -- "$@"`

if [ $? -ne 0 ]
then
	usage
fi

eval set -- "$options"

while true
do
	case "$1" in
	-h)
		usage -h ;;
	--)
		shift
		break ;;
	esac
done

if [ $# -gt 1 ]
then
	usage
fi

patch=$(stripit $1)

if [ -z "$patch" ]
then
	patch="$(top_patch)"
	if [ -z "$patch" ]
	then
		echo "No patches applied"
		exit 1
	fi
else
	if ! patch_in_series $patch
	then
		echo "Patch $patch does not exist"
		exit 1
	fi
fi
if is_applied $patch
then
	if [ "$patch" != "$(top_patch)" ] || \
	   ! @LIB@/rpatch -fq "$patch"
	then
		echo "Patch $patch is currently applied"
		exit 1
	fi
fi
if ! remove_from_series $patch
then
	echo "Failed to remove patch $patch"
fi