-
Notifications
You must be signed in to change notification settings - Fork 10
/
unrpm.sh
executable file
·76 lines (66 loc) · 1.27 KB
/
unrpm.sh
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
#!/bin/bash
# 2019, Georg Sauthoff <mail@gms.tf>
# SPDX-License-Identifier: GPL-3.0-or-later
set -eu
verbose=0
list=0
filename=-
dir=$PWD
function usage
{
cat <<EOF
$1 - unpack a RPM file
Usage: $1 [-C DIRECTORY] [-v|-t] [-|FILENAME.RPM]
Options:
-C DIRECTORY change in DIRECTORY before unpacking
-t list filenames instead of extracting
-v print filename while extracting them
EOF
}
function parse_args
{
local a
while getopts C:hvt a; do
case "$a" in
C)
dir=$OPTARG
;;
h)
usage $0
exit 0
;;
v)
verbose=1
;;
t)
list=1
;;
*)
usage $0
exit 1
;;
esac
done
if [ "$OPTIND" -gt $# ]; then
usage $0
exit 1
fi
shift $((OPTIND-1))
filename=$(realpath "$1")
}
function main
{
parse_args "$@"
if [ "$dir" != "$PWD" ]; then
cd "$dir"
fi
local flags=-di
if [ "$list" = 1 ]; then
flags=-t
fi
if [ "$verbose" = 1 ]; then
flags+="v"
fi
rpm2cpio "$filename" | cpio --quiet $flags
}
main "$@"