mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 09:53:47 +01:00
script: add script to generate example bitcoin.conf
this ensures bitcoind option help is the source of truth and also gives an example conf file for users to customize and copy to their data directory. closes #10746
This commit is contained in:
parent
b483084d86
commit
1c7e820ded
83
contrib/devtools/gen-bitcoin-conf.sh
Executable file
83
contrib/devtools/gen-bitcoin-conf.sh
Executable file
@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2021 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
export LC_ALL=C
|
||||
TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}
|
||||
BUILDDIR=${BUILDDIR:-$TOPDIR}
|
||||
BINDIR=${BINDIR:-$BUILDDIR/src}
|
||||
BITCOIND=${BITCOIND:-$BINDIR/bitcoind}
|
||||
SHARE_EXAMPLES_DIR=${SHARE_EXAMPLES_DIR:-$TOPDIR/share/examples}
|
||||
EXAMPLE_CONF_FILE=${EXAMPLE_CONF_FILE:-$SHARE_EXAMPLES_DIR/bitcoin.conf}
|
||||
|
||||
[ ! -x "$BITCOIND" ] && echo "$BITCOIND not found or not executable." && exit 1
|
||||
|
||||
DIRTY=""
|
||||
VERSION_OUTPUT=$($BITCOIND --version)
|
||||
if [[ $VERSION_OUTPUT == *"dirty"* ]]; then
|
||||
DIRTY="${DIRTY}${BITCOIND}\n"
|
||||
fi
|
||||
|
||||
if [ -n "$DIRTY" ]
|
||||
then
|
||||
echo -e "WARNING: $BITCOIND was built from a dirty tree.\n"
|
||||
echo -e "To safely generate a bitcoin.conf file, please commit your changes to $BITCOIND, rebuild, then run this script again.\n"
|
||||
fi
|
||||
|
||||
echo 'Generating example bitcoin.conf file in share/examples/'
|
||||
|
||||
# create the directory, if it doesn't exist
|
||||
mkdir -p "${SHARE_EXAMPLES_DIR}"
|
||||
|
||||
# create the header text
|
||||
cat > "${EXAMPLE_CONF_FILE}" << 'EOF'
|
||||
##
|
||||
## bitcoin.conf configuration file.
|
||||
## Generated by contrib/devtools/gen-bitcoin-conf.sh.
|
||||
##
|
||||
## Lines beginning with # are comments.
|
||||
## All possible configuration options are provided. To use, copy this file
|
||||
## to your data directory (default or specified by -datadir), uncomment
|
||||
## options you would like to change, and save the file.
|
||||
##
|
||||
|
||||
|
||||
### Options
|
||||
EOF
|
||||
|
||||
# parse the output from bitcoind --help
|
||||
# adding newlines is a bit funky to ensure portability for BSD
|
||||
# see here for more details: https://stackoverflow.com/a/24575385
|
||||
${BITCOIND} --help \
|
||||
| sed '1,/Print this help message and exit/d' \
|
||||
| sed -E 's/^[[:space:]]{2}\-/#/' \
|
||||
| sed -E 's/^[[:space:]]{7}/# /' \
|
||||
| sed -E '/[=[:space:]]/!s/#.*$/&=1/' \
|
||||
| awk '/^#[a-z]/{x=$0;next}{if (NF==0) print x"\n",x="";else print}' \
|
||||
| sed 's,\(^[[:upper:]].*\)\:$,\
|
||||
### \1,' \
|
||||
| sed 's/[[:space:]]*$//' >> "${EXAMPLE_CONF_FILE}"
|
||||
|
||||
# create the footer text
|
||||
cat >> "${EXAMPLE_CONF_FILE}" << 'EOF'
|
||||
|
||||
# [Sections]
|
||||
# Most options will apply to all networks. To confine an option to a specific
|
||||
# network, add it under the relevant section below.
|
||||
#
|
||||
# Note: If not specified under a network section, the options addnode, connect,
|
||||
# port, bind, rpcport, rpcbind, and wallet will only apply to mainnet.
|
||||
|
||||
# Options for mainnet
|
||||
[main]
|
||||
|
||||
# Options for testnet
|
||||
[test]
|
||||
|
||||
# Options for signet
|
||||
[signet]
|
||||
|
||||
# Options for regtest
|
||||
[regtest]
|
||||
EOF
|
Loading…
Reference in New Issue
Block a user