You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
#!/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
|