277 lines
6.3 KiB
Bash
Executable File
277 lines
6.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
_nesto_dir="$(dirname $(readlink -f $0))"
|
|
#echo "$_nesto_dir/types.sh"
|
|
source "$_nesto_dir/types.sh"
|
|
|
|
_model="$(dirname $0)/model.awk"
|
|
|
|
echo args: $0 $@
|
|
|
|
#source easyoptions
|
|
|
|
_DB="$1"
|
|
|
|
|
|
# sawk '$name=/dig$/i'
|
|
# sawk dig
|
|
# sawk '$num>150'
|
|
search()
|
|
{
|
|
autoload
|
|
DB=~/dev/nesto/DB
|
|
|
|
# Find if 1st arg is a number
|
|
case $1 in
|
|
''|*[!0-9]*) re=$1 ;;
|
|
*) re="^$1 " ;;
|
|
esac
|
|
|
|
columns="$(for col in ${@:2}; do printf "\$$col," | sed 's/%.*,//'; done | sed 's/,$//')"
|
|
# columns=$(echo ${@:2} | awk 'BEGIN{RS=" ";ORS=",o"}{ print "$"$0 }')
|
|
echo "(${@:2})"
|
|
echo "[$columns]"
|
|
format="$(for col in ${@:2}; do printf "cpurple f$col\" \""; done)"
|
|
echo "{$format}"
|
|
echo $($_model $DB)" NR > 1 && /$re/i {printf $format, $columns}" $vmdb
|
|
awk "$($_model $DB) NR > 1 && tolower(\$0) ~ /$re/ {printf $format\"\\n\", $columns}" cpurple=$c_purple c=$c_ $vmdb
|
|
#'{printf "%-10s %-30s %-10s\n", cp $1, cs $2, c ct $4 c }' cs=$c_status ct=$c_type cp=$c_purple cg=$c_green gr=$c_white cd=$c_dark c=$c_
|
|
|
|
}
|
|
|
|
each()
|
|
{
|
|
Object arr=$(exp $1)
|
|
String tpl="$(printf "$2" | sed 's/"/\"/')"
|
|
# debug arr tpl
|
|
for i in "${!arr[@]}"; do eval "echo -ne \"$tpl\""; done
|
|
}
|
|
#tests=(aze qsd wxc)
|
|
|
|
#each tests '
|
|
# $i) $c_cyan${tests[$i]}$c_'
|
|
|
|
c0=$c_light$c_black
|
|
|
|
Map status_icons=([running]=⚫ [stopped]=⚪ [template]="☢️ " )
|
|
#[other]="✔️☑️🔘⚪⚫🔴🔵🔺🔻🔸🔹🔶🔷🔳🔲▪️▫️◾◽◼️⬛⬜☢️📻⏰⌛️⏳📡🔋🔌💡💰🔧🔑✉️📩📨📧💌📥📤📦📜📃📄📑📊📈📉📆📅📇📋📁📂📰📓📔📚📖🔖🔗📎📐📏📌📍📝🔍🔎🔏🔐🔒🔓🎭🎨🎬🎤🎧🎼🎹🎷🎺🎸🎻🎲♟🎯🎮🔈🔇🔉🔊🔔🔕📣📢💬💭♠️♣️♥️♦️" )
|
|
Map status_colors=([running]=$c_green [stopped]=$c_dark$c_red [template]=$c_yellow )
|
|
|
|
|
|
tester()
|
|
{
|
|
# eval "declare -A vm="${1#*=}
|
|
Map vm=$1
|
|
Array domains=${vm[domains]}
|
|
debug vm domains
|
|
echo -e "$c0
|
|
┌───┤ ${status_colors[${vm[status]}]}${status_icons[${vm[status]}]}$c0${c_light}VM n°$c_purple${vm[num]}$c0 ├────────────────────┐
|
|
│ │
|
|
│ VM n°$c_red${vm[num]}$c0
|
|
│ Name: $c_green${vm[name]}$c0
|
|
│ Status: ${status_colors[${vm[status]}]}${vm[status]}$c0
|
|
│ Type: $c_yellow${vm[type]}$c0
|
|
│ Domains: $(each domains '
|
|
│ $i) $c_cyan${domains[$i]}$c0'
|
|
)
|
|
│ │
|
|
└─────────────────────────────────────┘
|
|
"$c_
|
|
}
|
|
|
|
inter()
|
|
{
|
|
Map vm=$1
|
|
Array domains=${vm[domains]}
|
|
debug vm domains
|
|
|
|
whiptail --title "VM n°${vm[num]}" \
|
|
--msgbox " │
|
|
VM n°$c_red${vm[num]}
|
|
Name: $c_green${vm[name]}
|
|
Status: ${vm[status]}
|
|
Type: ${vm[type]}
|
|
Domains: $(each domains '
|
|
$i) ${domains[$i]}'
|
|
)
|
|
" 16 78
|
|
#--menu "Search for 'dig' \nMatched Vm(s)" 16 78 10 aze "" qsd "" wxc ""
|
|
}
|
|
|
|
compact()
|
|
{
|
|
Map vm=$1
|
|
Array domains=${vm[domains]}
|
|
# debug vm domains
|
|
local c0=${status_colors[${vm[status]}]}
|
|
echo -e "$c0$c_light${status_colors[${vm[status]}]}${status_icons[${vm[status]}]}$c0$c_purple${vm[num]}$c0 $(printf '%-30s' "${vm[name]}") $c_yellow${vm[type]}"$c_
|
|
|
|
}
|
|
|
|
|
|
_VM()
|
|
{
|
|
printf "([num]=$1 [name]=$2 [status]=$3 [type]=$4)"
|
|
}
|
|
array2map "(num* name status type)" "(111 dig-docker running KVM)"
|
|
model=(key* value)
|
|
array2map "`exp model`" "(active true)"
|
|
|
|
#alias VM='declare -A '
|
|
#VM vm_temp= "(111 dig-docker running KVM)"
|
|
|
|
sVM="111 dig-docker running KVM"
|
|
_VM 111 dig-docker running KVM
|
|
_VM $sVM
|
|
Map vm1=`_VM $sVM`
|
|
exp vm1
|
|
|
|
|
|
echo ho ho ho nesto
|
|
|
|
_db2array()
|
|
{
|
|
local sArr="($(awk '$0 !~ /^#!/ {printf "\"%s\" ",$0}' $1))"
|
|
# debug sArr
|
|
Array lines=$sArr
|
|
# debug lines
|
|
# debug lines[0]
|
|
# Map cols=${arr[0]}
|
|
# debug cols
|
|
# echo "${lines[0]}"
|
|
Array columns_line=(${lines[0]})
|
|
# debug columns_line
|
|
Array columns_order=()
|
|
for i in ${!columns_line[@]}
|
|
do
|
|
# echo "(${columns_line[$i]})"
|
|
Object field="(${columns_line[$i]})"
|
|
# exp field
|
|
# echo ${!field[@]}
|
|
columns_order[$i]=${!field[@]}
|
|
done
|
|
Map columns="(${lines[0]})"
|
|
columns[_order]="(${columns_order[@]})"
|
|
# eval "Map cols=( ${_columns_line[@]} )"
|
|
# debug columns columns_order
|
|
Array DB=("`exp columns`")
|
|
for line in "${lines[@]:1}"
|
|
do
|
|
line=$(echo "$line" | sed 's/(/"(/' | sed 's/)/)"/')
|
|
Object item=$(array2map "${columns[_order]}" "(${line})")
|
|
# debug item
|
|
DB+=("$(exp item)")
|
|
done
|
|
# debug DB
|
|
exp DB
|
|
}
|
|
|
|
render()
|
|
{
|
|
_db2array $_nesto_dir/new-test.db
|
|
Array DB1=$(_db2array $_nesto_dir/new-test.db)
|
|
debug DB1
|
|
|
|
for i in ${!DB1[@]}
|
|
do
|
|
[[ $i == 0 ]] && continue
|
|
# Map first=${DB1[$i]}
|
|
# debug first
|
|
$1 "${DB1[$i]}"
|
|
done
|
|
}
|
|
|
|
create()
|
|
{
|
|
fields=($@)
|
|
echo $0 laaaa
|
|
#eval ``
|
|
# echo "#!/home/dig/dev/nesto/nesto"
|
|
echo "#!/usr/bin/env nestor"
|
|
for i in ${!fields[@]}
|
|
do
|
|
case ${fields[$i]} in
|
|
\[*\]) printf %s "${fields[$i]}= " ;;
|
|
\[*) printf %s "${fields[$i]} " ;;
|
|
[^[]*) printf %s "[${fields[$i]}]= " ;;
|
|
[^[\]]=*) printf "[%s]=%s " "$(echo ${fields[$i]} | awk -F= '{print $1}')" "$(echo ${fields[$i]} | awk -F= '{print $1}')" ;;
|
|
*) printf %s "[errors]=\"(\\\"Field not well formated: ${fields[$i]}\\\")\" " ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
show()
|
|
{
|
|
if [ -n $DB ]
|
|
then
|
|
cat $DB
|
|
fi
|
|
}
|
|
|
|
add()
|
|
{
|
|
Array items=("$@")
|
|
exp items
|
|
for arg in "$@"
|
|
do
|
|
Object item=$arg #{items[$i]}
|
|
Array aItem=()
|
|
exp item
|
|
for col in "${columns[@]}"
|
|
do
|
|
local val="${item[$col]}"
|
|
[[ -z "$val" ]] && val="-"
|
|
aItem+="$val "
|
|
done
|
|
exp aItem
|
|
echo "${aItem[@]}" >> $DB
|
|
done
|
|
}
|
|
|
|
[[ -t 1 ]] && isPiped="" || isPiped=true
|
|
hasPipe=""
|
|
pipe=""
|
|
|
|
if [ -t 0 ]; then
|
|
echo running interactivelly
|
|
else
|
|
hasPipe=true
|
|
read -d \0 pipe
|
|
fi
|
|
debug isPiped hasPipe pipe
|
|
|
|
Array args=()
|
|
for arg in "$@"
|
|
do
|
|
args+=("$arg")
|
|
done
|
|
|
|
debug args
|
|
|
|
#Array args=($@)
|
|
DB=""
|
|
[[ -r $1 ]] && echo "in db" || echo direct
|
|
|
|
if [ -r $1 ]
|
|
then
|
|
DB=$args
|
|
args=("${args[@]:1}")
|
|
|
|
_columns_line=($(cat $DB | awk 'NR==2{print $0" "}'))
|
|
Array columns=()
|
|
for i in ${!_columns_line[@]}
|
|
do
|
|
Object field="(${_columns_line[$i]})"
|
|
# exp field
|
|
# echo ${!field[@]}
|
|
columns[$i]=${!field[@]}
|
|
done
|
|
eval "Map cols=( ${_columns_line[@]} )"
|
|
debug columns cols
|
|
fi
|
|
debug args
|
|
|
|
echo calling: ${args[0]} ${args[@]:1}
|
|
|
|
${args[0]} "${args[@]:1}"
|