Commit 32353818 authored by Vitaly Lipatov's avatar Vitaly Lipatov

rpmurl: full rewrite

parent aca1e607
#!/bin/sh #!/bin/sh
# 2005-2006, 2009 (c) Etersoft www.etersoft.ru # 2005-2006, 2009, 2015 (c) Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru> # Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain # Public domain
# #
# Open package Url in BROWSER # Open package Url in BROWSER
# #
# TODO: use only for repo packages. add option -t for print url
# load common functions, compatible with local and installed script # load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common . `dirname $0`/../share/eterbuild/functions/common
load_mod rpm web load_mod rpm web
...@@ -14,7 +16,7 @@ PAGEURL="http://packages.altlinux.org/en/Sisyphus/srpms" ...@@ -14,7 +16,7 @@ PAGEURL="http://packages.altlinux.org/en/Sisyphus/srpms"
############################# #############################
Usage="Usage: $name [-c -f -p -s] spec or package..." Usage="Usage: $name [-c -f -p -s] [spec]"
function mygetopts() function mygetopts()
{ {
name=${0##*/} name=${0##*/}
...@@ -25,9 +27,10 @@ phelp() ...@@ -25,9 +27,10 @@ phelp()
echog "$Descr" echog "$Descr"
echog "$Usage" echog "$Usage"
echog "Options:" echog "Options:"
echog " -c check if package URL is accessible"
echog " -p open package page on http://packages.altlinux.org" echog " -p open package page on http://packages.altlinux.org"
echog " -s open source dir in the default browser" echog " -c check if package URL is accessible"
echog " -t just print URL"
echog " -s open package source dir in the default browser (for spec / git repo only"
echo echo
echog "Ext. options:" echog "Ext. options:"
echog " -f print failed URL only" echog " -f print failed URL only"
...@@ -35,13 +38,14 @@ phelp() ...@@ -35,13 +38,14 @@ phelp()
while getopts :hcfsp opt; do while getopts :hcfsp opt; do
case $opt in case $opt in
h) phelp; exit 0;; h) phelp; exit 0;;
c) CHECKONLY=1 ;; c) CHECKONLY=1 ;;
s) ABOUTDIR=1 ;; s) ABOUTDIR=1 ;;
t) PRINTONLY=1 ;;
p) SISYPHUSRU=1 ;; p) SISYPHUSRU=1 ;;
f) FAILEDONLY=1; CHECKONLY=1 ;; f) FAILEDONLY=1; CHECKONLY=1 ;;
+?) echog "$name: options should not be preceded by a '+'." 1>&2; exit 2;; +?) echog "$name: options should not be preceded by a '+'." 1>&2; exit 2;;
# ?) echog "$name: $OPTARG: bad option. Use -h for help." 1>&2 ; exit 2;; # ?) echog "$name: $OPTARG: bad option. Use -h for help." 1>&2 ; exit 2;;
?) OPTIND=$((OPTIND-1)); break; ?) OPTIND=$((OPTIND-1)); break;
esac esac
done done
...@@ -59,95 +63,44 @@ parse_cmd_pre_spec "$@" ...@@ -59,95 +63,44 @@ parse_cmd_pre_spec "$@"
mygetopts $LISTARGS mygetopts $LISTARGS
#TODO: fix check_spec()
# $LISTNAMES | wc -w
if [ -n "$2" ] ; then
echo
# more than 1 arg
#PARALL=1
#test `ps a | wc -l` -gt 70 && sleep 3
fi
get_pkginfo()
{ {
local i=${1} local SPEC="$1"
if [ -f ${i} ] rhas "$SPEC" "\.spec$" || fatal "Use only for git repo or with spec"
then
if [ -z ${i/*rpm/} ]
then
# it is rpm package
RPM_URL=$(querypackage ${i} URL)
SOURCE=
else
RPM_URL=$(eval_spec ${i} | get_var "Url")
SOURCE=$(eval_spec ${i} | get_var "Source")
fi
else
# will it package name
RPM_URL=$(querypackage ${i} URL)
SOURCE=$(querypackage ${i} SOURCE)
fi
}
get_pagepkginfo() PKGNAME=$(eval_spec $SPEC | get_var "Name")
{ RPM_URL=$(eval_spec $SPEC | get_var "Url")
local i=${1} SOURCE=$(eval_spec $SPEC | get_var "Source")
local PKGNAME
if [ -f ${i} ]
then
if [ -z ${i/*rpm/} ]
then
PKGNAME=$(get_sourcepkg_name "$i")
else
PKGNAME=$(get_name ${i})
fi
else
# installed package name
PKGNAME=$(get_sourcepkg_name "$i")
fi
if [ -z "$PKGNAME" ] ; then
PKGNAME="$i"
fi
RPM_URL=$PAGEURL/$PKGNAME
}
for i in $LISTNAMES $LISTRPMARGS
do
if [ -n "$SISYPHUSRU" ] ; then if [ -n "$SISYPHUSRU" ] ; then
get_pagepkginfo $i RPM_URL=$PAGEURL/$PKGNAME
if [ -n "$ABOUTDIR" ] ; then if [ -n "$ABOUTDIR" ] ; then
RPM_URL=$RPM_URL/get RPM_URL=$RPM_URL/get
fi fi
else else
get_pkginfo $i
if [ -n "$ABOUTDIR" ] ; then if [ -n "$ABOUTDIR" ] ; then
RPM_URL=`dirname $SOURCE` RPM_URL=$(dirname $SOURCE)
fi fi
[ "$RPM_URL" = "(none)" ] && RPM_URL="" [ "$RPM_URL" = "(none)" ] && RPM_URL=""
if [ -z "${RPM_URL}" ] ; then
warning "Cannot get package URL, open from $PAGEURL" [ -z "${RPM_URL}" ] && fatal "Cannot get package URL"
get_pagepkginfo $i
fi
fi fi
if [ -z "$CHECKONLY" ] ; then if [ -z "$PRINTONLY" ] ; then
echog "Opening URL '$RPM_URL' with browser '$BROWSER'" echo "$RPM_URL"
$BROWSER $RPM_URL & return
continue
fi fi
# Check package URL if [ -n "$CHECKONLY" ] ; then
if [ -z "$PARALL" ] ; then # Check package URL
echog -n "Checking URL '$RPM_URL' from package $i ..." echog -n "Checking URL $RPM_URL ..."
$GET $RPM_URL -s -d docmd $GET $RPM_URL -s -d
else return
( RESULT=`$GET $RPM_URL -s -d` ;
if [ -n "$FAILEDONLY" ] ; then
test ${RESULT/ *} = "200" || printf "%-40s %s %s\n" $i $RPM_URL "${RESULT}"
else
echog "Checking URL '$RPM_URL' from package $i ... $RESULT" ;
fi
) &
fi fi
done
echog "Opening URL '$RPM_URL' with browser '$BROWSER'"
$BROWSER $RPM_URL
}
check_spec $LISTNAMES
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment