File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1313
1414from vibepod .constants import EXIT_DOCKER_NOT_RUNNING
1515from vibepod .core .config import get_config
16- from vibepod .core .docker import DockerClientError , DockerManager
16+ from vibepod .core .docker import DockerClientError , DockerManager , _is_latest_tag
1717from vibepod .utils .console import error , info , success , warning
1818
1919app = typer .Typer (help = "View logs and traffic UI" )
@@ -60,13 +60,14 @@ def logs_start(
6060 error (str (exc ))
6161 raise typer .Exit (EXIT_DOCKER_NOT_RUNNING ) from exc
6262
63- info ("Checking for datasette image updates…" )
64- updated = manager .pull_if_newer (datasette_image )
65- if updated :
66- info ("New image available — restarting datasette" )
67- existing = manager .find_datasette ()
68- if existing :
69- existing .remove (force = True )
63+ if _is_latest_tag (datasette_image ):
64+ info ("Checking for datasette image updates…" )
65+ updated = manager .pull_if_newer (datasette_image )
66+ if updated :
67+ info ("New image available — restarting datasette" )
68+ existing = manager .find_datasette ()
69+ if existing :
70+ existing .remove (force = True )
7071
7172 info (f"Starting Datasette on http://localhost:{ datasette_port } " )
7273 manager .ensure_datasette (
Original file line number Diff line number Diff line change 99
1010from vibepod .constants import EXIT_DOCKER_NOT_RUNNING
1111from vibepod .core .config import get_config
12- from vibepod .core .docker import DockerClientError , DockerManager
12+ from vibepod .core .docker import DockerClientError , DockerManager , _is_latest_tag
1313from vibepod .utils .console import error , info , success , warning
1414
1515app = typer .Typer (help = "Manage the HTTP(S) proxy" )
@@ -42,6 +42,10 @@ def proxy_start() -> None:
4242
4343 manager .ensure_network (network_name )
4444
45+ if _is_latest_tag (proxy_image ):
46+ info ("Checking for proxy image updates…" )
47+ manager .pull_if_newer (proxy_image )
48+
4549 info ("Starting proxy" )
4650 manager .ensure_proxy (
4751 image = proxy_image ,
Original file line number Diff line number Diff line change 2323 resolve_agent_name ,
2424)
2525from vibepod .core .config import get_config
26- from vibepod .core .docker import DockerClientError , DockerManager
26+ from vibepod .core .docker import DockerClientError , DockerManager , _is_latest_tag
2727from vibepod .core .session_logger import SessionLogger
2828from vibepod .utils .console import error , info , success , warning
2929
@@ -323,6 +323,9 @@ def run(
323323 .resolve ()
324324 )
325325
326+ if _is_latest_tag (proxy_image ):
327+ manager .pull_if_newer (proxy_image )
328+
326329 manager .ensure_proxy (
327330 image = proxy_image ,
328331 db_path = proxy_db_path ,
Original file line number Diff line number Diff line change @@ -41,6 +41,12 @@ class DockerClientError(RuntimeError):
4141 """Raised for Docker availability or lifecycle errors."""
4242
4343
44+ def _is_latest_tag (image : str ) -> bool :
45+ """Return True when *image* uses the ``latest`` tag (explicitly or by omission)."""
46+ name = image .split ("/" )[- 1 ]
47+ return ":" not in name or name .endswith (":latest" )
48+
49+
4450def _normalize_command (value : Any ) -> list [str ]:
4551 """Normalize Docker command/entrypoint values to a list of strings."""
4652 if value is None :
You can’t perform that action at this time.
0 commit comments