homeconsole-cli 0.0.2__tar.gz → 0.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/PKG-INFO +32 -3
  2. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/README.md +31 -2
  3. homeconsole_cli-0.0.3/hc/__init__.py +10 -0
  4. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/client.py +6 -3
  5. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/_client_helpers.py +2 -1
  6. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/constants.py +0 -1
  7. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/repl.py +19 -14
  8. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/PKG-INFO +32 -3
  9. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/pyproject.toml +1 -1
  10. homeconsole_cli-0.0.2/hc/__init__.py +0 -6
  11. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/api.py +0 -0
  12. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/capabilities.py +0 -0
  13. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/__init__.py +0 -0
  14. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/_compose_helpers.py +0 -0
  15. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/auth.py +0 -0
  16. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/connect.py +0 -0
  17. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/core.py +0 -0
  18. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/deploy.py +0 -0
  19. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/env.py +0 -0
  20. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/install.py +0 -0
  21. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/logs.py +0 -0
  22. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/marketplace.py +0 -0
  23. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/module.py +0 -0
  24. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/ping.py +0 -0
  25. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/plugin.py +0 -0
  26. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/__init__.py +0 -0
  27. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/compose.py +0 -0
  28. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/config.py +0 -0
  29. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/core.py +0 -0
  30. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/db.py +0 -0
  31. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/mode.py +0 -0
  32. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/redis.py +0 -0
  33. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/ui.py +0 -0
  34. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/remove.py +0 -0
  35. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/reset.py +0 -0
  36. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/search.py +0 -0
  37. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/secrets.py +0 -0
  38. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/setup.py +0 -0
  39. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/setup_wizard.py +0 -0
  40. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/status.py +0 -0
  41. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/update.py +0 -0
  42. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/config.py +0 -0
  43. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/core_ops.py +0 -0
  44. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/core_source.py +0 -0
  45. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/env_bootstrap.py +0 -0
  46. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/errors.py +0 -0
  47. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/main.py +0 -0
  48. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/marketplace_operation.py +0 -0
  49. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/native_core.py +0 -0
  50. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/setup_runner.py +0 -0
  51. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/shell.py +0 -0
  52. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/SOURCES.txt +0 -0
  53. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/dependency_links.txt +0 -0
  54. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/entry_points.txt +0 -0
  55. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/requires.txt +0 -0
  56. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/top_level.txt +0 -0
  57. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/setup.cfg +0 -0
  58. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_config_roundtrip.py +0 -0
  59. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_core_ops.py +0 -0
  60. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_env_bootstrap.py +0 -0
  61. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_main_root_callback.py +0 -0
  62. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_marketplace_operation_parse.py +0 -0
  63. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_native_core_helpers.py +0 -0
  64. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_nav_cli.py +0 -0
  65. {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_setup_runner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homeconsole-cli
3
- Version: 0.0.2
3
+ Version: 0.0.3
4
4
  Summary: HomeConsole CLI (hc) — управление платформой через HTTP API
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -18,13 +18,42 @@ Requires-Dist: pytest>=8; extra == "dev"
18
18
 
19
19
  CLI-утилита для управления платформой HomeConsole **исключительно через HTTP API** CoreRuntime.
20
20
 
21
- ## Установка (локально)
21
+ ## Установка
22
+
23
+ ### Рекомендуется — `pipx` (Debian / Ubuntu / Raspbian / OrangePi OS)
24
+
25
+ `pipx` создаёт изолированный venv автоматически и регистрирует `hc` глобально:
26
+
27
+ ```bash
28
+ apt install pipx # или: pip install pipx --user
29
+ pipx ensurepath # добавляет ~/.local/bin в PATH (один раз)
30
+ pipx install homeconsole-cli
31
+ ```
32
+
33
+ После `pipx ensurepath` перезапусти шелл или выполни `source ~/.bashrc`.
34
+
35
+ Обновление:
36
+ ```bash
37
+ pipx upgrade homeconsole-cli
38
+ ```
39
+
40
+ ### Альтернатива — `pip --user`
41
+
42
+ ```bash
43
+ pip install --user homeconsole-cli
44
+ ```
45
+
46
+ Убедись, что `~/.local/bin` в `PATH`:
47
+ ```bash
48
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
49
+ ```
50
+
51
+ ### Локальная разработка (из исходников)
22
52
 
23
53
  ```bash
24
54
  cd home-console-cli
25
55
  python -m venv .venv
26
56
  source .venv/bin/activate
27
- pip install -U pip
28
57
  pip install -e .
29
58
  ```
30
59
 
@@ -2,13 +2,42 @@
2
2
 
3
3
  CLI-утилита для управления платформой HomeConsole **исключительно через HTTP API** CoreRuntime.
4
4
 
5
- ## Установка (локально)
5
+ ## Установка
6
+
7
+ ### Рекомендуется — `pipx` (Debian / Ubuntu / Raspbian / OrangePi OS)
8
+
9
+ `pipx` создаёт изолированный venv автоматически и регистрирует `hc` глобально:
10
+
11
+ ```bash
12
+ apt install pipx # или: pip install pipx --user
13
+ pipx ensurepath # добавляет ~/.local/bin в PATH (один раз)
14
+ pipx install homeconsole-cli
15
+ ```
16
+
17
+ После `pipx ensurepath` перезапусти шелл или выполни `source ~/.bashrc`.
18
+
19
+ Обновление:
20
+ ```bash
21
+ pipx upgrade homeconsole-cli
22
+ ```
23
+
24
+ ### Альтернатива — `pip --user`
25
+
26
+ ```bash
27
+ pip install --user homeconsole-cli
28
+ ```
29
+
30
+ Убедись, что `~/.local/bin` в `PATH`:
31
+ ```bash
32
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
33
+ ```
34
+
35
+ ### Локальная разработка (из исходников)
6
36
 
7
37
  ```bash
8
38
  cd home-console-cli
9
39
  python -m venv .venv
10
40
  source .venv/bin/activate
11
- pip install -U pip
12
41
  pip install -e .
13
42
  ```
14
43
 
@@ -0,0 +1,10 @@
1
+ from __future__ import annotations
2
+
3
+ __all__ = ["__version__"]
4
+
5
+ try:
6
+ from importlib.metadata import version as _pkg_version
7
+ __version__ = _pkg_version("homeconsole-cli")
8
+ except Exception:
9
+ __version__ = "0.0.2"
10
+
@@ -20,6 +20,7 @@ class HCClient:
20
20
  auth: str = "auto" # auto|bearer|api-key
21
21
  refresh_token: str = ""
22
22
  on_token_refreshed: Callable[[str], None] | None = field(default=None)
23
+ silent_connect: bool = False # suppress "Core недоступен" during background probes
23
24
 
24
25
  def _auth_hint(self, status_code: int) -> None:
25
26
  console = Console()
@@ -59,11 +60,13 @@ class HCClient:
59
60
  ) as client:
