41 lines
		
	
	
		
			959 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			959 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env bash
 | 
						|
# Copyright (C) 2023  Umorpha Systems
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
 | 
						|
set -euE -o pipefail
 | 
						|
 | 
						|
main() {
 | 
						|
	local url
 | 
						|
	url=$1
 | 
						|
 | 
						|
	{
 | 
						|
		list_resp=$(bin/vultr-api iso)
 | 
						|
		id=$(jq -r ".isos[]|select(.filename==\"${url##*/}\").id" <<<"$list_resp")
 | 
						|
		local status
 | 
						|
		if [[ -n "$id" ]]; then
 | 
						|
			status=$(jq -r ".isos[]|select(.id==\"${id}\").status" <<<"$list_resp")
 | 
						|
		else
 | 
						|
			local n
 | 
						|
			n=$(jq '.isos|length' <<<"$list_resp")
 | 
						|
			if [[ "$n" -ge 2 ]]; then
 | 
						|
				id=$(jq -r '.isos[0].id' <<<"$list_resp")
 | 
						|
				bin/vultr-api "iso/${id}" -XDELETE
 | 
						|
			fi
 | 
						|
 | 
						|
			local post_resp
 | 
						|
			post_resp=$(bin/vultr-api iso -XPOST --data "{\"url\":\"${url}\"}")
 | 
						|
			id=$(jq -r .iso.id <<<"$post_resp")
 | 
						|
			status=$(jq -r .iso.status <<<"$post_resp")
 | 
						|
		fi
 | 
						|
		while [[ "$status" != complete ]]; do
 | 
						|
			echo "iso status=${status}..."
 | 
						|
			sleep 1
 | 
						|
			status=$(bin/vultr-api "iso/${id}" | jq -r .iso.status)
 | 
						|
		done
 | 
						|
		echo "iso status=${status}"
 | 
						|
	} >&2
 | 
						|
	echo "$id"
 | 
						|
}
 | 
						|
 | 
						|
main "$@"
 |