mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
129 lines
3.2 KiB
Bash
Executable File
129 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Define the build path.
|
|
build_path=$1
|
|
if [ -z "$build_path" ]; then
|
|
echo "Build path variable is not defined. Exiting..."
|
|
exit 1
|
|
fi
|
|
reth_path=./$build_path/debug/reth
|
|
echo "Using reth path: $reth_path (build path: $build_path)"
|
|
|
|
# Define the path to the JSON configuration file.
|
|
json_file="./book/cli/config.json"
|
|
echo "Using config file: $json_file"
|
|
|
|
# Read commands from JSON configuration file.
|
|
read_cmds_from_json() {
|
|
local json_file="$1"
|
|
jq -r '.commands | keys[]' "$json_file"
|
|
}
|
|
|
|
# Read subcommands for a given command from JSON configuration file.
|
|
read_subcmds_from_json() {
|
|
local json_file="$1"
|
|
local cmd="$2"
|
|
jq -r ".commands[\"$cmd\"] | if type == \"object\" then keys[] else .[] end" "$json_file"
|
|
}
|
|
|
|
# Read subsubcommands for a given command and subcommand from JSON configuration file.
|
|
read_subsubcmds_from_json() {
|
|
local json_file="$1"
|
|
local cmd="$2"
|
|
local subcmd="$3"
|
|
jq -r ".commands[\"$cmd\"][\"$subcmd\"][]" "$json_file"
|
|
}
|
|
|
|
# Update the main documentation.
|
|
update_main_doc() {
|
|
local file_path="./book/cli/cli.md"
|
|
local cmd_help_output=$($reth_path --help)
|
|
sed -i -e '/## Commands/,$d' "$file_path"
|
|
cat >> "$file_path" << EOF
|
|
## Commands
|
|
|
|
\`\`\`bash
|
|
$ reth --help
|
|
$cmd_help_output
|
|
\`\`\`
|
|
EOF
|
|
}
|
|
|
|
# Update any `reth` command documentation.
|
|
update_cli_cmd() {
|
|
local cmd="$1"
|
|
local subcmds=("${@:2}")
|
|
echo "reth $cmd"
|
|
|
|
local cmd_help_output=$($reth_path "$cmd" --help)
|
|
local description=$(echo "$cmd_help_output" | head -n 1)
|
|
cat > "./book/cli/$cmd.md" << EOF
|
|
# \`reth $cmd\`
|
|
|
|
$(if [[ -n "$description" ]]; then echo "$description"; fi)
|
|
|
|
\`\`\`bash
|
|
$ reth $cmd --help
|
|
$(echo "$cmd_help_output" | sed '1d')
|
|
\`\`\`
|
|
EOF
|
|
|
|
for subcmd in "${subcmds[@]}"; do
|
|
echo " ├── $subcmd"
|
|
|
|
local subcmd_help_output=$($reth_path "$cmd" "$subcmd" --help)
|
|
local subcmd_description=$(echo "$subcmd_help_output" | head -n 1)
|
|
cat >> "book/cli/$cmd.md" << EOF
|
|
|
|
## \`reth $cmd $subcmd\`
|
|
|
|
$(if [[ -n "$subcmd_description" ]]; then echo "$subcmd_description"; fi)
|
|
|
|
\`\`\`bash
|
|
$ reth $cmd $subcmd --help
|
|
$(echo "$subcmd_help_output" | sed '1d')
|
|
\`\`\`
|
|
EOF
|
|
|
|
# Read subsubcommands and update documentation
|
|
subsubcmds=($(read_subsubcmds_from_json "$json_file" "$cmd" "$subcmd"))
|
|
for subsubcmd in "${subsubcmds[@]}"; do
|
|
echo " ├── $subsubcmd"
|
|
|
|
local subsubcmd_help_output=$($reth_path "$cmd" "$subcmd" "$subsubcmd" --help)
|
|
local subsubcmd_description=$(echo "$subsubcmd_help_output" | head -n 1)
|
|
cat >> "book/cli/$cmd.md" << EOF
|
|
|
|
### \`reth $cmd $subcmd $subsubcmd\`
|
|
|
|
$(if [[ -n "$subsubcmd_description" ]]; then echo "$subsubcmd_description"; fi)
|
|
|
|
\`\`\`bash
|
|
$ reth $cmd $subcmd $subsubcmd --help
|
|
$(echo "$subsubcmd_help_output" | sed '1d')
|
|
\`\`\`
|
|
EOF
|
|
done
|
|
done
|
|
}
|
|
|
|
# Update the book CLI documentation.
|
|
main() {
|
|
update_main_doc
|
|
|
|
# Update commands doc.
|
|
cmds=($(read_cmds_from_json "$json_file"))
|
|
for cmd in "${cmds[@]}"; do
|
|
subcmds=($(read_subcmds_from_json "$json_file" "$cmd"))
|
|
update_cli_cmd "$cmd" "${subcmds[@]}"
|
|
done
|
|
|
|
# Update default paths on both Linux and macOS to avoid triggering the CI.
|
|
sed -i -e 's/default: \/.*\/reth\//default: \/reth\//g' ./book/cli/*.md
|
|
rm ./book/cli/*.md-e
|
|
|
|
echo "Book updated successfully."
|
|
}
|
|
|
|
main
|