Files
lighthouse/scripts/cli.sh
2023-10-19 07:46:57 +08:00

109 lines
2.7 KiB
Bash
Executable File

#! /usr/bin/env bash
# A function to generate formatted .md files
write_to_file() {
local cmd="$1"
local file="$2"
local program="$3"
# Remove first line of cmd to get rid of commit specific numbers.
cmd=${cmd#*$'\n'}
# We need to add the header and the backticks to create the code block.
printf "# %s\n\n\`\`\`\n%s\n\`\`\`" "$program" "$cmd" > "$file"
}
# Check if a lighthouse binary exists in the current branch.
# -f means check if the file exists, to see all options, type "bash test" in a terminal
release=./target/release/lighthouse
debug=./target/debug/lighthouse
if [[ -f "$release" ]]; then
CMD="$release"
elif [[ -f "$debug" ]]; then
CMD="$debug"
else
# No binary exists, build it.
cargo build --locked
CMD="$debug"
fi
# Store all help strings in variables.
general_cli=$($CMD --help)
bn_cli=$($CMD bn --help)
vc_cli=$($CMD vc --help)
am_cli=$($CMD am --help)
vm_cli=$($CMD vm --help)
general=./help_general.md
bn=./help_bn.md
vc=./help_vc.md
am=./help_am.md
vm=./help_vm.md
# create .md files
write_to_file "$general_cli" "$general" "Lighthouse General Commands"
write_to_file "$bn_cli" "$bn" "Beacon Node"
write_to_file "$vc_cli" "$vc" "Validator Client"
write_to_file "$am_cli" "$am" "Account Manager"
write_to_file "$vm_cli" "$vm" "Validator Manager"
#input 1 = $1 = old files; input 2 = $2 = new files
old_files=(./book/src/help_general.md ./book/src/help_bn.md ./book/src/help_vc.md ./book/src/help_am.md ./book/src/help_vm.md)
new_files=($general $bn $vc $am $vm)
# store for troubleshooting purpose
exist=()
update=()
diff=()
# function to check
check() {
if [[ -f $1 ]]; then # check for existence of file
diff=$(diff $1 $2)
diff+=($diff)
exist+=(false)
else
cp $2 ./book/src
changes=true
exist+=(true)
echo "$1 is not found, it has just been created"
fi
if [[ -z $diff ]]; then # check for difference
update+=(false)
return 1 # exit a function (i.e., do nothing)
else
cp $2 $1
changes=true
update+=(true)
fi
}
# define changes as false
changes=false
# call check function to check for each help file
check ${old_files[0]} ${new_files[0]}
check ${old_files[1]} ${new_files[1]}
check ${old_files[2]} ${new_files[2]}
check ${old_files[3]} ${new_files[3]}
check ${old_files[4]} ${new_files[4]}
# remove help files
rm -f help_general.md help_bn.md help_vc.md help_am.md help_vm.md
# used for troubleshooting to show status
echo "exist = ${exist[@]}"
echo "update = ${update[@]}"
echo "difference = ${diff[@]}"
# only exit at the very end
if [[ $changes == true ]]; then
echo "CLI parameters are not up to date. Run \"make cli\" to update, then commit the changes"
exit 1
else
echo "CLI parameters are up to date."
exit 0
fi