aboutsummaryrefslogtreecommitdiff
path: root/util/fget
diff options
context:
space:
mode:
Diffstat (limited to 'util/fget')
-rwxr-xr-xutil/fget184
1 files changed, 184 insertions, 0 deletions
diff --git a/util/fget b/util/fget
new file mode 100755
index 00000000..828f2463
--- /dev/null
+++ b/util/fget
@@ -0,0 +1,184 @@
+#!/bin/bash
+#
+# FGET -- Download a URL.
+#
+# Usage: fget [-h] [-n] [-q | -v] url
+#
+# Where -n no-op flag
+# -q suppress output
+# -v verbose output
+# -d set download directory
+# -o set output filename
+# -h this message
+#
+# Example:
+# % fget -q ftp://iraf.noao.edu/iraf/extern/foo-linux.tar.gz
+#
+# ----------------------------------------------------------------------------
+
+
+export PATH=../util:/sbin:/usr/sbin:/bin:/usr/bin:$PATH:/usr/local/bin:/opt/local/bin:/local/bin
+
+
+##############################################################################
+# START OF MACHDEP DEFINITIONS.
+##############################################################################
+
+# MACHDEP definitions which may be reset below.
+
+
+# Find the iraf root directory.
+if [ -n "$iraf" ]; then
+ iraf=""
+ files=("~/.iraf.h" "~/.iraf/iraf.h" "/usr/include/iraf.h")
+ for f in ${files[@]}; do
+ # $iraf is defined, use a well-known path for the system
+ if [ -e $f ]; then
+ i=`egrep IRAF $f | egrep \#define | sed -e 's/"//g' | awk '{print $3}'`
+ iraf=${i}
+ break
+ fi
+ done
+fi
+# Initialize the $iraf and environment.
+if [ -z "$iraf" ]; then
+ if [ -e "$HOME/.iraf/setup.sh" ]; then
+ source $HOME/.iraf/setup.sh
+ else
+ source ../unix/hlib/setup.sh
+ fi
+else
+ source $iraf/unix/hlib/setup.sh
+fi
+
+
+# Determine platform architecture.
+arch=`$iraf/unix/hlib/irafarch.sh`
+
+
+##############################################################################
+# END OF MACHDEP DEFINITIONS.
+##############################################################################
+
+#=============================================================================
+# Declarations and initializations.
+#=============================================================================
+
+exec=yes
+verb=no
+url=""
+fname=""
+ddir=""
+
+
+# Process cmdline flags.
+while [ -n "$1" ] ; do
+ case "$1" in
+ "-n") # no execute
+ exec=no
+ ;;
+ "-q") # be quiet
+ verb=no
+ quiet=yes
+ ;;
+ "-v") # be chatty
+ verb=yes
+ quiet=no
+ ;;
+ "-h") # print help summary
+ _Usage
+ ;;
+ "-d") # set download directory
+ ddir=$2
+ shift
+ ;;
+ "-o") # set output file name
+ fname=$2
+ shift
+ ;;
+ *)
+ url=$1
+ ;;
+ esac
+
+ if [ "$2" == "" ]; then
+ break
+ else
+ shift
+ fi
+done
+
+
+# Error checks.
+if [ -z "$url" ]; then
+ if [ "$verb" == "yes" ]; then
+ /bin/echo "ERROR: URL not specified"
+ fi
+ exit 1
+fi
+
+# Get the download filename. Delete an existing copy of the file
+if [ -z $fname ]; then
+ fname=${url##*/}
+fi
+if [ -e "$fname" ]; then
+ /bin/rm -f $fname
+fi
+
+# Ensure URL is an HTTP protocol.
+prot=`echo $url | cut -c1-3`
+if [ "$prot" == "ftp" ]; then
+ u=`echo $url | sed -e 's;ftp://iraf.noao.edu/iraf;http://iraf.noao.edu/ftp;'`
+ url=$u
+fi
+
+# Do it.
+if [ "$exec" == "yes" ]; then
+ if [ "$verb" == "yes" ]; then
+ /bin/echo "Downloading "$url" ...."
+ fi
+
+ args="url='$url' fname='${ddir}${fname}' cache='/tmp' verbose=no extn='' use_cache=no"
+ if [ "$verb" == "no" ]; then
+ $iraf/bin.$arch/x_system.e urlget ${args} \$nargs=2 >> /dev/null 2>&1
+ else
+ $iraf/bin.$arch/x_system.e urlget ${args} \$nargs=2
+ fi
+
+ if [ "$verb" == "yes" ]; then
+ /bin/echo "done"
+ fi
+fi
+
+
+# Verify we have the file.
+if [ ! -e ${url##*/} ]; then
+ if [ "$verb" == "yes" ]; then
+ /bin/echo "Error downloading file '"$fname"'"
+ fi
+ exit 1
+else
+ if (( $#>1 )); then
+ mv ${url##*/} $2
+ fi
+fi
+
+# Normal exit.
+exit 0
+
+
+
+#=============================================================================
+# Usage
+#=============================================================================
+
+_Usage() {
+ /bin/echo "Usage: fget [-h] [-n] [-q | -v] url"
+ /bin/echo ""
+ /bin/echo " where -n # no execute"
+ /bin/echo " -q # suppress output"
+ /bin/echo " -v # verbose output"
+ /bin/echo " -h # this message"
+
+ exit 0
+}