Тестирование форматирования и lsp bash, python в nvchad

This commit is contained in:
Виталий Туров 2025-01-03 16:10:17 +03:00
parent 78b1633710
commit 349f4ae79e
3 changed files with 67 additions and 67 deletions

View File

@ -5,79 +5,79 @@ rm -f response
mkfifo response mkfifo response
function handle_GET_home() { function handle_GET_home() {
RESPONSE=$(cat home.html | RESPONSE=$(cat home.html |
sed "s/{{$COOKIE_NAME}}/$COOKIE_VALUE/") sed "s/{{$COOKIE_NAME}}/$COOKIE_VALUE/")
} }
function handle_GET_login() { function handle_GET_login() {
RESPONSE=$(cat login.html) RESPONSE=$(cat login.html)
} }
function handle_POST_login() { function handle_POST_login() {
RESPONSE=$(cat post-login.http | RESPONSE=$(cat post-login.http |
sed "s/{{cookie_name}}/$INPUT_NAME/" | sed "s/{{cookie_name}}/$INPUT_NAME/" |
sed "s/{{cookie_value}}/$INPUT_VALUE/") sed "s/{{cookie_value}}/$INPUT_VALUE/")
} }
function handle_POST_logout() { function handle_POST_logout() {
RESPONSE=$(cat post-logout.http | RESPONSE=$(cat post-logout.http |
sed "s/{{cookie_name}}/$COOKIE_NAME/" | sed "s/{{cookie_name}}/$COOKIE_NAME/" |
sed "s/{{cookie_value}}/$COOKIE_VALUE/") sed "s/{{cookie_value}}/$COOKIE_VALUE/")
} }
function handle_not_found() { function handle_not_found() {
RESPONSE=$(cat 404.html) RESPONSE=$(cat 404.html)
} }
function handleRequest() { function handleRequest() {
## Read request ## Read request
while read line; do while read line; do
echo $line echo "$line"
trline=$(echo $line | tr -d '[\r\n]') trline=$(echo "$line" | tr -d '[\r\n]')
[ -z "$trline" ] && break [ -z "$trline" ] && break
HEADLINE_REGEX='(.*?)\s(.*?)\sHTTP.*?' HEADLINE_REGEX='(.*?)\s(.*?)\sHTTP.*?'
[[ "$trline" =~ $HEADLINE_REGEX ]] && [[ "$trline" =~ $HEADLINE_REGEX ]] &&
REQUEST=$(echo $trline | sed -E "s/$HEADLINE_REGEX/\1 \2/") REQUEST=$(echo "$trline" | sed -E "s/$HEADLINE_REGEX/\1 \2/")
CONTENT_LENGTH_REGEX='Content-Length:\s(.*?)' CONTENT_LENGTH_REGEX='Content-Length:\s(.*?)'
[[ "$trline" =~ $CONTENT_LENGTH_REGEX ]] && [[ "$trline" =~ $CONTENT_LENGTH_REGEX ]] &&
CONTENT_LENGTH=$(echo $trline | sed -E "s/$CONTENT_LENGTH_REGEX/\1/") CONTENT_LENGTH=$(echo "$trline" | sed -E "s/$CONTENT_LENGTH_REGEX/\1/")
COOKIE_REGEX='Cookie:\s(.*?)\=(.*?).*?' COOKIE_REGEX='Cookie:\s(.*?)\=(.*?).*?'
[[ "$trline" =~ $COOKIE_REGEX ]] && [[ "$trline" =~ $COOKIE_REGEX ]] &&
read COOKIE_NAME COOKIE_VALUE <<<$(echo $trline | sed -E "s/$COOKIE_REGEX/\1 \2/") read COOKIE_NAME COOKIE_VALUE <<<$(echo "$trline" | sed -E "s/$COOKIE_REGEX/\1 \2/")
done
## Read body
if [ ! -z "$CONTENT_LENGTH" ]; then
BODY_REGEX='(.*?)=(.*?)'
while read -n$CONTENT_LENGTH -t1 line; do
echo $line
trline=$(echo $line | tr -d '[\r\n]')
[ -z "$trline" ] && break
read INPUT_NAME INPUT_VALUE <<<$(echo $trline | sed -E "s/$BODY_REGEX/\1 \2/")
done done
fi
## Route to the response handlers ## Read body
case "$REQUEST" in if [ ! -z "$CONTENT_LENGTH" ]; then
"GET /login") handle_GET_login ;; BODY_REGEX='(.*?)=(.*?)'
"GET /") handle_GET_home ;;
"POST /login") handle_POST_login ;;
"POST /logout") handle_POST_logout ;;
*) handle_not_found ;;
esac
echo -e "$RESPONSE" >response while read -n"$CONTENT_LENGTH" -t1 line; do
echo "$line"
trline=$(echo "$line" | tr -d '[\r\n]')
[ -z "$trline" ] && break
read INPUT_NAME INPUT_VALUE <<<$(echo "$trline" | sed -E "s/$BODY_REGEX/\1 \2/")
done
fi
## Route to the response handlers
case "$REQUEST" in
"GET /login") handle_GET_login ;;
"GET /") handle_GET_home ;;
"POST /login") handle_POST_login ;;
"POST /logout") handle_POST_logout ;;
*) handle_not_found ;;
esac
echo -e "$RESPONSE" >response
} }
echo 'Listening on 3000...' echo 'Listening on 3000...'
while true; do while true; do
cat response | nc -lN 3000 | handleRequest cat response | nc -lN 3000 | handleRequest
done done

