Files
termux-packages/.github/workflows/repo-update.yml
2023-10-04 14:21:52 +03:00

117 lines
3.6 KiB
YAML

name: Update repo
on:
push:
branches:
- master
paths:
- '.github/workflows/repo-update.yml'
schedule:
- cron: '0,30 0-23 * * *'
jobs:
update-repo:
runs-on: ubuntu-latest
steps:
- name: Clone repository
run: |
git clone https://github.com/termux-pacman/termux-packages.git
mv termux-packages termux-packages-pacman
- name: Clone root repository
run: git clone https://github.com/termux/termux-packages.git
- name: Update repo
run: |
info() {
echo "==> $1"
}
commit() {
echo "-> $1"
}
# Edit
info "Edit"
cd termux-packages-pacman
rm -fr */
cd ../termux-packages
cp -r * ../termux-packages-pacman
# Get list pkg
info "Get list pkg"
cd ../termux-packages-pacman
list_files=" "
for i in $(git status -s packages root-packages x11-packages | awk '{print $2}'); do
dir_sp=(${i//// })
if [[ ! $(echo "$list_files" | grep " ${dir_sp[0]}/${dir_sp[1]} ") ]]; then
list_files+="${dir_sp[0]}/${dir_sp[1]} "
fi
done
list_files=($list_files)
# Sort list pkg
info "Sort list pkg"
cd ../termux-packages
declare -A list_values
list_sort=""
list_sha=""
for i in ${list_files[@]}; do
sha_file=$(git log -n 1 --pretty=format:%H -- $i)
value="$(git rev-list --count $sha_file)"
list_values[${value}]=$((${list_values[${value}]}+1))
list_sort+="${value}-${list_values[${value}]} "
list_sha+="${sha_file} "
done
list_sort=($list_sort)
list_sha=($list_sha)
copy_list_sort=($(sort -n <(printf "%s\n" "${list_sort[@]}")))
search_index() {
for i in "${!list_sort[@]}"; do
if [[ "${list_sort[$i]}" = "${1}" ]]; then
echo "${i}";
fi
done
}
sort_list_files=""
for i in ${copy_list_sort[@]}; do
index=$(search_index "$i")
if [[ "${i#*-}" = "1" ]]; then
sort_list_files+=" ${list_sha[$index]}###"
else
sort_list_files+="&&"
fi
sort_list_files+="${list_files[$index]}"
done
# Start upload
info "Start upload"
cd ../termux-packages-pacman
needbuild=false
if $(git log -1 --pretty=%B | grep -q '%needbuild'); then
needbuild=true
fi
git config --global user.name "termux-pacman-bot"
git config --global user.email "termux-pacman-bot@outlook.com"
git remote set-url origin "https://termux-pacman-bot:${{ secrets.TOKEN }}@github.com/termux-pacman/termux-packages-pacman.git"
commit "Update system repo"
git add .
git reset packages root-packages x11-packages README.md SECURITY.md repo.json
{
git commit -m "Update repo"
git push origin master
} || true
commit "Update repo packages"
for i in $sort_list_files; do
i_sp=(${i//###/ })
commit " ${i_sp[1]}"
cd ../termux-packages
commit_file="$(git show -s --format=%B ${i_sp[0]})"
cd ../termux-packages-pacman
git add $(echo ${i_sp[1]} | sed 's/&&/ /g')
{
if $needbuild; then
git commit -m "$(echo $commit_file | sed '/%ci:no-build/d; /\[skip ci\]/d')"
else
git commit -m "$commit_file"
fi
git push origin master
} || true
done