github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/scripts/help_docs.sh (about) 1 #!/bin/bash 2 # 3 # Copyright hechain. All Rights Reserved. 4 # 5 # SPDX-License-Identifier: Apache-2.0 6 # 7 PATH=build/bin/:${PATH} 8 9 # Takes in 4 arguments 10 # 1. Output doc file 11 # 2. Preamble Text File 12 # 3. Postscript File 13 # 4. Array of commands 14 generateHelpText() { 15 local DOC="$1" 16 local preamble="$2" 17 local postscript="$3" 18 # Shift three times to get to array 19 shift 20 shift 21 shift 22 23 cat <<EOF > "$DOC" 24 <!--- 25 File generated by $(basename "$0"). DO NOT EDIT. 26 Please make changes to preamble and postscript wrappers as appropriate. 27 ---> 28 29 EOF 30 cat "$preamble" >> "$DOC" 31 32 local code_delim='```' 33 local commands=("$@") 34 for x in "${commands[@]}" ; do 35 cat <<EOD >> "$DOC" 36 37 ## $x 38 $code_delim 39 $($x --help 2>&1 | sed -E 's/[[:space:]]+$//g') 40 $code_delim 41 42 EOD 43 done 44 45 cat "$postscript" >> "$DOC" 46 } 47 48 checkHelpTextCurrent() { 49 local doc="$1" 50 shift 51 52 local tempfile 53 tempfile="$(mktemp -t "$(basename "$1")".XXXXX)" || exit 1 54 55 generateHelpText "$tempfile" "$@" 56 if ! diff -u "$doc" "$tempfile"; then 57 echo "The command line help docs are out of date and need to be regenerated" 58 exit 2 59 fi 60 61 rm "$tempfile" 62 } 63 64 generateOrCheck() { 65 if [ "$action" == "generate" ]; then 66 generateHelpText "$@" 67 else 68 checkHelpTextCurrent "$@" 69 fi 70 } 71 72 action="${1:-generate}" 73 74 commands=("peer version") 75 generateOrCheck \ 76 docs/source/commands/peerversion.md \ 77 docs/wrappers/peer_version_preamble.md \ 78 docs/wrappers/license_postscript.md \ 79 "${commands[@]}" 80 81 commands=("peer chaincode install" "peer chaincode instantiate" "peer chaincode invoke" "peer chaincode list" "peer chaincode package" "peer chaincode query" "peer chaincode signpackage" "peer chaincode upgrade") 82 generateOrCheck \ 83 docs/source/commands/peerchaincode.md \ 84 docs/wrappers/peer_chaincode_preamble.md \ 85 docs/wrappers/peer_chaincode_postscript.md \ 86 "${commands[@]}" 87 88 commands=("peer lifecycle" "peer lifecycle chaincode" "peer lifecycle chaincode package" "peer lifecycle chaincode install" "peer lifecycle chaincode queryinstalled" "peer lifecycle chaincode getinstalledpackage" "peer lifecycle chaincode calculatepackageid" "peer lifecycle chaincode approveformyorg" "peer lifecycle chaincode queryapproved" "peer lifecycle chaincode checkcommitreadiness" "peer lifecycle chaincode commit" "peer lifecycle chaincode querycommitted") 89 generateOrCheck \ 90 docs/source/commands/peerlifecycle.md \ 91 docs/wrappers/peer_lifecycle_chaincode_preamble.md \ 92 docs/wrappers/peer_lifecycle_chaincode_postscript.md \ 93 "${commands[@]}" 94 95 commands=("peer channel" "peer channel create" "peer channel fetch" "peer channel getinfo" "peer channel join" "peer channel joinbysnapshot" "peer channel joinbysnapshotstatus" "peer channel list" "peer channel signconfigtx" "peer channel update") 96 generateOrCheck \ 97 docs/source/commands/peerchannel.md \ 98 docs/wrappers/peer_channel_preamble.md \ 99 docs/wrappers/peer_channel_postscript.md \ 100 "${commands[@]}" 101 102 commands=("peer node pause" "peer node rebuild-dbs" "peer node reset" "peer node resume" "peer node rollback" "peer node start" "peer node unjoin" "peer node upgrade-dbs") 103 generateOrCheck \ 104 docs/source/commands/peernode.md \ 105 docs/wrappers/peer_node_preamble.md \ 106 docs/wrappers/peer_node_postscript.md \ 107 "${commands[@]}" 108 109 commands=("peer snapshot cancelrequest" "peer snapshot listpending" "peer snapshot submitrequest") 110 generateOrCheck \ 111 docs/source/commands/peersnapshot.md \ 112 docs/wrappers/peer_snapshot_preamble.md \ 113 docs/wrappers/peer_snapshot_postscript.md \ 114 "${commands[@]}" 115 116 commands=("configtxgen") 117 generateOrCheck \ 118 docs/source/commands/configtxgen.md \ 119 docs/wrappers/configtxgen_preamble.md \ 120 docs/wrappers/configtxgen_postscript.md \ 121 "${commands[@]}" 122 123 commands=("cryptogen help" "cryptogen generate" "cryptogen showtemplate" "cryptogen extend" "cryptogen version") 124 generateOrCheck \ 125 docs/source/commands/cryptogen.md \ 126 docs/wrappers/cryptogen_preamble.md \ 127 docs/wrappers/cryptogen_postscript.md \ 128 "${commands[@]}" 129 130 commands=("configtxlator start" "configtxlator proto_encode" "configtxlator proto_decode" "configtxlator compute_update" "configtxlator version") 131 generateOrCheck \ 132 docs/source/commands/configtxlator.md \ 133 docs/wrappers/configtxlator_preamble.md \ 134 docs/wrappers/configtxlator_postscript.md \ 135 "${commands[@]}" 136 137 commands=("osnadmin channel" "osnadmin channel join" "osnadmin channel list" "osnadmin channel remove") 138 generateOrCheck \ 139 docs/source/commands/osnadminchannel.md \ 140 docs/wrappers/osnadmin_channel_preamble.md \ 141 docs/wrappers/osnadmin_channel_postscript.md \ 142 "${commands[@]}" 143 144 commands=("ledgerutil compare") 145 generateOrCheck \ 146 docs/source/commands/ledgerutil.md \ 147 docs/wrappers/ledgerutil_preamble.md \ 148 docs/wrappers/ledgerutil_postscript.md \ 149 "${commands[@]}" 150 151 exit