60
61
  return await client.request(method, path, headers=self._headers(), **kwargs)
61
62
  except httpx.ConnectError:
62
- hostport = self.base_url.replace("http://", "").replace("https://", "")
63
- console.print(f"[red]Ошибка: Core недоступен на {hostport}[/red]")
63
+ if not self.silent_connect:
64
+ hostport = self.base_url.replace("http://", "").replace("https://", "")
65
+ console.print(f"[red]Ошибка: Core недоступен на {hostport}[/red]")
64
66
  return None
65
67
  except httpx.RequestError as e:
66
- console.print(f"[red]Ошибка: {e}[/red]")
68
+ if not self.silent_connect:
69
+ console.print(f"[red]Ошибка: {e}[/red]")
67
70
  return None
68
71
 
69
72
  async def _try_refresh(self) -> bool:
@@ -11,9 +11,10 @@ from hc.config import Config
11
11
 
12
12
 
13
13
  def _mute_auth_hints(client: HCClient) -> HCClient:
14
- # Capabilities probe / фоновые операции не должны спамить подсказками при 403.
14
+ # Фоновые проbes не должны спамить ни auth-подсказками, ни "Core недоступен".
15
15
  client._auth_hint = lambda *a, **kw: None # type: ignore[attr-defined]
16
16
  client._expired_session_hint = lambda: None # type: ignore[attr-defined]
17
+ client.silent_connect = True
17
18
  return client
18
19
 
19
20
 
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  from pathlib import Path
4
4
 
5
5
  APP_NAME = "HomeConsole CLI"
6
- APP_VERSION = "1.0"
7
6
  ENV_TOKEN = "HC_TOKEN"
8
7
 
9
8
  CONFIG_DIR = Path.home() / ".config" / "hc"
@@ -14,6 +14,7 @@ from rich.console import Console
14
14
 
15
15
  from typer.main import get_command as _typer_get_command
16
16
 
17
+ from hc import __version__
17
18
  from hc.config import Config
18
19
  from hc.constants import APP_NAME, HISTORY_PATH
19
20
  from hc.commands._client_helpers import require_client
@@ -229,32 +230,30 @@ def run_repl(app: typer.Typer) -> None:
229
230
  console = Console()
230
231
  cfg = Config.load()
231
232
  token = os.getenv("HC_TOKEN") or cfg.core.token
