#!/bin/sh
#
# updatesegments.sh
#
#   usage: updatesegments.sh [urlbase]
#
# Shell script to update science mode, injection mode,
# and data quality segment lists for the S5 run.
#
# The segments will be downloaded from the specified
# URL.  If no URL is specified, the default value of
#
#   http://ldas-cit.ligo.caltech.edu
#
# is used.

# Shourov K. Chatterji
# shourov@ligo.caltech.edu

# $Id: updatesegments.sh,v 1.9 2007/06/24 10:55:20 shourov Exp $

# change to directory containing this script
cd `dirname $0`

# check for previously running process
if [ -f ./.lock ]; then
  lockHostname=`sed -e 's|:.*$||' ./.lock`
  lockProcess=`sed -e 's|^.*:||' ./.lock`
  if [ "${lockHostname}" != "`hostname`" ]; then
    echo "ERROR: `basename $0` is already running on ${lockHostname}" 1>&2
    exit 1
  fi
  ps -p ${lockProcess} -o pid,user,cmd 2>/dev/null | \
    grep ${lockProcess} | grep ${USER} | grep -q `basename $0`
  if [ $? -eq 0 ]; then
    echo "ERROR: `basename $0` is already running" 1>&2
    exit 1
  fi
  rm -f ./.lock
fi

# set lock file
echo `hostname`:$$ >./.lock

# path to q transform installation
Q=..

# setup environment
. ${Q}/bin/qsetup.sh

# current time
now=`tconvert now`

# report current time
tconvert -f "%Y-%m-%d %H:%M:%S %Z" ${now}

# parse command line arguments
if [ $# -ge 1 ]; then
  urlBase=$1
else
  urlBase="http://ldas-cit.ligo.caltech.edu"
fi

# science run name
scienceRun=S5

# list of interferometers to download
interferometers="G1 H1 H2 L1 V1"

# list of segment types to download
segmentTypes="science injection dq"

# begin loop over interferometers
for interferometer in ${interferometers}; do

  # begin loop over segment types
  for segmentType in ${segmentTypes}; do

    # report status
    echo "updating ${scienceRun}/${interferometer}/${segmentType}_segments.txt..."

    # create interferometer segment directory
    mkdir -p ${scienceRun}/${interferometer}

    # download segments
    wget -q -O - \
      ${urlBase}/segments/${scienceRun}/${interferometer}/${segmentType}_segments.txt \
      >${scienceRun}/${interferometer}/${segmentType}_segments.txt.tmp 2>/dev/null

    # replace previous segments
    if [ $? -eq 0 ]; then
      mv ${scienceRun}/${interferometer}/${segmentType}_segments.txt.tmp \
         ${scienceRun}/${interferometer}/${segmentType}_segments.txt
    else
      echo "ERROR: unable to update ${scienceRun}/${interferometer}/${segmentType}_segments.txt" 1>&2
      rm -f ${scienceRun}/${interferometer}/${segmentType}_segments.txt.tmp
    fi

    # ensure files exist
    if [ ! -f ${scienceRun}/${interferometer}/${segmentType}_segments.txt ]; then
      touch ${scienceRun}/${interferometer}/${segmentType}_segments.txt
    fi

  # end loop over segment types
  done

# end loop over interferometers
done

# clear lock file
rm -f ./.lock

# return to calling function
exit 0

