-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathentrypoint.sh
More file actions
119 lines (88 loc) · 3.11 KB
/
entrypoint.sh
File metadata and controls
119 lines (88 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
set -euo pipefail
### generate pgpass file
gen_pgpass="$(find /nix/store -maxdepth 1 -name '*gen-pgpass' -print -quit)"
export PGPASSFILE=/configuration/pgpass
$gen_pgpass
### set libpq env variables
export PGHOST=$(cut -d ":" -f 1 "${PGPASSFILE}")
export PGPORT=$(cut -d ":" -f 2 "${PGPASSFILE}")
export PGDATABASE=$(cut -d ":" -f 3 "${PGPASSFILE}")
user=$(cut -d ":" -f 4 "${PGPASSFILE}")
if [ "$user" != "*" ]; then
export PGUSER=$user
fi;
export CARDANO_NODE_SOCKET_PATH="/node-ipc/node.socket"
WAIT_FOR_NODE_SYNC=$(echo -n "${WAIT_FOR_NODE_SYNC:-}" | tr '[:upper:]' '[:lower:]')
if [[ "${WAIT_FOR_NODE_SYNC,,}" =~ ^(y|yes|1|true)$ ]]; then
until [ -S $CARDANO_NODE_SOCKET_PATH ]; do
echo Waiting for $CARDANO_NODE_SOCKET_PATH
sleep 10
done
DB_MAX_BLOCK=$(psql -h $PGHOST $PGDATABASE -U $PGUSER -t -c 'select max (block_no) from block;')
# Ensure DB_MAX_BLOCK is a valid integer, if not, exit with an error
if ! [[ "$DB_MAX_BLOCK" =~ ^[0-9]+$ ]]; then
echo "Block in db:"$DB_MAX_BLOCK
DB_MAX_BLOCK=0
fi
NODE_CUR_BLOCK=0
while [ $NODE_CUR_BLOCK -lt $DB_MAX_BLOCK ]; do
NODE_STATUS="$(cardano-cli query tip --mainnet 2>/dev/null || true)"
NODE_CUR_BLOCK="$(jq -e -r '.block' <<<"$NODE_STATUS" 2>/dev/null || true)"
echo "Waiting... Sync progress at $NODE_CUR_BLOCK /$DB_MAX_BLOCK"
sleep 10
done
fi
mkdir -p log-dir
if [[ "${DISABLE_LEDGER:-N}" == "Y" ]]; then
LEDGER_OPTS="--disable-ledger"
else
LEDGER_OPTS="--state-dir /var/lib/cexplorer"
fi
### set configuration home based on the network
CONFIG_HOME="/environments"
if [ -z "${NETWORK:-}" ]; then
echo "NETWORK is not set, defaulting to mainnet"
NETWORK="mainnet"
else
IS_NETWORK_ENV_SET="1"
echo "NETWORK is set to $NETWORK"
fi
# Convert NETWORK to lowercase
NETWORK=$(echo "$NETWORK" | tr '[:upper:]' '[:lower:]')
if [ ! -d "$CONFIG_HOME/$NETWORK" ]; then
echo "Invalid network: $NETWORK"
## list known networks
echo "Known networks are:"
ls -1 $CONFIG_HOME
exit 1
fi
DEFAULT_NETWORK_CONFIG="$CONFIG_HOME/$NETWORK/db-sync-config.json"
if [[ -z "${DB_SYNC_CONFIG:-}" ]]; then
DB_SYNC_CONFIG="$DEFAULT_NETWORK_CONFIG"
elif [[ -z "${IS_NETWORK_ENV_SET:-}" ]]; then # dbsync config is set and network is not
DB_SYNC_CONFIG="$DEFAULT_NETWORK_CONFIG"
else ## both NETWORK and DB_SYNC_CONFIG are set
MERGED_CONFIG="$CONFIG_HOME/$NETWORK/merged-config.json"
# take the keys from config file and insert them into the default config
echo 'update_json' "$DB_SYNC_CONFIG" \
"$CONFIG_HOME/$NETWORK" \
"$MERGED_CONFIG"
update_json "$DB_SYNC_CONFIG" \
"$DEFAULT_NETWORK_CONFIG" \
"$MERGED_CONFIG"
DB_SYNC_CONFIG="$MERGED_CONFIG"
fi
SCHEMA_DIR=$(find /nix/store -maxdepth 1 -type d -name '*-schema' -print -quit)
echo '>' cardano-db-sync \
--config "$DB_SYNC_CONFIG" \
--socket-path "$CARDANO_NODE_SOCKET_PATH" \
--schema-dir ${SCHEMA_DIR} \
${LEDGER_OPTS} \
${EXTRA_DB_SYNC_ARGS:-}
exec cardano-db-sync \
--config "$DB_SYNC_CONFIG" \
--socket-path "$CARDANO_NODE_SOCKET_PATH" \
--schema-dir ${SCHEMA_DIR} \
${LEDGER_OPTS} \
${EXTRA_DB_SYNC_ARGS:-}