refactor: digitalocean/lib - add bash safety flags and variable quoting

- Add set -euo pipefail for strict error handling
- Make color constants readonly (RED, GREEN, YELLOW, NC)
- Make DO_API_BASE and SSH_OPTS readonly
- Quote numeric comparison variables in verify_server_connectivity
- Quote numeric comparison variables in wait_for_cloud_init
- Quote numeric comparison variables in create_server
- Quote process IDs and timeout variables in try_oauth_flow

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Sprite 2026-02-07 19:52:45 +00:00
parent d689f6f06c
commit 68d114eecb

View file

@ -447,7 +447,7 @@ print(json.dumps(body))
log_warn "Waiting for droplet to become active..."
local max_attempts=60
local attempt=1
while [[ $attempt -le $max_attempts ]]; do
while [[ "$attempt" -le "$max_attempts" ]]; do
local status_response=$(do_api GET "/droplets/$DO_DROPLET_ID")
local status=$(echo "$status_response" | python3 -c "import json,sys; print(json.loads(sys.stdin.read())['droplet']['status'])")
@ -502,7 +502,7 @@ wait_for_cloud_init() {
local attempt=1
log_warn "Waiting for cloud-init to complete..."
while [[ $attempt -le $max_attempts ]]; do
while [[ "$attempt" -le "$max_attempts" ]]; do
if ssh $SSH_OPTS "root@$ip" "test -f /root/.cloud-init-complete" >/dev/null 2>&1; then
log_info "Cloud-init completed"
return 0