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.
Files changed (21) hide show
  1. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/.gitignore +0 -2
  2. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/PKG-INFO +16 -7
  3. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/README.md +15 -6
  4. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/pyproject.toml +1 -1
  5. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/cli.py +1 -1
  6. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/uv.lock +1 -1
  7. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/LICENSE +0 -0
  8. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/SPEC.md +0 -0
  9. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/design/tunnel-mockup-prompt.txt +0 -0
  10. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/design/tunnel-mockup.png +0 -0
  11. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/__init__.py +0 -0
  12. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/config.py +0 -0
  13. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/core.py +0 -0
  14. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/src/tunnel_cli/prompts.py +0 -0
  15. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/__init__.py +0 -0
  16. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/ssh_harness.py +0 -0
  17. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_cli.py +0 -0
  18. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_config.py +0 -0
  19. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_core.py +0 -0
  20. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_ssh_integration.py +0 -0
  21. {ssh_tunnel_cli-0.1.1 → ssh_tunnel_cli-0.1.2}/tests/test_ui.py +0 -0
@@ -10,5 +10,3 @@ dist/
10
10
  .env.*
11
11
  .tunnel/
12
12
  *.egg-info/
13
- node_modules/
14
- *.tgz
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ssh-tunnel-cli
3
- Version: 0.1.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, Python 3.11 or later, [uv](https://docs.astral.sh/uv/), and `/usr/bin/ssh`.
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
- Alternatively, use `pipx install ssh-tunnel-cli`, or `python -m pip install ssh-tunnel-cli` inside a virtual environment. The Python package exposes the same `tunnel` command.
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, Python 3.11 or later, [uv](https://docs.astral.sh/uv/), and `/usr/bin/ssh`.
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
- Alternatively, use `pipx install ssh-tunnel-cli`, or `python -m pip install ssh-tunnel-cli` inside a virtual environment. The Python package exposes the same `tunnel` command.
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.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ssh-tunnel-cli"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  description = "Guided local SSH tunnels using your existing OpenSSH configuration"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -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.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"):
@@ -28,7 +28,7 @@ wheels = [
28
28
 
29
29
  [[package]]
30
30
  name = "ssh-tunnel-cli"
31
- version = "0.1.1"
31
+ version = "0.1.2"
32
32
  source = { editable = "." }
33
33
  dependencies = [
34
34
  { name = "prompt-toolkit" },
File without changes
File without changes