ssh-tunnel-cli 0.1.1__tar.gz → 0.1.2__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.
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/.gitignore +0 -2
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/PKG-INFO +16 -7
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/README.md +15 -6
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/pyproject.toml +1 -1
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/cli.py +1 -1
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/uv.lock +1 -1
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/LICENSE +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/SPEC.md +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/design/tunnel-mockup-prompt.txt +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/design/tunnel-mockup.png +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/__init__.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/config.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/core.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/prompts.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/__init__.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/ssh_harness.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_cli.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_config.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_core.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_ssh_integration.py +0 -0
- {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_ui.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ssh-tunnel-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Guided local SSH tunnels using your existing OpenSSH configuration
|
|
5
5
|
Project-URL: Repository, https://github.com/maneeshv/ssh-tunnel-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/maneeshv/ssh-tunnel-cli/issues
|
|
@@ -24,17 +24,30 @@ Python + Questionary, using your Mac's existing OpenSSH client for connections a
|
|
|
24
24
|
|
|
25
25
|
## Install
|
|
26
26
|
|
|
27
|
-
Requires macOS
|
|
27
|
+
Requires macOS and `/usr/bin/ssh`.
|
|
28
|
+
|
|
29
|
+
With [Homebrew](https://brew.sh/), Python and the package dependencies are managed for you:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
brew install maneeshv/tap/ssh-tunnel-cli
|
|
33
|
+
tunnel
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Update with `brew upgrade maneeshv/tap/ssh-tunnel-cli`. The formula lives in [maneeshv/homebrew-tap](https://github.com/maneeshv/homebrew-tap).
|
|
37
|
+
|
|
38
|
+
Alternatively, use [uv](https://docs.astral.sh/uv/) with Python 3.11 or later:
|
|
28
39
|
|
|
29
40
|
```sh
|
|
30
41
|
uv tool install ssh-tunnel-cli
|
|
31
42
|
tunnel
|
|
32
43
|
```
|
|
33
44
|
|
|
34
|
-
|
|
45
|
+
You can also use `pipx install ssh-tunnel-cli`, or `python -m pip install ssh-tunnel-cli` inside a virtual environment. All installation methods expose the same `tunnel` command and use the same private state directory.
|
|
35
46
|
|
|
36
47
|
If your shell cannot find `tunnel`, run `uv tool update-shell` and restart the shell.
|
|
37
48
|
|
|
49
|
+
If you have installed through more than one package manager, `command -v tunnel` shows which installation your shell uses. You only need one installation method.
|
|
50
|
+
|
|
38
51
|
To run or develop from a checkout:
|
|
39
52
|
|
|
40
53
|
```sh
|
|
@@ -112,10 +125,6 @@ See [the specification](https://github.com/maneeshv/ssh-tunnel-cli/blob/main/SPE
|
|
|
112
125
|
|
|
113
126
|
Verified on 2026-11-04 with Python 3.11.11 and macOS OpenSSH 10.3p1: all 73 tests passed, including 12 real-SSH integration tests. The wheel and source archive build successfully, and the wheel's CLI runs independently of the source checkout. Menus were inspected in a 96-column terminal with color disabled. Manual Warp rendering and password/passphrase authentication were not checked; generated-key authentication and native host-key confirmation were exercised through a PTY.
|
|
114
127
|
|
|
115
|
-
## TypeScript comparison
|
|
116
|
-
|
|
117
|
-
A separate [TypeScript alternative](https://github.com/maneeshv/ssh-tunnel-cli/tree/main/typescript-version) is available for comparison. Run `npm ci && npm run build && npm start` from `typescript-version/`. It uses the `tunnel-ts` command and its own state directory; npm publication is pending evaluation.
|
|
118
|
-
|
|
119
128
|
## Contributing
|
|
120
129
|
|
|
121
130
|
Small fixes and improvements are welcome. Open an issue for substantial behavior changes before implementing them. Use absolute imports, keep dependencies minimal, and run the checks above before submitting a pull request. Include a regression test for behavior changes. CI runs unit/prompt tests and package smoke checks on macOS; real-SSH tests remain opt-in.
|
|
@@ -6,17 +6,30 @@ Python + Questionary, using your Mac's existing OpenSSH client for connections a
|
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
|
-
Requires macOS
|
|
9
|
+
Requires macOS and `/usr/bin/ssh`.
|
|
10
|
+
|
|
11
|
+
With [Homebrew](https://brew.sh/), Python and the package dependencies are managed for you:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
brew install maneeshv/tap/ssh-tunnel-cli
|
|
15
|
+
tunnel
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Update with `brew upgrade maneeshv/tap/ssh-tunnel-cli`. The formula lives in [maneeshv/homebrew-tap](https://github.com/maneeshv/homebrew-tap).
|
|
19
|
+
|
|
20
|
+
Alternatively, use [uv](https://docs.astral.sh/uv/) with Python 3.11 or later:
|
|
10
21
|
|
|
11
22
|
```sh
|
|
12
23
|
uv tool install ssh-tunnel-cli
|
|
13
24
|
tunnel
|
|
14
25
|
```
|
|
15
26
|
|
|
16
|
-
|
|
27
|
+
You can also use `pipx install ssh-tunnel-cli`, or `python -m pip install ssh-tunnel-cli` inside a virtual environment. All installation methods expose the same `tunnel` command and use the same private state directory.
|
|
17
28
|
|
|
18
29
|
If your shell cannot find `tunnel`, run `uv tool update-shell` and restart the shell.
|
|
19
30
|
|
|
31
|
+
If you have installed through more than one package manager, `command -v tunnel` shows which installation your shell uses. You only need one installation method.
|
|
32
|
+
|
|
20
33
|
To run or develop from a checkout:
|
|
21
34
|
|
|
22
35
|
```sh
|
|
@@ -94,10 +107,6 @@ See [the specification](https://github.com/maneeshv/ssh-tunnel-cli/blob/main/SPE
|
|
|
94
107
|
|
|
95
108
|
Verified on 2026-11-04 with Python 3.11.11 and macOS OpenSSH 10.3p1: all 73 tests passed, including 12 real-SSH integration tests. The wheel and source archive build successfully, and the wheel's CLI runs independently of the source checkout. Menus were inspected in a 96-column terminal with color disabled. Manual Warp rendering and password/passphrase authentication were not checked; generated-key authentication and native host-key confirmation were exercised through a PTY.
|
|
96
109
|
|
|
97
|
-
## TypeScript comparison
|
|
98
|
-
|
|
99
|
-
A separate [TypeScript alternative](https://github.com/maneeshv/ssh-tunnel-cli/tree/main/typescript-version) is available for comparison. Run `npm ci && npm run build && npm start` from `typescript-version/`. It uses the `tunnel-ts` command and its own state directory; npm publication is pending evaluation.
|
|
100
|
-
|
|
101
110
|
## Contributing
|
|
102
111
|
|
|
103
112
|
Small fixes and improvements are welcome. Open an issue for substantial behavior changes before implementing them. Use absolute imports, keep dependencies minimal, and run the checks above before submitting a pull request. Include a regression test for behavior changes. CI runs unit/prompt tests and package smoke checks on macOS; real-SSH tests remain opt-in.
|
|
@@ -224,7 +224,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
224
224
|
parser = argparse.ArgumentParser(description="Guided local SSH tunnels using existing config aliases.")
|
|
225
225
|
parser.add_argument("--config", type=Path, help="SSH config to use (default: ~/.ssh/config)")
|
|
226
226
|
parser.add_argument("--state-dir", type=Path, help="Private, short state directory (default: ~/.tunnel)")
|
|
227
|
-
parser.add_argument("--version", action="version", version="tunnel 0.1.
|
|
227
|
+
parser.add_argument("--version", action="version", version="tunnel 0.1.2")
|
|
228
228
|
commands = parser.add_subparsers(dest="command")
|
|
229
229
|
commands.add_parser("list", help="Print owned tunnel status without prompting")
|
|
230
230
|
for name in ("stop", "restart"):
|
|
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
|