#!/usr/bin/env bash INPUT_DIR=$1 WILDCARD=${2} OUTPUT_FILE=${3:-"files.txt"} PORT=${4:-8081} echo "Usage: sh serve_local_files.sh INPUT_DIR WILDCARD OUTPUT_FILE PORT" echo "This script scans INPUT_DIR directory with WILDCARD filter [all files by default]," echo "generates OUTPUT_FILE [files.txt by default] with a file list," echo "starts web server on the port PORT [8081 by default] that serves files from INPUT_DIR" echo echo "Scanning ${INPUT_DIR} ..." FIND_CMD="find ${INPUT_DIR} -type f" if [ -z "$WILDCARD" ]; then echo "Files wildcard is not set. Serve all files in ${INPUT_DIR}..." else FIND_CMD="${FIND_CMD} -name ${WILDCARD}" fi echo "Replacing ${INPUT_DIR} to http://localhost:${PORT} ..." INPUT_DIR_ESCAPED=$(printf '%s\n' "$INPUT_DIR" | sed -e 's/[\/&]/\\&/g') eval $FIND_CMD | sed "/${INPUT_DIR_ESCAPED}/s//http:\/\/localhost:${PORT}/" > $OUTPUT_FILE green=`tput setaf 2` reset=`tput sgr0` echo "${green}File list stored in '${OUTPUT_FILE}'. Now import it directly from Label Studio UI${reset}" echo "Running web server on the port ${PORT}" cd $INPUT_DIR python3 -m http.server $PORT