aboutsummaryrefslogtreecommitdiff
path: root/bin/psx
diff options
context:
space:
mode:
Diffstat (limited to 'bin/psx')
-rwxr-xr-xbin/psx26
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/psx b/bin/psx
new file mode 100755
index 0000000..1066c5f
--- /dev/null
+++ b/bin/psx
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+
+# psx -- fetch and extract pkgsrc archive
+
+case "$PWD" in
+/usr/pkgsrc/*/*) ;;
+*) echo "${0##*/}: not in package directory" 1>&2; exit 1 ;;
+esac
+
+make fetch
+f=/usr/pkgsrc/distfiles/$(sed -n '/.*(\(.*\)).*/{s//\1/;p;q}' distinfo)
+d=$(tar -tf "$f" | head -1)
+
+opt=
+if [ -e "$d" ]; then
+ printf "%s: $d already exists; overwrite? " "${0##*/}" 1>&2
+ read ans </dev/tty
+ case $ans in
+ y*) opt=-U ;;
+ *) exit 1 ;;
+ esac
+fi
+
+echo extracting archive... 1>&2
+tar -x $opt -f "$f" 1>&2
+echo "$d"