mirror of
				https://github.com/hackku21/loc-chain-backend.git
				synced 2025-06-13 12:53:59 +00:00 
			
		
		
		
	
		
			
	
	
		
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			141 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #!/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 |