dotfiles

Configuration for the software I use.
git clone https://git.jaderune.net/jbauer/dotfiles
Log | Files | Refs | README | LICENSE

update_pyscopedb.sh (2088B)


      1 #!/bin/sh
      2 
      3 set -e
      4 
      5 PROG_NAME=$0
      6 PYCSCOPE_EXE=pycscope
      7 PYCSCOPE_ARGS=
      8 DB_FILE=pycscope.out
      9 # Note that we keep the same name
     10 PROJECT_ROOT=
     11 FILE_LIST_CMD=
     12 
     13 ShowUsage() {
     14     echo "Usage:"
     15     echo "    $PROG_NAME <options>"
     16     echo ""
     17     echo "    -e [exe=pycscope]:      The pycscope executable to run"
     18     echo "    -f [file=pycscope.out]: The path to the ctags file to update"
     19     echo "    -p [dir=]:            The path to the project root"
     20     echo "    -L [cmd=]:            The file list command to run"
     21     echo ""
     22 }
     23 
     24 
     25 while getopts "h?e:f:p:L:" opt; do
     26     case $opt in
     27         h|\?)
     28             ShowUsage
     29             exit 0
     30             ;;
     31         e)
     32             PYCSCOPE_EXE=$OPTARG
     33             ;;
     34         f)
     35             DB_FILE=$OPTARG
     36             ;;
     37         p)
     38             PROJECT_ROOT=$OPTARG
     39             ;;
     40         L)
     41             FILE_LIST_CMD=$OPTARG
     42             ;;
     43     esac
     44 done
     45 
     46 shift $((OPTIND - 1))
     47 
     48 if [ "$1" != "" ]; then
     49     echo "Invalid Argument: $1"
     50     exit 1
     51 fi
     52 
     53 echo "Locking pycscope DB file..."
     54 echo $$ > "$DB_FILE.lock"
     55 
     56 # Remove lock and temp file if script is stopped unexpectedly.
     57 trap 'rm -f "$DB_FILE.lock" "$DB_FILE.files" "$DB_FILE.temp"' INT QUIT TERM EXIT
     58 
     59 PREVIOUS_DIR=$(pwd)
     60 if [ -d "$PROJECT_ROOT" ]; then
     61     cd "$PROJECT_ROOT"
     62 fi
     63 
     64 if [ -n "${FILE_LIST_CMD}" ]; then
     65     if [ "${PROJECT_ROOT}" = "." ]; then
     66         eval "$FILE_LIST_CMD" > "${DB_FILE}.files"
     67     else
     68         # If using a tags cache directory, use absolute paths
     69         eval "$FILE_LIST_CMD" | while read -r l; do
     70             echo "${PROJECT_ROOT%/}/${l}"
     71         done > "${DB_FILE}.files"
     72     fi
     73 else
     74     find . -type f > "${DB_FILE}.files"
     75 fi
     76 PYCSCOPE_ARGS="${PYCSCOPE_ARGS} -i ${DB_FILE}.files"
     77 
     78 echo "Running pycscope"
     79 echo "$PYCSCOPE_EXE -f \"$DB_FILE.temp\" "$PYCSCOPE_ARGS
     80 "$PYCSCOPE_EXE" -f "$DB_FILE.temp" $PYCSCOPE_ARGS
     81 
     82 if [ -d "$PROJECT_ROOT" ]; then
     83     cd "$PREVIOUS_DIR"
     84 fi
     85 
     86 echo "Replacing pycscope DB file"
     87 echo "mv -f \"$DB_FILE.temp\" \"$DB_FILE\""
     88 mv -f "$DB_FILE.temp" "$DB_FILE"
     89 
     90 echo "Unlocking pycscope DB file..."
     91 rm -f "$DB_FILE.lock"
     92 
     93 echo "Done."