mirror of
https://github.com/sudoxnym/fdroiddata.git
synced 2026-05-20 12:49:14 +00:00
tools: add keep-latest script
This commit is contained in:
parent
d5e4b0d8a9
commit
fc0294326d
1 changed files with 31 additions and 0 deletions
31
tools/keep-latest.sh
Executable file
31
tools/keep-latest.sh
Executable file
|
|
@ -0,0 +1,31 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
last_commit=$(git log --grep='Update known apks' | grep commit | head -n 1 | sed -E -n 's/commit (.*)/\1/p')
|
||||
changed_files=$(git diff --name-only "$last_commit" HEAD)
|
||||
|
||||
for file in $changed_files; do
|
||||
if [[ $file == *.yml && $(dirname "$file") == "metadata" ]]; then
|
||||
diff=$(git diff "$last_commit" HEAD -- "$file")
|
||||
removed_versions=$(grep "\- versionCode: " <<< "$diff" | sed -E -n "s/.*versionCode: ([0-9]+)/\1/p")
|
||||
new_versions=$(grep "+ versionCode: " <<< "$diff" | sed -E -n "s/.*versionCode: ([0-9]+)/\1/p")
|
||||
# When an old version is removed the diff may have both deletion and addition for the same version
|
||||
for version in $removed_versions; do
|
||||
new_versions=$(sed "/$version/d" <<< "$new_versions")
|
||||
done
|
||||
new_version_num=$(wc -l <<< "$new_versions")
|
||||
|
||||
keep_num=$(sed -z -E -n 's/.*VercodeOperation:\n(( -[^\n]*\n)+).*/\1/p' "$file" | wc -l)
|
||||
[[ $keep_num == 0 ]] && keep_num=1
|
||||
|
||||
if [[ $new_version_num -gt $keep_num ]]; then
|
||||
remove_versions=$(head -n -"$keep_num" <<< "$new_versions")
|
||||
echo "Cleaning $file $remove_versions"
|
||||
for version in $remove_versions; do
|
||||
sed -i "/versionCode: $version/,/^$/d" "$file"
|
||||
sed -i -E -z 's/\n - versionName:[^\n]+\n -/\n -/' "$file"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
done
|
||||
Loading…
Reference in a new issue