diff options
-rw-r--r-- | pcr/aurvote/PKGBUILD | 10 | ||||
-rwxr-xr-x[-rw-r--r--] | pcr/aurvote/aurvote | 46 |
2 files changed, 39 insertions, 17 deletions
diff --git a/pcr/aurvote/PKGBUILD b/pcr/aurvote/PKGBUILD index 712e5d2c4..25dd1887d 100644 --- a/pcr/aurvote/PKGBUILD +++ b/pcr/aurvote/PKGBUILD @@ -1,8 +1,8 @@ -# Maintainer (Arch): tuxce <tuxce.net@gmail.com> -# Maintainer: Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io> +# Contributor: tuxce <tuxce.net@gmail.com> +# Maintainer : Parabola Aurélien DESBRIÈRES <aurelien@hackers.camp> pkgname=aurvote -pkgver=1.4 +pkgver=1.6 pkgrel=1 pkgdesc="Tool to vote for favorite AUR packages" url="http://git.archlinux.fr/aurvote.git/" @@ -11,8 +11,6 @@ arch=('any') depends=('curl') source=($pkgname) -build() { +package() { install -D -m 755 "$srcdir/$pkgname" "$pkgdir/usr/bin/$pkgname" } - -md5sums=('57f2f0822b833f6c858526eb7c8bb85f') diff --git a/pcr/aurvote/aurvote b/pcr/aurvote/aurvote index 1b9c8f1bf..833267f10 100644..100755 --- a/pcr/aurvote/aurvote +++ b/pcr/aurvote/aurvote @@ -20,12 +20,12 @@ # NAME='aurvote' -VERSION=1.4 +VERSION=1.6 TMPDIR=${TMPDIR:-/tmp} AV_TMP="$TMPDIR/aurvote-$USER" -CONFIGFILE=${XDG_HOME_CONFIG:-~/.config}/aurvote +CONFIGFILE=${XDG_CONFIG_HOME:-~/.config}/aurvote AUR_URL="https://aur.archlinux.org" AUR_URL_LOGIN="$AUR_URL/login/" @@ -35,7 +35,7 @@ AUR_DOMAIN="aur.archlinux.org" AUR_COOKIE="AURSID" AUR_COOKIE_VALUE="" AUR_SETLANG="?setlang=en" - +AUR_TOKEN="" version() { echo "$NAME $VERSION" @@ -87,13 +87,24 @@ aur_login() { [[ $err ]] && error "$err" } +aur_get_pkg_page() { + local pkg=$1 + curl $CURL_OPT -fs -b "$COOKIE_FILE" \ + "${AUR_URL_PKG_PAGE}${pkg}${AUR_SETLANG}" \ + -o "$AV_TMP/$pkg.$PID" || + error "Unable to get $pkg page" +} + +aur_set_token() { + aur_get_pkg_page "$1" + AUR_TOKEN=$(sed -n -e '/<input type="hidden" name="token"/ { s/.*value="\([0-9a-f]\+\)".*/\1/p;q }' "$AV_TMP/$pkg.$PID") + [[ ! $AUR_TOKEN ]] && error "Unable to get token from AUR page" +} + aur_check_vote() { local pkg for pkg in "${pkgnames[@]}"; do - curl $CURL_OPT -fs -b "$COOKIE_FILE" \ - "${AUR_URL_PKG_PAGE}${pkg}${AUR_SETLANG}" \ - -o "$AV_TMP/$pkg.$PID" || - error "Unable to get $pkg page" + aur_get_pkg_page "$pkg" if sed '/<div id="news">/q' "$AV_TMP/$pkg.$PID" | grep -q /unvote/; then echo "already voted" elif sed '/<div id="news">/q' "$AV_TMP/$pkg.$PID" | grep -q /vote/; then @@ -106,11 +117,21 @@ aur_check_vote() { aur_vote() { - local pkg - (($1)) && vote="/vote/" || vote="/unvote/" + local pkg vote action + if (($1)); then + vote="/vote/" + action=do_Vote + else + vote="/unvote/" + action=do_UnVote + fi for pkg in "${pkgnames[@]}"; do + [[ ! $AUR_TOKEN ]] && aur_set_token "$pkg" curl $CURL_OPT -fs -b "$COOKIE_FILE" \ - "${AUR_URL_PKG_PAGE}${pkg}${vote}" -o /dev/null + "${AUR_URL_PKG_PAGE}${pkg}${vote}" \ + -d token="$AUR_TOKEN" \ + -d "$action"="(Un)Vote" \ + -o /dev/null if (($?)); then echo "Error: Can't (un)vote for $pkg" else @@ -120,7 +141,10 @@ aur_vote() { } create_config_file() { - local ans + local ans configdir=${CONFIGFILE%/*} + if [[ ! -d $configdir ]]; then + mkdir -p "$configdir" || error "Unable to create $configdir" + fi if [[ -f "$CONFIGFILE" ]]; then read -p "$CONFIGFILE exists. Replace ? [y/N] " ans [[ $ans != 'Y' && $ans != 'y' ]] && return 0 |