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.
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/PKG-INFO +32 -3
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/README.md +31 -2
- homeconsole_cli-0.0.3/hc/__init__.py +10 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/client.py +6 -3
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/_client_helpers.py +2 -1
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/constants.py +0 -1
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/repl.py +19 -14
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/PKG-INFO +32 -3
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/pyproject.toml +1 -1
- homeconsole_cli-0.0.2/hc/__init__.py +0 -6
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/api.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/capabilities.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/__init__.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/_compose_helpers.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/auth.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/connect.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/core.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/deploy.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/env.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/install.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/logs.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/marketplace.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/module.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/ping.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/plugin.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/__init__.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/compose.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/config.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/core.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/db.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/mode.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/redis.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/recovery/ui.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/remove.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/reset.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/search.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/secrets.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/setup.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/setup_wizard.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/status.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/commands/update.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/config.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/core_ops.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/core_source.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/env_bootstrap.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/errors.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/main.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/marketplace_operation.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/native_core.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/setup_runner.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/hc/shell.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/SOURCES.txt +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/dependency_links.txt +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/entry_points.txt +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/requires.txt +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/top_level.txt +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/setup.cfg +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_config_roundtrip.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_core_ops.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_env_bootstrap.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_main_root_callback.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_marketplace_operation_parse.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_native_core_helpers.py +0 -0
- {homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/tests/test_nav_cli.py +0 -0
- {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.
|
|
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
|
|
|
@@ -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
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
237
|
-
|
|
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
|
|
254
|
-
return []
|
|
255
|
-
return
|
|
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
|
-
|
|
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.
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{homeconsole_cli-0.0.2 → homeconsole_cli-0.0.3}/homeconsole_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|