ventilatepro-cli 0.3.0__tar.gz → 0.3.1__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.
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/PKG-INFO +8 -5
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/README.md +7 -4
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/tests/test_cli.py +25 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/__init__.py +1 -1
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/auth.py +2 -4
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/cli.py +1 -1
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/config.py +1 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/PKG-INFO +8 -5
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/pyproject.toml +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/setup.cfg +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/tests/test_config.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/tests/test_mcp_server.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/__main__.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/api_client.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/calc.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/design_day.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/entities.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/mcp_cli.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/mcp_server.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/notes.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/output.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/payloads.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/projects.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/queue.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro/systems.py +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/SOURCES.txt +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/dependency_links.txt +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/entry_points.txt +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/requires.txt +0 -0
- {ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ventilatepro-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: VentilatePro CLI
|
|
5
5
|
Project-URL: Homepage, https://ventilatepro.com/exam/cli/
|
|
6
6
|
Project-URL: Documentation, https://ventilatepro.com/exam/cli/
|
|
@@ -41,7 +41,7 @@ pip install -e .
|
|
|
41
41
|
## Commands
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
ventilatepro auth login
|
|
44
|
+
ventilatepro auth login
|
|
45
45
|
ventilatepro projects list
|
|
46
46
|
ventilatepro projects show 1
|
|
47
47
|
ventilatepro rooms list --project 1
|
|
@@ -67,9 +67,12 @@ and other MCP clients. It uses the same saved base URL and CLI token created by
|
|
|
67
67
|
2. Log in locally:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
ventilatepro auth login --
|
|
70
|
+
ventilatepro auth login --token vpcli_...
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
The production URL defaults to `https://ventilatepro.com`. Use `--url` only for
|
|
74
|
+
local development, staging, or self-hosted VentilatePro servers.
|
|
75
|
+
|
|
73
76
|
3. Confirm the local setup:
|
|
74
77
|
|
|
75
78
|
```bash
|
|
@@ -102,13 +105,13 @@ command.
|
|
|
102
105
|
If the hidden token prompt is awkward in your terminal, use either:
|
|
103
106
|
|
|
104
107
|
```bash
|
|
105
|
-
ventilatepro auth login --
|
|
108
|
+
ventilatepro auth login --token-prompt-visible
|
|
106
109
|
```
|
|
107
110
|
|
|
108
111
|
or pipe the token through stdin:
|
|
109
112
|
|
|
110
113
|
```bash
|
|
111
|
-
printf '%s' "$VPCLI_TOKEN" | ventilatepro auth login --
|
|
114
|
+
printf '%s' "$VPCLI_TOKEN" | ventilatepro auth login --token-stdin
|
|
112
115
|
```
|
|
113
116
|
|
|
114
117
|
See the hosted install guide at `https://ventilatepro.com/exam/cli/`, plus [docs/commands.md](./docs/commands.md), [docs/auth.md](./docs/auth.md), [docs/api.md](./docs/api.md), and [docs/releasing.md](./docs/releasing.md) in this repo.
|
|
@@ -26,7 +26,7 @@ pip install -e .
|
|
|
26
26
|
## Commands
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
ventilatepro auth login
|
|
29
|
+
ventilatepro auth login
|
|
30
30
|
ventilatepro projects list
|
|
31
31
|
ventilatepro projects show 1
|
|
32
32
|
ventilatepro rooms list --project 1
|
|
@@ -52,9 +52,12 @@ and other MCP clients. It uses the same saved base URL and CLI token created by
|
|
|
52
52
|
2. Log in locally:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
ventilatepro auth login --
|
|
55
|
+
ventilatepro auth login --token vpcli_...
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
The production URL defaults to `https://ventilatepro.com`. Use `--url` only for
|
|
59
|
+
local development, staging, or self-hosted VentilatePro servers.
|
|
60
|
+
|
|
58
61
|
3. Confirm the local setup:
|
|
59
62
|
|
|
60
63
|
```bash
|
|
@@ -87,13 +90,13 @@ command.
|
|
|
87
90
|
If the hidden token prompt is awkward in your terminal, use either:
|
|
88
91
|
|
|
89
92
|
```bash
|
|
90
|
-
ventilatepro auth login --
|
|
93
|
+
ventilatepro auth login --token-prompt-visible
|
|
91
94
|
```
|
|
92
95
|
|
|
93
96
|
or pipe the token through stdin:
|
|
94
97
|
|
|
95
98
|
```bash
|
|
96
|
-
printf '%s' "$VPCLI_TOKEN" | ventilatepro auth login --
|
|
99
|
+
printf '%s' "$VPCLI_TOKEN" | ventilatepro auth login --token-stdin
|
|
97
100
|
```
|
|
98
101
|
|
|
99
102
|
See the hosted install guide at `https://ventilatepro.com/exam/cli/`, plus [docs/commands.md](./docs/commands.md), [docs/auth.md](./docs/auth.md), [docs/api.md](./docs/api.md), and [docs/releasing.md](./docs/releasing.md) in this repo.
|
|
@@ -44,6 +44,31 @@ class CliTests(unittest.TestCase):
|
|
|
44
44
|
os.environ.pop(config.CONFIG_ENV_VAR, None)
|
|
45
45
|
os.environ.pop(config.DATA_ENV_VAR, None)
|
|
46
46
|
|
|
47
|
+
def test_auth_login_defaults_to_production_url(self):
|
|
48
|
+
with tempfile.TemporaryDirectory() as tmpdir:
|
|
49
|
+
os.environ[config.CONFIG_ENV_VAR] = tmpdir
|
|
50
|
+
os.environ[config.DATA_ENV_VAR] = tmpdir
|
|
51
|
+
try:
|
|
52
|
+
fake_client = mock.Mock()
|
|
53
|
+
fake_client.auth_me.return_value = {
|
|
54
|
+
"username": "demo-user",
|
|
55
|
+
"email": "demo@example.com",
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
with mock.patch.object(auth, "ApiClient", return_value=fake_client) as api_client:
|
|
59
|
+
with mock.patch.object(config, "_try_get_keyring", return_value=None):
|
|
60
|
+
result = self.runner.invoke(
|
|
61
|
+
app,
|
|
62
|
+
["auth", "login", "--token", "vpcli_demo_secret", "--json"],
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
self.assertEqual(result.exit_code, 0)
|
|
66
|
+
api_client.assert_called_once_with(config.DEFAULT_BASE_URL, "vpcli_demo_secret")
|
|
67
|
+
self.assertEqual(config.get_base_url(), config.DEFAULT_BASE_URL)
|
|
68
|
+
finally:
|
|
69
|
+
os.environ.pop(config.CONFIG_ENV_VAR, None)
|
|
70
|
+
os.environ.pop(config.DATA_ENV_VAR, None)
|
|
71
|
+
|
|
47
72
|
def test_auth_login_accepts_visible_prompt_input(self):
|
|
48
73
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
49
74
|
os.environ[config.CONFIG_ENV_VAR] = tmpdir
|
|
@@ -5,7 +5,7 @@ from getpass import getpass
|
|
|
5
5
|
from typing import Tuple
|
|
6
6
|
|
|
7
7
|
from .api_client import ApiClient
|
|
8
|
-
from .config import clear_auth, get_base_url, get_token, save_token, set_base_url
|
|
8
|
+
from .config import DEFAULT_BASE_URL, clear_auth, get_base_url, get_token, save_token, set_base_url
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _read_token(*, prompt_visible: bool, token_stdin: bool) -> str:
|
|
@@ -31,9 +31,7 @@ def login(
|
|
|
31
31
|
prompt_visible: bool = False,
|
|
32
32
|
token_stdin: bool = False,
|
|
33
33
|
):
|
|
34
|
-
normalized_url = (base_url or get_base_url() or
|
|
35
|
-
if not normalized_url:
|
|
36
|
-
raise ValueError("API base URL is required. Pass --url or log in with a saved URL.")
|
|
34
|
+
normalized_url = (base_url or get_base_url() or DEFAULT_BASE_URL).strip().rstrip("/")
|
|
37
35
|
|
|
38
36
|
if token and token_stdin:
|
|
39
37
|
raise ValueError("Pass either --token or --token-stdin, not both.")
|
|
@@ -38,7 +38,7 @@ def main():
|
|
|
38
38
|
|
|
39
39
|
@auth_app.command("login")
|
|
40
40
|
def auth_login(
|
|
41
|
-
url: str = typer.Option(None, "--url", help="VentilatePro base URL"),
|
|
41
|
+
url: str = typer.Option(None, "--url", help="VentilatePro base URL for local, staging, or self-hosted servers"),
|
|
42
42
|
token: str = typer.Option(None, "--token", help="Personal access token"),
|
|
43
43
|
token_stdin: bool = typer.Option(False, "--token-stdin", help="Read the personal access token from stdin"),
|
|
44
44
|
token_prompt_visible: bool = typer.Option(
|
|
@@ -8,6 +8,7 @@ from typing import Any, Dict, Optional
|
|
|
8
8
|
APP_DIR_NAME = "ventilatepro"
|
|
9
9
|
CONFIG_ENV_VAR = "VENTILATEPRO_CONFIG_DIR"
|
|
10
10
|
DATA_ENV_VAR = "VENTILATEPRO_DATA_DIR"
|
|
11
|
+
DEFAULT_BASE_URL = "https://ventilatepro.com"
|
|
11
12
|
CONFIG_FILENAME = "config.json"
|
|
12
13
|
KEYRING_SERVICE = "ventilatepro-cli"
|
|
13
14
|
KEYRING_USERNAME = "default"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ventilatepro-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: VentilatePro CLI
|
|
5
5
|
Project-URL: Homepage, https://ventilatepro.com/exam/cli/
|
|
6
6
|
Project-URL: Documentation, https://ventilatepro.com/exam/cli/
|
|
@@ -41,7 +41,7 @@ pip install -e .
|
|
|
41
41
|
## Commands
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
ventilatepro auth login
|
|
44
|
+
ventilatepro auth login
|
|
45
45
|
ventilatepro projects list
|
|
46
46
|
ventilatepro projects show 1
|
|
47
47
|
ventilatepro rooms list --project 1
|
|
@@ -67,9 +67,12 @@ and other MCP clients. It uses the same saved base URL and CLI token created by
|
|
|
67
67
|
2. Log in locally:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
ventilatepro auth login --
|
|
70
|
+
ventilatepro auth login --token vpcli_...
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
The production URL defaults to `https://ventilatepro.com`. Use `--url` only for
|
|
74
|
+
local development, staging, or self-hosted VentilatePro servers.
|
|
75
|
+
|
|
73
76
|
3. Confirm the local setup:
|
|
74
77
|
|
|
75
78
|
```bash
|
|
@@ -102,13 +105,13 @@ command.
|
|
|
102
105
|
If the hidden token prompt is awkward in your terminal, use either:
|
|
103
106
|
|
|
104
107
|
```bash
|
|
105
|
-
ventilatepro auth login --
|
|
108
|
+
ventilatepro auth login --token-prompt-visible
|
|
106
109
|
```
|
|
107
110
|
|
|
108
111
|
or pipe the token through stdin:
|
|
109
112
|
|
|
110
113
|
```bash
|
|
111
|
-
printf '%s' "$VPCLI_TOKEN" | ventilatepro auth login --
|
|
114
|
+
printf '%s' "$VPCLI_TOKEN" | ventilatepro auth login --token-stdin
|
|
112
115
|
```
|
|
113
116
|
|
|
114
117
|
See the hosted install guide at `https://ventilatepro.com/exam/cli/`, plus [docs/commands.md](./docs/commands.md), [docs/auth.md](./docs/auth.md), [docs/api.md](./docs/api.md), and [docs/releasing.md](./docs/releasing.md) in this repo.
|
|
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
|
{ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ventilatepro_cli-0.3.0 → ventilatepro_cli-0.3.1}/ventilatepro_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|