232
- connected = bool(cfg.core.host.strip()) and bool(token.strip())
233
+ cfg_ok = bool(cfg.core.host.strip()) and bool(token.strip())
233
234
  hostport = f"{cfg.core.host}:{cfg.core.port}"
234
235
 
235
236
  plugins: list[str] = []
236
- if connected:
237
- client = require_client(console)
237
+ connected = False
238
+ if cfg_ok:
239
+ client = require_client(console, silent=True)
238
240
 
239
- async def _get_names() -> list[str]:
241
+ async def _get_names() -> tuple[bool, list[str]]:
240
242
  # Пытаемся получить имена плагинов из inspector (админский источник истины).
241
243
  insp = await client.inspector_plugins()
242
244
  if isinstance(insp, dict):
243
245
  arr = insp.get("plugins") or []
244
246
  if isinstance(arr, list):
245
- names = []
246
- for p in arr:
247
- if isinstance(p, dict) and p.get("name"):
248
- names.append(str(p["name"]))
247
+ names = [str(p["name"]) for p in arr if isinstance(p, dict) and p.get("name")]
249
248
  if names:
250
- return names
249
+ return True, names
251
250
  # Fallback на старый эндпоинт (если он есть).
252
251
  items = await client.get_plugins()
253
- if not items:
254
- return []
255
- return [str(p.get("name", "")) for p in items if p.get("name")]
252
+ if items is not None:
253
+ return True, [str(p.get("name", "")) for p in items if p.get("name")]
254
+ return False, []
256
255
 
257
- plugins = anyio.run(_get_names)
256
+ connected, plugins = anyio.run(_get_names)
258
257
 
259
258
  commands = [
260
259
  "connect",
@@ -290,7 +289,13 @@ def run_repl(app: typer.Typer) -> None:
290
289
 
291
290
  completer = _HCCompleter(app=app, commands=commands, plugins=plugins, get_group_ctx=_get_ctx)
292
291
 
293
- console.print(f"{APP_NAME} 0.0.1 | " + (f"connected to {hostport}" if connected else "not connected"))
292
+ if connected:
293
+ status = f"connected to {hostport}"
294
+ elif cfg_ok:
295
+ status = f"offline • configured for {hostport}"
296
+ else:
297
+ status = "not connected"
298
+ console.print(f"{APP_NAME} {__version__} | {status}")
294
299
  console.print("Type 'help' or '?' for commands, 'exit' to quit")
295
300
 
296
301
  HISTORY_PATH.parent.mkdir(parents=True, exist_ok=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homeconsole-cli
3
- Version: 0.0.2
3
+ Version: 0.0.3
4
4
  Summary: HomeConsole CLI (hc) — управление платформой через HTTP API
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -18,13 +18,42 @@ Requires-Dist: pytest>=8; extra == "dev"
18
18
 
19
19
  CLI-утилита для управления платформой HomeConsole **исключительно через HTTP API** CoreRuntime.
20
20
 
21
- ## Установка (локально)
21
+ ## Установка
22
+
23
+ ### Рекомендуется — `pipx` (Debian / Ubuntu / Raspbian / OrangePi OS)
24
+
25
+ `pipx` создаёт изолированный venv автоматически и регистрирует `hc` глобально:
26
+
27
+ ```bash
28
+ apt install pipx # или: pip install pipx --user
29
+ pipx ensurepath # добавляет ~/.local/bin в PATH (один раз)
30
+ pipx install homeconsole-cli
31
+ ```
32
+
33
+ После `pipx ensurepath` перезапусти шелл или выполни `source ~/.bashrc`.
34
+
35
+ Обновление:
36
+ ```bash
37
+ pipx upgrade homeconsole-cli
38
+ ```
39
+
40
+ ### Альтернатива — `pip --user`
41
+
42
+ ```bash
43
+ pip install --user homeconsole-cli
44
+ ```
45
+
46
+ Убедись, что `~/.local/bin` в `PATH`:
47
+ ```bash
48
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
49
+ ```
50
+
51
+ ### Локальная разработка (из исходников)
22
52
 
23
53
  ```bash
24
54
  cd home-console-cli
25
55
  python -m venv .venv
26
56
  source .venv/bin/activate
27
- pip install -U pip
28
57
  pip install -e .
29
58
  ```
30
59
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "homeconsole-cli"
3
- version = "0.0.2"
3
+ version = "0.0.3"
4
4
  description = "HomeConsole CLI (hc) — управление платформой через HTTP API"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,6 +0,0 @@
1
- from __future__ import annotations
2
-
3
- __all__ = ["__version__"]
4
-
5
- __version__ = "0.0.1"
6
-