mirror of
				https://github.com/hackku21/loc-chain-backend.git
				synced 2025-06-13 12:53:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash -e
 | 
						|
 | 
						|
ENV_NODE="$(which node)"
 | 
						|
ENV_PNPM="$(which pnpm)"
 | 
						|
 | 
						|
LOGO="     _
 | 
						|
    / /\       ______      _        _ _
 | 
						|
   / /  \     |  ____|    | |      | | |
 | 
						|
  / / /\ \    | |__  __  _| |_ ___ | | | ___
 | 
						|
 / / /\ \ \   |  __| \ \/ / __/ _ \| | |/ _ \\
 | 
						|
/ / /  \ \_\  | |____ >  <| || (_) | | | (_) |
 | 
						|
\/_/    \/_/  |______/_/\_\\\__\___/|_|_|\___/
 | 
						|
"
 | 
						|
 | 
						|
# Author: Tasos Latsas
 | 
						|
 | 
						|
# spinner.sh
 | 
						|
#
 | 
						|
# Display an awesome 'spinner' while running your long shell commands
 | 
						|
#
 | 
						|
# Do *NOT* call _spinner function directly.
 | 
						|
# Use {start,stop}_spinner wrapper functions
 | 
						|
 | 
						|
# usage:
 | 
						|
#   1. source this script in your's
 | 
						|
#   2. start the spinner:
 | 
						|
#       start_spinner [display-message-here]
 | 
						|
#   3. run your command
 | 
						|
#   4. stop the spinner:
 | 
						|
#       stop_spinner [your command's exit status]
 | 
						|
#
 | 
						|
# Also see: test.sh
 | 
						|
 | 
						|
 | 
						|
function _spinner() {
 | 
						|
    # $1 start/stop
 | 
						|
    #
 | 
						|
    # on start: $2 display message
 | 
						|
    # on stop : $2 process exit status
 | 
						|
    #           $3 spinner function pid (supplied from stop_spinner)
 | 
						|
 | 
						|
    local on_success="DONE"
 | 
						|
    local on_fail="FAIL"
 | 
						|
    local white="\e[1;37m"
 | 
						|
    local green="\e[1;32m"
 | 
						|
    local red="\e[1;31m"
 | 
						|
    local nc="\e[0m"
 | 
						|
 | 
						|
    case $1 in
 | 
						|
        start)
 | 
						|
            # calculate the column where spinner and status msg will be displayed
 | 
						|
            let column=$(tput cols)-${#2}-8
 | 
						|
            # display message and position the cursor in $column column
 | 
						|
            echo -ne ${2}
 | 
						|
            printf "%${column}s"
 | 
						|
 | 
						|
            # start spinner
 | 
						|
            i=1
 | 
						|
            sp='\|/-'
 | 
						|
            delay=${SPINNER_DELAY:-0.15}
 | 
						|
 | 
						|
            while :
 | 
						|
            do
 | 
						|
                printf "\b${sp:i++%${#sp}:1}"
 | 
						|
                sleep $delay
 | 
						|
            done
 | 
						|
            ;;
 | 
						|
        stop)
 | 
						|
            if [[ -z ${3} ]]; then
 | 
						|
                echo "spinner is not running.."
 | 
						|
                exit 1
 | 
						|
            fi
 | 
						|
 | 
						|
            kill $3 > /dev/null 2>&1
 | 
						|
 | 
						|
            # inform the user uppon success or failure
 | 
						|
            echo -en "\b["
 | 
						|
            if [[ $2 -eq 0 ]]; then
 | 
						|
                echo -en "${green}${on_success}${nc}"
 | 
						|
            else
 | 
						|
                echo -en "${red}${on_fail}${nc}"
 | 
						|
            fi
 | 
						|
            echo -e "]"
 | 
						|
            ;;
 | 
						|
        *)
 | 
						|
            echo "invalid argument, try {start/stop}"
 | 
						|
            exit 1
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
}
 | 
						|
 | 
						|
function start_spinner {
 | 
						|
    # $1 : msg to display
 | 
						|
    _spinner "start" "${1}" &
 | 
						|
    # set global spinner pid
 | 
						|
    _sp_pid=$!
 | 
						|
    disown
 | 
						|
}
 | 
						|
 | 
						|
function stop_spinner {
 | 
						|
    # $1 : command exit status
 | 
						|
    _spinner "stop" $1 $_sp_pid
 | 
						|
    unset _sp_pid
 | 
						|
}
 | 
						|
 | 
						|
function echoRun() {
 | 
						|
  echo ""
 | 
						|
  echo "+ $@"
 | 
						|
  echo ""
 | 
						|
  "$@"
 | 
						|
  echo ""
 | 
						|
}
 | 
						|
 | 
						|
if [ ! -d "./node_modules" ]; then
 | 
						|
  echo "$LOGO"
 | 
						|
  echo "+----------------------------------------+"
 | 
						|
  echo "| Docs: https://extollo.garrettmills.dev |"
 | 
						|
  echo "+----------------------------------------+"
 | 
						|
  echo ""
 | 
						|
  echo "Welcome to Extollo! Let's set things up for the first time..."
 | 
						|
 | 
						|
  if [ ! -x "$ENV_PNPM" ]; then
 | 
						|
    echo "Please install PNPM to use Extollo."
 | 
						|
  fi
 | 
						|
 | 
						|
  echoRun "$ENV_PNPM" i
 | 
						|
 | 
						|
  if [ ! -f "./.env" ]; then
 | 
						|
    echoRun cp example.env .env
 | 
						|
  fi
 | 
						|
 | 
						|
  echo ""
 | 
						|
  echo ""
 | 
						|
  printf "\033[32m✓\033[39m Looks like you're all set up! Run this command again to access the Extollo CLI.\n"
 | 
						|
else
 | 
						|
  start_spinner "Building your app..."
 | 
						|
  "$ENV_PNPM" run build > /dev/null
 | 
						|
  stop_spinner 0
 | 
						|
  "$ENV_NODE" --experimental-repl-await ./lib/cli.js $@
 | 
						|
fi
 |