OSDN Git Service

[update] : Added package search
authorhayao <shun819.mail@gmail.com>
Sun, 20 Dec 2020 06:11:38 +0000 (15:11 +0900)
committerhayao <shun819.mail@gmail.com>
Sun, 20 Dec 2020 06:11:38 +0000 (15:11 +0900)
wfa

diff --git a/wfa b/wfa
index 7b183a4..e1e97ef 100755 (executable)
--- a/wfa
+++ b/wfa
@@ -25,6 +25,7 @@ nocolor=false
 noconfirm=false
 nodeps=false
 nomakepkgconf=false
+sync_search=false
 
 #-- makepkg --#
 # 実行ファイル
@@ -280,7 +281,7 @@ msg() {
     _message="${@}"
 
     echo_type() {
-        local __time
+        __time
         if [[ "${_nolabel}" = false ]]; then
             if [[ "${_noadjust}" = false ]]; then
                 for __time in $( seq 1 $(( ${_label_space} - ${_word_count})) ); do
@@ -771,6 +772,37 @@ install_aur_package() {
     run_pacman -U --noconfirm ${_pkgfilelist[@]}
 }
 
+# AURのパッケージを検索
+search_aur_package() {
+    local _package="${1}"
+    local _aur_json=$(curl -sL "https://aur.archlinux.org/rpc/?v=5&type=search&by=name-desc&arg=${_package}" | jq -r )
+    local _found_result_count="$(echo "${_aur_json}" | jq -r ".resultcount")"
+    if (( "${_found_result_count}" == 0 )); then
+        msg_error "Could not find all required packages:\n     ${_package}" 1
+    fi
+    _aur_json=$(echo "${_aur_json}" | jq -r ".results[]")
+
+    #echo ${_aur_json} 
+
+    local _found_pkgname=($(echo "${_aur_json}" | jq -r ".Name" ))
+
+
+
+
+    local  _found_package __pkgver __popularity __vote __pkgdesc
+    for _found_package in ${_found_pkgname[@]}; do
+        _found_json="$(echo ${_aur_json} | jq "select(.Name == \"${_found_package}\")")"
+        __pkgver="$(echo "${_found_json}" | jq -r ".Version" )"
+        __popularity="$(echo "${_found_json}" | jq -r ".Popularity" )"
+        __vote="$(echo "${_found_json}" | jq -r ".NumVotes" )"
+        __pkgdesc="$(echo "${_found_json}" | jq -r ".Description" )"
+    
+        echo "aur/${_found_package} ${__pkgver} (+${__vote} ${__popularity})"
+        echo "    ${__pkgdesc}"
+        unset __pkgver __popularity __vote __pkgdesc _found_json
+    done
+}
+
 # バージョンを表示して終了
 operation_version() {
     # Pyalpmからlibalpmの値を取得
@@ -803,22 +835,29 @@ install_package() {
 
 operation_sync(){
     local _package
-    for _package in ${specified_packages[@]}; do
-        if ! check_aur_package "${_package}" && [[ "${force_aur}" = false ]]; then
-            # 公式パッケージなのでpacmanでそのままインストール
-            run_pacman ${pacman_args} "${_package}"
-        else
-            # AUR上のパッケージの場合の処理
-            install_aur_package "${_package}"
-            #msg_error "Getting the AUR package has not been implemented yet." 1
-        fi
-    done
+    if [[ "${sync_search}" = true ]]; then
+        for _package in ${specified_packages[@]}; do
+            search_aur_package "${_package}"
+        done
+        "${pacman_command}" ${pacman_args} ${specified_packages[@]}
+    else
+        for _package in ${specified_packages[@]}; do
+            if ! check_aur_package "${_package}" && [[ "${force_aur}" = false ]]; then
+                # 公式パッケージなのでpacmanでそのままインストール
+                run_pacman ${pacman_args} "${_package}"
+            else
+                # AUR上のパッケージの場合の処理
+                install_aur_package "${_package}"
+                #msg_error "Getting the AUR package has not been implemented yet." 1
+            fi
+        done
+    fi
 }
 
 
 # Parse options
 ARGUMENT="${@}"
-_opt_short="QRShVdb:ay"
+_opt_short="QRShVdb:ays"
 _opt_long="query,remove,sync,help,version,debug,dbpath:,aururl,aur,noconfirm,config:,makepkg:,mflags:,pacman:,git:,gitflags:,gpg:,gpgflags:,makepkgconf:,nomakepkgconf,nodeps,refresh,bash-debug"
 
 OPT=$(getopt -o ${_opt_short} -l ${_opt_long} -- ${ARGUMENT})
@@ -883,6 +922,11 @@ while :; do
             option_y_count=$(( option_y_count + 1 ))
             shift 1
             ;;
+        -s | --search)
+            add_args pacman "--search"
+            sync_search=true
+            shift 1
+            ;;
         --aururl)
             aururl="${2}"
             shift 2