View File

@ -2,37 +2,36 @@
CpArray_Mac() { CpArray_Mac() {
# Оператор Присваивания # Оператор Присваивания
echo -n 'eval ' echo -n 'eval '
echo -n "$2" # Имя массива-результата echo -n "$2" # Имя массива-результата
echo -n '=( ${' echo -n '=( ${'
echo -n "$1" # Имя исходного массива echo -n "$1" # Имя исходного массива
echo -n '[@]} )' echo -n '[@]} )'
# Все это могло бы быть объединено в одну команду. # Все это могло бы быть объединено в одну команду.
# Это лишь вопрос стиля. # Это лишь вопрос стиля.
} }
declare -f CopyArray # "Указатель" на функцию declare -f CopyArray # "Указатель" на функцию
CopyArray=CpArray_Mac # Оператор Присваивания CopyArray=CpArray_Mac # Оператор Присваивания
Hype() Hype() {
{
# Исходный массив с именем в $1. # Исходный массив с именем в $1.
# (Слить с массивом, содержащим "-- Настоящий Рок-н-Ролл".) # (Слить с массивом, содержащим "-- Настоящий Рок-н-Ролл".)
# Вернуть результат в массиве с именем $2. # Вернуть результат в массиве с именем $2.
local -a TMP local -a TMP
local -a hype=( -- Настоящий Рок-н-Ролл ) local -a hype=(-- Настоящий Рок-н-Ролл)
$($CopyArray $1 TMP) $($CopyArray "$1" TMP)
TMP=( ${TMP[@]} ${hype[@]} ) TMP=(${TMP[@]} ${hype[@]})
$($CopyArray TMP $2) $($CopyArray TMP "$2")
} }
declare -a before=( Advanced Bash Scripting ) declare -a before=(Advanced Bash Scripting)
declare -a after declare -a after
echo "Массив before = ${before[@]}" echo "Массив before = ${before[@]}"
@ -45,7 +44,7 @@ echo "Массив after = ${after[@]}"
echo "Что такое ${after[@]:4:2}?" echo "Что такое ${after[@]:4:2}?"
declare -a modest=( ${after[@]:2:1} ${after[@]:3:3} ) declare -a modest=(${after[@]:2:1} ${after[@]:3:3})
# ---- выделение подстроки ---- # ---- выделение подстроки ----
echo "Массив Modest = ${modest[@]}" echo "Массив Modest = ${modest[@]}"

View File

@ -1,6 +1,7 @@
#!/usr/bin/python3 #!/usr/bin/python3
import os, sys import os
import sys
ret = os.fork() ret = os.fork()
if ret == 0: if ret == 0: