This repository was archived by the owner on Jan 23, 2026. It is now read-only.
File tree Expand file tree Collapse file tree
packages/jumpstarter/jumpstarter/client Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import logging
2+ import os
23import sys
34from collections .abc import AsyncGenerator , Generator
45from contextlib import (
@@ -141,10 +142,8 @@ async def _acquire(self):
141142 if condition_true (result .conditions , "Ready" ):
142143 logger .debug ("Lease %s acquired" , self .name )
143144 spinner .update_status (f"✅ Lease { self .name } acquired successfully!" )
144- # Small delay to show success message
145- await sleep (0.5 )
146145 self .exporter_name = result .exporter
147- return self
146+ break
148147
149148 # lease unsatisfiable
150149 if condition_true (result .conditions , "Unsatisfiable" ):
@@ -176,6 +175,8 @@ async def _acquire(self):
176175 for _ in range (5 ):
177176 await sleep (1 )
178177 spinner .tick ()
178+ return self
179+
179180 except TimeoutError :
180181 logger .debug (f"Lease { self .name } acquisition timed out after { self .acquisition_timeout } seconds" )
181182 raise LeaseError (
@@ -305,9 +306,13 @@ def __init__(self, lease_name: str | None = None):
305306 self .console = Console ()
306307 self .spinner = None
307308 self .start_time = None
308- self ._should_show_spinner = self ._is_terminal_available ()
309+ self ._should_show_spinner = self ._is_terminal_available () and not self . _is_non_interactive ()
309310 self ._current_message = None
310311
312+ def _is_non_interactive (self ) -> bool :
313+ """Check if the user desires a NONINTERACTIVE environment."""
314+ return os .environ .get ("NONINTERACTIVE" , "false" ).lower () in ["true" , "1" ]
315+
311316 def _is_terminal_available (self ) -> bool :
312317 """Check if we're running in a terminal/TTY."""
313318 return (
You can’t perform that action at this time.
0 commit comments