evo-cli 0.1.10__tar.gz → 0.2.0__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 (45) hide show
  1. {evo_cli-0.1.10 → evo_cli-0.2.0}/Containerfile +2 -2
  2. evo_cli-0.2.0/PKG-INFO +113 -0
  3. evo_cli-0.2.0/README.md +87 -0
  4. evo_cli-0.2.0/evo_cli/VERSION +1 -0
  5. evo_cli-0.2.0/evo_cli/__init__.py +3 -0
  6. evo_cli-0.2.0/evo_cli/__main__.py +4 -0
  7. evo_cli-0.2.0/evo_cli/base.py +1 -0
  8. evo_cli-0.2.0/evo_cli/cli.py +41 -0
  9. evo_cli-0.2.0/evo_cli/commands/cloudflare.py +447 -0
  10. evo_cli-0.2.0/evo_cli/commands/fix_claude.py +305 -0
  11. evo_cli-0.2.0/evo_cli/commands/gdrive.py +528 -0
  12. evo_cli-0.2.0/evo_cli/commands/miniconda.py +130 -0
  13. evo_cli-0.2.0/evo_cli/commands/site2s.py +289 -0
  14. evo_cli-0.2.0/evo_cli/commands/ssh.py +170 -0
  15. evo_cli-0.2.0/evo_cli/console.py +95 -0
  16. evo_cli-0.2.0/evo_cli.egg-info/PKG-INFO +113 -0
  17. {evo_cli-0.1.10 → evo_cli-0.2.0}/evo_cli.egg-info/SOURCES.txt +11 -6
  18. evo_cli-0.2.0/evo_cli.egg-info/entry_points.txt +2 -0
  19. evo_cli-0.2.0/evo_cli.egg-info/requires.txt +9 -0
  20. evo_cli-0.2.0/pyproject.toml +62 -0
  21. evo_cli-0.2.0/setup.cfg +4 -0
  22. evo_cli-0.2.0/tests/test_cli.py +18 -0
  23. evo_cli-0.2.0/tests/test_fix_claude.py +44 -0
  24. evo_cli-0.1.10/PKG-INFO +0 -71
  25. evo_cli-0.1.10/README.md +0 -42
  26. evo_cli-0.1.10/evo_cli/VERSION +0 -1
  27. evo_cli-0.1.10/evo_cli/__main__.py +0 -6
  28. evo_cli-0.1.10/evo_cli/base.py +0 -17
  29. evo_cli-0.1.10/evo_cli/cli.py +0 -81
  30. evo_cli-0.1.10/evo_cli/miniconda_setup.py +0 -176
  31. evo_cli-0.1.10/evo_cli/ssh_setup.py +0 -236
  32. evo_cli-0.1.10/evo_cli.egg-info/PKG-INFO +0 -71
  33. evo_cli-0.1.10/evo_cli.egg-info/entry_points.txt +0 -2
  34. evo_cli-0.1.10/evo_cli.egg-info/requires.txt +0 -13
  35. evo_cli-0.1.10/setup.cfg +0 -8
  36. evo_cli-0.1.10/setup.py +0 -46
  37. evo_cli-0.1.10/tests/conftest.py +0 -14
  38. evo_cli-0.1.10/tests/test_base.py +0 -5
  39. {evo_cli-0.1.10 → evo_cli-0.2.0}/HISTORY.md +0 -0
  40. {evo_cli-0.1.10 → evo_cli-0.2.0}/LICENSE +0 -0
  41. {evo_cli-0.1.10 → evo_cli-0.2.0}/MANIFEST.in +0 -0
  42. {evo_cli-0.1.10/evo_cli → evo_cli-0.2.0/evo_cli/commands}/__init__.py +0 -0
  43. {evo_cli-0.1.10 → evo_cli-0.2.0}/evo_cli.egg-info/dependency_links.txt +0 -0
  44. {evo_cli-0.1.10 → evo_cli-0.2.0}/evo_cli.egg-info/top_level.txt +0 -0
  45. {evo_cli-0.1.10 → evo_cli-0.2.0}/tests/__init__.py +0 -0
