diff --git a/auto_release_increases/auto_dep.sh b/auto_release_increases/auto_dep.sh index 78991743cd2a27c61581fc8b6fe3bdc1f2cbdd46..3389e52db1b933185ba49a4f2746a274af96f5e0 100755 --- a/auto_release_increases/auto_dep.sh +++ b/auto_release_increases/auto_dep.sh @@ -12,9 +12,10 @@ function rpm_dep_list() echo "WARNNING: input file rpm_list is NULL." exit 1 fi - cat $file_in | xargs -I {} rpm-dep -B {} -t yaml -l 2 - # 单纯的安装依赖,应该无需重编 - # cat $file_in | xargs -I {} rpm-dep -I {} + # 查询编译依赖 + cat $file_in | xargs -I {} rpm-dep -B {} -t json -l 2 + # 查询安装依赖 + cat $file_in | xargs -I {} rpm-dep -I {} -t json -l 2 if [ $? -eq 0 ]; then echo "====== rpm_dep successful ======" @@ -28,21 +29,32 @@ function rpm_dep_list_clean() function get_list() { + # 确保已安装"jq",用于解析json + if ! command -v jq >/dev/null 2>&1; then + echo -e "\033[1;31m [Warning: jq is not installed. Attempting to 'dnf install jq' ...] \033[0m" + if sudo dnf install jq -y -q; then + echo -e "\033[1;31m [INFO: 'dnf install jq' successfully.] \033[0m" + else + echo "Failed to install jq. Please install jq manually using your package manager." + exit 1 + fi + fi + # 清空或创建 file_out 文件 rm -f $file_out :> $file_out :> $file_tmp - # 查找 yaml - yaml_files=$(ls | grep -E '\.yaml$') + # 查找 json + json_files=$(ls | grep -E '\.json$') - # 遍历 yaml - for file in $yaml_files; do + # 遍历 json + for file in $json_files; do # 提取 "level: 1" 的包名 - level1_package=$(cat $file | grep -A 2 "level: 1" | grep "src_name:" | awk '{print $2}') + level1_package=$(jq -r 'select(.level==1) | .src_name' $file) src_names+=("$level1_package") # 提取 "level: 2" 的包名 - cat $file | grep -A 2 "level: 2" | grep "src_name:" | awk '{print $2}' >> $file_tmp + jq -r '.next[] | select(.level==2) | .src_name' $file >> $file_tmp done # cat $file_tmp | sort -u > $file_out sort -u $file_tmp -o $file_tmp