mirror of
https://github.com/termux-pacman/termux-packages.git
synced 2025-12-31 16:10:16 +00:00
117 lines
3.6 KiB
YAML
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
|