@@ -1,5 +1,5 @@
1
- FROM python:3.7-slim
1
+ FROM python:3.11-slim
2
2
  COPY . /app
3
3
  WORKDIR /app
4
4
  RUN pip install .
5
- CMD ["evo_cli"]
5
+ ENTRYPOINT ["evo"]
evo_cli-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,113 @@
1
+ Metadata-Version: 2.4
2
+ Name: evo_cli
3
+ Version: 0.2.0
4
+ Summary: Evolution CLI - a developer toolbox for setting up dev machines
5
+ Author: maycuatroi
6
+ Project-URL: Homepage, https://github.com/maycuatroi/evo-cli
7
+ Project-URL: Repository, https://github.com/maycuatroi/evo-cli
8
+ Keywords: cli,ssh,miniconda,cloudflare,devtools
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: The Unlicense (Unlicense)
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: paramiko>=2.7.0
18
+ Requires-Dist: rich>=13.0
19
+ Requires-Dist: rich-click>=1.8
20
+ Provides-Extra: test
21
+ Requires-Dist: pytest; extra == "test"
22
+ Requires-Dist: pytest-cov; extra == "test"
23
+ Requires-Dist: coverage; extra == "test"
24
+ Requires-Dist: ruff; extra == "test"
25
+ Dynamic: license-file
26
+
27
+ # Evolution CLI (Develop by Dev And for Dev)
28
+
29
+ [![codecov](https://codecov.io/gh/maycuatroi/evo-cli/branch/main/graph/badge.svg?token=evo-cli_token_here)](https://codecov.io/gh/maycuatroi/evo-cli)
30
+ [![CI](https://github.com/maycuatroi/evo-cli/actions/workflows/main.yml/badge.svg)](https://github.com/maycuatroi/evo-cli/actions/workflows/main.yml)
31
+
32
+ Awesome evo_cli created by maycuatroi
33
+
34
+ ## Install it from PyPI
35
+
36
+ ```bash
37
+ pip install evo-cli
38
+ ```
39
+
40
+ ### Available Commands
41
+
42
+ `evo` is built with [click](https://click.palletsprojects.com/) and
43
+ [rich](https://rich.readthedocs.io/). Run `evo --help` or `evo <command> -h`
44
+ for colorized help, option tables, and examples.
45
+
46
+ #### SSH Setup
47
+
48
+ Set up SSH with key-based authentication:
49
+
50
+ ```bash
51
+ evo setupssh
52
+ ```
53
+
54
+ Options:
55
+ - `-H, --host` - SSH server hostname or IP address
56
+ - `-u, --user` - SSH username
57
+ - `-p, --password` - SSH password (prefer the interactive prompt)
58
+ - `-P, --port` - SSH port (default: 22)
59
+ - `-i, --identity` - Existing private key to install instead of generating one
60
+
61
+ #### Miniconda Installation
62
+
63
+ Install Miniconda with cross-platform support:
64
+
65
+ ```bash
66
+ evo miniconda
67
+ ```
68
+
69
+ Options:
70
+ - `-p, --prefix` - Installation directory (default: ~/miniconda3 or %USERPROFILE%\miniconda3)
71
+ - `-f, --force` - Force reinstallation even if Miniconda is already installed
72
+
73
+ #### Cloudflare SSH Tunnel
74
+
75
+ Expose this Ubuntu machine's SSH server through a Cloudflare named tunnel, so you can reach it from anywhere without opening a public inbound port:
76
+
77
+ ```bash
78
+ evo cfssh -H dev.example.com
79
+ ```
80
+
81
+ It installs `cloudflared`, logs in to Cloudflare, creates a named tunnel, writes `/etc/cloudflared/config.yml` with an `ssh://` ingress rule, routes a proxied DNS record, and installs the `cloudflared` systemd service. Requires a Cloudflare account with a domain managed in Cloudflare.
82
+
83
+ Options:
84
+ - `-H, --hostname` - Public hostname for SSH, e.g. `dev.example.com`
85
+ - `-n, --name` - Tunnel name (default: first label of the hostname)
86
+ - `-P, --ssh-port` - Local SSH port to forward (default: 22)
87
+ - `--no-service` - Configure only, do not install the systemd service
88
+
89
+ To connect from a client machine, install `cloudflared` and add to `~/.ssh/config`:
90
+
91
+ ```
92
+ Host dev.example.com
93
+ User <your-user>
94
+ ProxyCommand cloudflared access ssh --hostname %h
95
+ ```
96
+
97
+ #### Fix Claude Code
98
+
99
+ Detect and fix the Claude Code 2.1.154-2.1.158 tool-result delivery bug (commands run but their output is returned to the model empty, duplicated, or out of order):
100
+
101
+ ```bash
102
+ evo f-claude
103
+ ```
104
+
105
+ It checks the installed version against the affected range, disables the auto-updater in `~/.claude/settings.json` (backing it up first), downgrades to a known-good build, respawns background sessions, and verifies the result.
106
+
107
+ Options:
108
+ - `-c, --check` - Diagnose only; make no changes
109
+ - `--pin-version` - Known-good version to install when downgrading (default: 2.1.153)
110
+ - `--no-downgrade` - Only disable the auto-updater; skip the reinstall
111
+ - `-y, --yes` - Skip the confirmation prompt
112
+ - `-f, --force` - Apply the fix even if the version is not in the affected range
113
+ - `--unpin` - Undo the fix: re-enable the auto-updater and install the latest build
@@ -0,0 +1,87 @@
1
+ # Evolution CLI (Develop by Dev And for Dev)
2
+
3
+ [![codecov](https://codecov.io/gh/maycuatroi/evo-cli/branch/main/graph/badge.svg?token=evo-cli_token_here)](https://codecov.io/gh/maycuatroi/evo-cli)
4
+ [![CI](https://github.com/maycuatroi/evo-cli/actions/workflows/main.yml/badge.svg)](https://github.com/maycuatroi/evo-cli/actions/workflows/main.yml)
5
+
6
+ Awesome evo_cli created by maycuatroi
7
+
8
+ ## Install it from PyPI
9
+
10
+ ```bash
11
+ pip install evo-cli
12
+ ```
13
+
14
+ ### Available Commands
15
+
16
+ `evo` is built with [click](https://click.palletsprojects.com/) and
17
+ [rich](https://rich.readthedocs.io/). Run `evo --help` or `evo <command> -h`
18
+ for colorized help, option tables, and examples.
19
+
20
+ #### SSH Setup
21
+
22
+ Set up SSH with key-based authentication:
23
+
24
+ ```bash
25
+ evo setupssh
26
+ ```
27
+
28
+ Options:
29
+ - `-H, --host` - SSH server hostname or IP address
30
+ - `-u, --user` - SSH username
31
+ - `-p, --password` - SSH password (prefer the interactive prompt)
32
+ - `-P, --port` - SSH port (default: 22)
33
+ - `-i, --identity` - Existing private key to install instead of generating one
34
+
35
+ #### Miniconda Installation
36
+
37
+ Install Miniconda with cross-platform support:
38
+
39
+ ```bash
40
+ evo miniconda
41
+ ```
42
+
43
+ Options:
44
+ - `-p, --prefix` - Installation directory (default: ~/miniconda3 or %USERPROFILE%\miniconda3)
45
+ - `-f, --force` - Force reinstallation even if Miniconda is already installed
46
+
47
+ #### Cloudflare SSH Tunnel
48
+
49
+ Expose this Ubuntu machine's SSH server through a Cloudflare named tunnel, so you can reach it from anywhere without opening a public inbound port:
50
+
51
+ ```bash
52
+ evo cfssh -H dev.example.com
53
+ ```
54
+
55
+ It installs `cloudflared`, logs in to Cloudflare, creates a named tunnel, writes `/etc/cloudflared/config.yml` with an `ssh://` ingress rule, routes a proxied DNS record, and installs the `cloudflared` systemd service. Requires a Cloudflare account with a domain managed in Cloudflare.
56
+
57
+ Options:
58
+ - `-H, --hostname` - Public hostname for SSH, e.g. `dev.example.com`
59
+ - `-n, --name` - Tunnel name (default: first label of the hostname)
60
+ - `-P, --ssh-port` - Local SSH port to forward (default: 22)
61
+ - `--no-service` - Configure only, do not install the systemd service
62
+
63
+ To connect from a client machine, install `cloudflared` and add to `~/.ssh/config`:
64
+
65
+ ```
66
+ Host dev.example.com
67
+ User <your-user>
68
+ ProxyCommand cloudflared access ssh --hostname %h
69
+ ```
70
+
71
+ #### Fix Claude Code
72
+
73
+ Detect and fix the Claude Code 2.1.154-2.1.158 tool-result delivery bug (commands run but their output is returned to the model empty, duplicated, or out of order):
74
+
75
+ ```bash
76
+ evo f-claude
77
+ ```
78
+
79
+ It checks the installed version against the affected range, disables the auto-updater in `~/.claude/settings.json` (backing it up first), downgrades to a known-good build, respawns background sessions, and verifies the result.
80
+
81
+ Options:
82
+ - `-c, --check` - Diagnose only; make no changes
83
+ - `--pin-version` - Known-good version to install when downgrading (default: 2.1.153)
84
+ - `--no-downgrade` - Only disable the auto-updater; skip the reinstall
85
+ - `-y, --yes` - Skip the confirmation prompt
86
+ - `-f, --force` - Apply the fix even if the version is not in the affected range
87
+ - `--unpin` - Undo the fix: re-enable the auto-updater and install the latest build
@@ -0,0 +1 @@
1
+ 0.2.0
@@ -0,0 +1,3 @@
1
+ from pathlib import Path
2
+
3
+ __version__ = (Path(__file__).parent / "VERSION").read_text(encoding="utf-8").strip()
@@ -0,0 +1,4 @@
1
+ from evo_cli.cli import main
2
+
3
+ if __name__ == "__main__":
4
+ main()
@@ -0,0 +1 @@
1
+ NAME = "evo_cli"
@@ -0,0 +1,41 @@
1
+ import rich_click as click
2
+
3
+ from evo_cli import __version__
4
+ from evo_cli.commands.cloudflare import cfssh
5
+ from evo_cli.commands.fix_claude import f_claude
6
+ from evo_cli.commands.gdrive import gdrive
7
+ from evo_cli.commands.miniconda import miniconda
8
+ from evo_cli.commands.site2s import site2s
9
+ from evo_cli.commands.ssh import setupssh
10
+
11
+ click.rich_click.USE_MARKDOWN = True
12
+ click.rich_click.SHOW_ARGUMENTS = True
13
+ click.rich_click.STYLE_OPTIONS_TABLE_BOX = "SIMPLE"
14
+ click.rich_click.STYLE_COMMANDS_TABLE_BOX = "SIMPLE"
15
+ click.rich_click.STYLE_OPTION = "bold cyan"
16
+ click.rich_click.STYLE_COMMAND = "bold cyan"
17
+ click.rich_click.STYLE_SWITCH = "bold green"
18
+
19
+ CONTEXT_SETTINGS = {"help_option_names": ["-h", "--help"]}
20
+
21
+
22
+ @click.group(context_settings=CONTEXT_SETTINGS)
23
+ @click.version_option(__version__, "-v", "--version", prog_name="evo")
24
+ def cli():
25
+ """**EVO CLI** - a developer toolbox for setting up dev machines.
26
+
27
+ Bootstrap a fresh machine fast: passwordless SSH, Miniconda, and
28
+ Cloudflare SSH tunnels. Run any command with `-h` for details.
29
+ """
30
+
31
+
32
+ cli.add_command(setupssh)
33
+ cli.add_command(miniconda)
34
+ cli.add_command(cfssh)
35
+ cli.add_command(f_claude)
36
+ cli.add_command(gdrive)
37
+ cli.add_command(site2s)
38
+
39
+
40
+ def main():
41
+ cli()