| 
									
										
										
										
											2022-07-06 12:11:13 +02:00
										 |  |  | #!/usr/bin/env zsh | 
					
						
							| 
									
										
										
										
											2020-05-25 18:42:00 +09:00
										 |  |  | PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$HOME/bin | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | HOSTNAME=$(hostname) | 
					
						
							| 
									
										
										
										
											2022-03-19 15:44:00 +00:00
										 |  |  | LOCATION=$(hostname|cut -d . -f2) | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  | LOCKFILE="${HOME}/lock" | 
					
						
							|  |  |  | REF=$(echo "${1:=origin/master}"|sed -e 's!:!/!') | 
					
						
							| 
									
										
										
										
											2020-05-25 18:42:00 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  | # get rpc credentials | 
					
						
							|  |  |  | BITCOIN_RPC_USER=$(grep '^rpcuser' /bitcoin/bitcoin.conf | cut -d '=' -f2) | 
					
						
							|  |  |  | BITCOIN_RPC_PASS=$(grep '^rpcpassword' /bitcoin/bitcoin.conf | cut -d '=' -f2) | 
					
						
							|  |  |  | ELEMENTS_RPC_USER=$(grep '^rpcuser' /elements/elements.conf | cut -d '=' -f2) | 
					
						
							|  |  |  | ELEMENTS_RPC_PASS=$(grep '^rpcpassword' /elements/elements.conf | cut -d '=' -f2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-26 22:07:46 +02:00
										 |  |  | # get mysql credentials | 
					
						
							| 
									
										
										
										
											2023-01-08 12:56:27 +09:00
										 |  |  | MYSQL_CRED_FILE=${HOME}/.mysql_credentials | 
					
						
							| 
									
										
										
										
											2022-08-27 15:52:42 +02:00
										 |  |  | if [ -f "${MYSQL_CRED_FILE}" ];then | 
					
						
							|  |  |  |     . ${MYSQL_CRED_FILE} | 
					
						
							| 
									
										
										
										
											2022-08-28 16:26:06 +02:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2022-07-26 22:07:46 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | if [ -f "${LOCKFILE}" ];then | 
					
						
							|  |  |  |     echo "upgrade already running? check lockfile ${LOCKFILE}" | 
					
						
							| 
									
										
										
										
											2020-09-18 21:53:58 +09:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # on exit, remove lockfile but preserve exit code | 
					
						
							|  |  |  | trap "rv=\$?; rm -f "${LOCKFILE}"; exit \$rv" INT TERM EXIT | 
					
						
							| 
									
										
										
										
											2022-06-08 03:06:54 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # create lockfile | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | touch "${LOCKFILE}" | 
					
						
							| 
									
										
										
										
											2020-10-19 19:43:30 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # notify logged in users | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  | echo "Upgrading mempool to ${REF}" | wall | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | update_repo() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     local site="$1" | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  |     echo "[*] Upgrading ${site} to ${REF}" | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  |     cd "$HOME/${site}" || exit 1 | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-21 21:56:42 +09:00
										 |  |  |     git fetch origin || exit 1 | 
					
						
							| 
									
										
										
										
											2023-03-02 19:30:02 +09:00
										 |  |  |     for remote in origin;do | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  |         git remote add "${remote}" "https://github.com/${remote}/mempool" >/dev/null 2>&1 | 
					
						
							|  |  |  |         git fetch "${remote}" || exit 1 | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if [ $(git tag -l "${REF}") ];then | 
					
						
							|  |  |  |         git reset --hard "tags/${REF}" || exit 1 | 
					
						
							| 
									
										
										
										
											2021-12-09 18:12:06 +09:00
										 |  |  |     elif [ $(git branch -r -l "origin/${REF}") ];then | 
					
						
							|  |  |  |         git reset --hard "origin/${REF}" || exit 1 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  |         git reset --hard "${REF}" || exit 1 | 
					
						
							| 
									
										
										
										
											2020-05-26 21:33:50 +09:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  |     export HASH=$(git rev-parse HEAD) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | build_frontend() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     local site="$1" | 
					
						
							|  |  |  |     echo "[*] Building frontend for ${site}" | 
					
						
							|  |  |  |     [ -z "${HASH}" ] && exit 1 | 
					
						
							|  |  |  |     cd "$HOME/${site}/frontend" || exit 1 | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  |     if [ ! -e "mempool-frontend-config.json" ];then | 
					
						
							|  |  |  |         cp "${HOME}/mempool/production/mempool-frontend-config.${site}.json" "mempool-frontend-config.json" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2022-07-07 18:32:18 +02:00
										 |  |  |     npm install --omit=dev --omit=optional || exit 1 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  |     npm run build || exit 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | build_unfurler() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     local site="$1" | 
					
						
							|  |  |  |     echo "[*] Building unfurler for ${site}" | 
					
						
							|  |  |  |     [ -z "${HASH}" ] && exit 1 | 
					
						
							|  |  |  |     cd "$HOME/${site}/unfurler" || exit 1 | 
					
						
							|  |  |  |     if [ ! -e "config.json" ];then | 
					
						
							|  |  |  |         cp "${HOME}/mempool/production/unfurler-config.${site}.json" "config.json" | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install || exit 1 | 
					
						
							|  |  |  |     npm run build || exit 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | build_backend() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     local site="$1" | 
					
						
							|  |  |  |     echo "[*] Building backend for ${site}" | 
					
						
							|  |  |  |     [ -z "${HASH}" ] && exit 1 | 
					
						
							|  |  |  |     cd "$HOME/${site}/backend" || exit 1 | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  |     if [ ! -e "mempool-config.json" ];then | 
					
						
							|  |  |  |         cp "${HOME}/mempool/production/mempool-config.${site}.json" "mempool-config.json" | 
					
						
							|  |  |  | 	sed -i .orig \ | 
					
						
							|  |  |  | 	-e "s!__BITCOIN_RPC_USER__!${BITCOIN_RPC_USER}!" \ | 
					
						
							|  |  |  | 	-e "s!__BITCOIN_RPC_PASS__!${BITCOIN_RPC_PASS}!" \ | 
					
						
							|  |  |  | 	-e "s!__ELEMENTS_RPC_USER__!${ELEMENTS_RPC_USER}!" \ | 
					
						
							|  |  |  | 	-e "s!__ELEMENTS_RPC_PASS__!${ELEMENTS_RPC_PASS}!" \ | 
					
						
							| 
									
										
										
										
											2022-07-26 22:07:46 +02:00
										 |  |  |         -e "s!__MEMPOOL_MAINNET_USER__!${MEMPOOL_MAINNET_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_MAINNET_PASS__!${MEMPOOL_MAINNET_PASS}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_TESTNET_USER__!${MEMPOOL_TESTNET_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_TESTNET_PASS__!${MEMPOOL_TESTNET_PASS}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_SIGNET_USER__!${MEMPOOL_SIGNET_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_SIGNET_PASS__!${MEMPOOL_SIGNET_PASS}!" \ | 
					
						
							| 
									
										
										
										
											2023-02-18 15:23:02 +09:00
										 |  |  |         -e "s!__MEMPOOL_MAINNET_LIGHTNING_USER__!${MEMPOOL_MAINNET_LIGHTNING_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_MAINNET_LIGHTNING_PASS__!${MEMPOOL_MAINNET_LIGHTNING_PASS}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_TESTNET_LIGHTNING_USER__!${MEMPOOL_TESTNET_LIGHTNING_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_TESTNET_LIGHTNING_PASS__!${MEMPOOL_TESTNET_LIGHTNING_PASS}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_SIGNET_LIGHTNING_USER__!${MEMPOOL_SIGNET_LIGHTNING_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_SIGNET_LIGHTNING_PASS__!${MEMPOOL_SIGNET_LIGHTNING_PASS}!" \ | 
					
						
							| 
									
										
										
										
											2022-07-26 22:07:46 +02:00
										 |  |  |         -e "s!__MEMPOOL_LIQUID_USER__!${MEMPOOL_LIQUID_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_LIQUID_PASS__!${MEMPOOL_LIQUID_PASS}!" \ | 
					
						
							| 
									
										
										
										
											2023-02-20 15:58:07 +09:00
										 |  |  |         -e "s!__MEMPOOL_LIQUIDTESTNET_USER__!${MEMPOOL_LIQUIDTESTNET_USER}!" \ | 
					
						
							| 
									
										
										
										
											2022-07-26 22:07:46 +02:00
										 |  |  |         -e "s!__MEMPOOL_LIQUIDTESTNET_PASS__!${MEMPOOL_LIQUIDTESTNET_PASS}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_BISQ_USER__!${MEMPOOL_BISQ_USER}!" \ | 
					
						
							|  |  |  |         -e "s!__MEMPOOL_BISQ_PASS__!${MEMPOOL_BISQ_PASS}!" \ | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  | 	"mempool-config.json" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2022-07-07 18:32:18 +02:00
										 |  |  |     npm install --omit=dev --omit=optional || exit 1 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  |     npm run build || exit 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ship_frontend() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     local site="$1" | 
					
						
							|  |  |  |     cd "$HOME/${site}/frontend" || exit 1 | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  |     mkdir -p "${HOME}/public_html/${site}/" | 
					
						
							|  |  |  |     rsync -av "./dist/mempool/browser/" "${HOME}/public_html/${site}/" || exit 1 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # load nvm if necessary | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | export NVM_DIR="${HOME}/.nvm" | 
					
						
							|  |  |  | source "${NVM_DIR}/nvm.sh" | 
					
						
							| 
									
										
										
										
											2020-05-26 21:33:50 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # what to look for | 
					
						
							| 
									
										
										
										
											2024-04-02 14:55:52 +09:00
										 |  |  | frontends=(mainnet liquid) | 
					
						
							|  |  |  | backends=(mainnet testnet signet liquid liquidtestnet) | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | frontend_repos=() | 
					
						
							|  |  |  | backend_repos=() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # find which frontend repos we have | 
					
						
							|  |  |  | for repo in $frontends;do | 
					
						
							|  |  |  |     [ -d "${repo}" ] && frontend_repos+="${repo}" | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # find which backend repos we have | 
					
						
							|  |  |  | for repo in $backends;do | 
					
						
							|  |  |  |     [ -d "${repo}" ] && backend_repos+="${repo}" | 
					
						
							|  |  |  |     [ -d "${repo}-lightning" ] && backend_repos+="${repo}-lightning" | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # update all repos | 
					
						
							|  |  |  | for repo in $backend_repos;do | 
					
						
							|  |  |  |     update_repo "${repo}" | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | # build unfurlers | 
					
						
							| 
									
										
										
										
											2024-04-02 14:55:52 +09:00
										 |  |  | for repo in mainnet liquid;do | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  |     build_unfurler "${repo}" | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # build backends | 
					
						
							|  |  |  | for repo in $backend_repos;do | 
					
						
							|  |  |  |     build_backend "${repo}" | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # build frontends | 
					
						
							|  |  |  | for repo in $frontend_repos;do | 
					
						
							|  |  |  |     build_frontend "${repo}" | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # ship frontend dist folders to public_html | 
					
						
							| 
									
										
										
										
											2024-04-02 14:55:52 +09:00
										 |  |  | for target in mainnet liquid;do | 
					
						
							| 
									
										
										
										
											2022-03-12 11:11:12 +00:00
										 |  |  |     ship_frontend "${target}" | 
					
						
							|  |  |  | done | 
					
						
							| 
									
										
										
										
											2020-05-25 18:42:00 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-06 14:01:18 +02:00
										 |  |  | # notify everyone | 
					
						
							| 
									
										
										
										
											2021-08-21 14:49:15 +09:00
										 |  |  | echo "${HOSTNAME} updated to \`${REF}\` @ \`${HASH}\`" | /usr/local/bin/keybase chat send --nonblock --channel general mempool.dev | 
					
						
							| 
									
										
										
										
											2022-03-19 15:44:00 +00:00
										 |  |  | echo "${HOSTNAME} updated to \`${REF}\` @ \`${HASH}\`" | /usr/local/bin/keybase chat send --nonblock --channel general "mempool.ops.${LOCATION}" | 
					
						
							| 
									
										
										
										
											2020-05-25 18:42:00 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 06:03:30 +09:00
										 |  |  | exit 0 |