summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Rees <maxcrees@me.com>2020-04-11 19:11:29 -0500
committerMax Rees <maxcrees@me.com>2020-04-11 19:11:29 -0500
commit075e7b4df615a60a2302a849d1e9c8a65312dece (patch)
treef24e11abd43e3c86920859b0d7fdd67df0b387cc
parentd7006b134051c3f7163f8de85c15011c53abe497 (diff)
downloadabuild-resignapk.tar.gz
abuild-resignapk.tar.bz2
abuild-resignapk.tar.xz
abuild-resignapk.zip
resignapk: support re-signing APKINDEXresignapk
-rw-r--r--resignapk.in38
1 files changed, 30 insertions, 8 deletions
diff --git a/resignapk.in b/resignapk.in
index 9479c3d..fd558a2 100644
--- a/resignapk.in
+++ b/resignapk.in
@@ -93,19 +93,33 @@ cleanup() {
}
trap cleanup INT EXIT
-for apk in "$@"; do
+for apk; do
case "$apk" in
/*) ;;
*) apk="$PWD/$apk";;
esac
apk_basename="${apk##*/}"
- msg 'Splitting .apk...'
+ case "$apk" in
+ *.apk)
+ signpart=control.tar.gz
+ filetype=.apk
+ ;;
+ */APKINDEX.tar.gz)
+ signpart=data.tar.gz
+ filetype=APKINDEX
+ ;;
+ *)
+ die 'Unknown file type'
+ ;;
+ esac
+
+ msg "Splitting $filetype..."
tmpdir="$(mktemp -td resignapk.XXXXXX)"
cd "$tmpdir"
abuild-gzsplit < "$apk"
- if [ -n "$packager" ]; then
+ if [ -n "$packager" ] && [ "$filetype" = .apk ]; then
msg 'Updating control.tar.gz'
tar -xf control.tar.gz
ctrl_files="$(tar -tf control.tar.gz)"
@@ -116,16 +130,24 @@ for apk in "$@"; do
| gzip -9 > control.tar.gz
fi
- abuild-sign -k "$privkey" -p "$pubkey" -q control.tar.gz
+ abuild-sign -k "$privkey" -p "$pubkey" -q "$signpart"
msg 'Old signatures:'
list_sigs signatures.tar.gz
msg 'New signatures:'
- list_sigs control.tar.gz
+ list_sigs "$signpart"
- [ -n "$inplace" ] && msg 'Updating apk' || msg 'Creating apk.new'
- [ -n "$inplace" ] || apk="$apk.new"
+ if [ -n "$inplace" ]; then
+ msg "Updating $filetype"
+ else
+ msg "Creating $filetype.new"
+ apk="$apk.new"
+ fi
- cat control.tar.gz data.tar.gz > "$apk"
+ if [ "$filetype" = APKINDEX ]; then
+ mv data.tar.gz "$apk"
+ else
+ cat control.tar.gz data.tar.gz > "$apk"
+ fi
cleanup
done