| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Convenience script to easily deploy a software update to a testnet | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | SOLANA_ROOT="$(cd "$(dirname "$0")"/..; pwd)" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-09 16:45:28 -07:00
										 |  |  | maybeKeypair= | 
					
						
							|  |  |  | while [[ ${1:0:2} = -- ]]; do | 
					
						
							|  |  |  |   if [[ $1 = --keypair && -n $2 ]]; then | 
					
						
							|  |  |  |     maybeKeypair="$1 $2" | 
					
						
							|  |  |  |     shift 2 | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     echo "Error: Unknown option: $1" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  | URL=$1 | 
					
						
							|  |  |  | TAG=$2 | 
					
						
							|  |  |  | OS=${3:-linux} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ -z $URL || -z $TAG ]]; then | 
					
						
							| 
									
										
										
										
											2020-03-13 15:00:27 -07:00
										 |  |  |   echo "Usage: $0 [stable|localhost|RPC URL] [edge|beta|release tag] [linux|osx|windows]" | 
					
						
							| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  |   exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ ! -f update_manifest_keypair.json ]]; then | 
					
						
							|  |  |  |   "$SOLANA_ROOT"/scripts/solana-install-update-manifest-keypair.sh "$OS" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-07 13:22:40 -07:00
										 |  |  | case "$OS" in | 
					
						
							|  |  |  | osx) | 
					
						
							|  |  |  |   TARGET=x86_64-apple-darwin | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | linux) | 
					
						
							|  |  |  |   TARGET=x86_64-unknown-linux-gnu | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | windows) | 
					
						
							|  |  |  |   TARGET=x86_64-pc-windows-msvc | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | *) | 
					
						
							|  |  |  |   TARGET=unknown-unknown-unknown | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  | case $URL in | 
					
						
							|  |  |  | stable) | 
					
						
							| 
									
										
										
										
											2020-03-13 15:00:27 -07:00
										 |  |  |   URL=http://devnet.solana.com | 
					
						
							| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  |   ;; | 
					
						
							|  |  |  | localhost) | 
					
						
							|  |  |  |   URL=http://localhost:8899 | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | *) | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | case $TAG in | 
					
						
							|  |  |  | edge|beta) | 
					
						
							|  |  |  |   DOWNLOAD_URL=http://release.solana.com/"$TAG"/solana-release-$TARGET.tar.bz2 | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | *) | 
					
						
							|  |  |  |   DOWNLOAD_URL=https://github.com/solana-labs/solana/releases/download/"$TAG"/solana-release-$TARGET.tar.bz2 | 
					
						
							|  |  |  |   ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Prefer possible `cargo build` binaries over PATH binaries | 
					
						
							|  |  |  | PATH="$SOLANA_ROOT"/target/debug:$PATH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set -x | 
					
						
							| 
									
										
										
										
											2019-07-09 16:45:28 -07:00
										 |  |  | # shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair | 
					
						
							| 
									
										
										
										
											2019-09-10 17:16:40 -06:00
										 |  |  | balance=$(solana $maybeKeypair --url "$URL" balance --lamports) | 
					
						
							| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  | if [[ $balance = "0 lamports" ]]; then | 
					
						
							| 
									
										
										
										
											2019-07-09 16:45:28 -07:00
										 |  |  |   # shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair | 
					
						
							| 
									
										
										
										
											2020-02-15 12:53:52 -07:00
										 |  |  |   solana $maybeKeypair --url "$URL" airdrop 0.000000042 | 
					
						
							| 
									
										
										
										
											2019-06-07 12:59:58 -07:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2019-07-09 16:45:28 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | # shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair | 
					
						
							|  |  |  | solana-install deploy $maybeKeypair --url "$URL" "$DOWNLOAD_URL" update_manifest_keypair.json |