Skip to content

Commit 9b1874b

Browse files
committed
merge in unimplimented Alien pip3 support gobolinux#23 changes
2 parents e6e2530 + cf55010 commit 9b1874b

File tree

2 files changed

+33
-14
lines changed

2 files changed

+33
-14
lines changed

bin/Alien

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ alienpkg="${prog#*:}"
4040

4141
if [[ -z "$alientype" || -z "$alienpkg" ]]
4242
then
43-
Die "missing program name"
43+
Die "missing program name, format shoud be 'AlienType:program'"
44+
fi
45+
46+
if [[ ! -x /System/Index/bin/Alien-$alientype ]]
47+
then
48+
Die "$alientype is not a valid alientype"
4449
fi
4550

4651
exec Alien-$alientype $mode $alienpkg "$(Arg 2)" "$(Arg 3)"

bin/Alien-PIP

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
. ScriptFunctions
1111
Import Alien
1212

13+
1314
getversion() {
15+
1416
local prog=$(echo "$1" | sed 's,\(.*\),\L\1,g')
15-
local proginfo=$($pip list | sed 's,\(.*\),\L\1,g' | grep "^${prog} ")
17+
local proginfo=$($pip list 2>/dev/null | sed 's,\(.*\),\L\1,g' | grep "^${prog} ")
1618
if [ -z "$proginfo" ]
1719
then exit 1
1820
else echo "$proginfo" | cut -d\( -f2 | cut -d\) -f1
@@ -23,21 +25,28 @@ getinstallversion() {
2325
prog="$1"
2426
versions=($(python${python_major} - << EOF
2527
import json
28+
from packaging.version import Version
29+
2630
try:
2731
from urllib2 import urlopen, Request
28-
except ImportError:
32+
def load_json(res):
33+
return json.load(res)
34+
35+
except ModuleNotFoundError:
2936
from urllib.request import urlopen, Request
30-
from pkg_resources import parse_version
37+
def load_json(res):
38+
return json.loads('\n'.join([l.decode() for l in res.readlines()]))
39+
3140
def available_versions(prog):
3241
try:
33-
url = "https://pypi.python.org/pypi/%s/json" %prog
34-
data = json.load(urlopen(Request(url)))
35-
versions = list(data["releases"].keys())
36-
# sort available versions newest to oldest
37-
versions.sort(key=parse_version, reverse=True)
38-
return versions
39-
except:
40-
return ''
42+
url = "https://pypi.python.org/pypi/%s/json" %prog
43+
data = load_json(urlopen(Request(url)))
44+
versions = list(data["releases"].keys())
45+
versions.sort(key=Version, reverse=True)
46+
return versions
47+
48+
except Exception as e:
49+
return []
4150
print("\n".join(available_versions("$prog")))
4251
EOF
4352
))
@@ -97,9 +106,14 @@ prog="$2"
97106

98107
case "$command" in
99108
--getversion)
100-
echo $(getversion "$2")
109+
ver=$(getversion "$2")
110+
[ $? -eq 0 ] && echo $ver || exit $? # propagate the error
101111
;;
102112
--getinstallversion)
113+
[ -z "$(getversion 'packaging')" ] && {
114+
echo "pip module 'packaging' (see PEP440) not found, installing it first" >&2
115+
install packaging >&2 || exit 1
116+
}
103117
echo $(getinstallversion "$2" "$3" "$4")
104118
;;
105119
--greater-than)
@@ -112,7 +126,7 @@ case "$command" in
112126
lower="$3"
113127
upper="$4"
114128
ver=$(getversion "$2")
115-
In_Version_Range "$lower" "$ver" "$upper"
129+
In_Version_Range "$lower" "$ver" "$upper"
116130
;;
117131
--have-manager)
118132
which pip${python_major}>/dev/null 2>&1 || exit 1

0 commit comments

Comments
 (0)