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.
- {evo_cli-0.1.10 → evo_cli-0.2.0}/Containerfile +2 -2
- evo_cli-0.2.0/PKG-INFO +113 -0
- evo_cli-0.2.0/README.md +87 -0
- evo_cli-0.2.0/evo_cli/VERSION +1 -0
- evo_cli-0.2.0/evo_cli/__init__.py +3 -0
- evo_cli-0.2.0/evo_cli/__main__.py +4 -0
- evo_cli-0.2.0/evo_cli/base.py +1 -0
- evo_cli-0.2.0/evo_cli/cli.py +41 -0
- evo_cli-0.2.0/evo_cli/commands/cloudflare.py +447 -0
- evo_cli-0.2.0/evo_cli/commands/fix_claude.py +305 -0
- evo_cli-0.2.0/evo_cli/commands/gdrive.py +528 -0
- evo_cli-0.2.0/evo_cli/commands/miniconda.py +130 -0
- evo_cli-0.2.0/evo_cli/commands/site2s.py +289 -0
- evo_cli-0.2.0/evo_cli/commands/ssh.py +170 -0
- evo_cli-0.2.0/evo_cli/console.py +95 -0
- evo_cli-0.2.0/evo_cli.egg-info/PKG-INFO +113 -0
- {evo_cli-0.1.10 → evo_cli-0.2.0}/evo_cli.egg-info/SOURCES.txt +11 -6
- evo_cli-0.2.0/evo_cli.egg-info/entry_points.txt +2 -0
- evo_cli-0.2.0/evo_cli.egg-info/requires.txt +9 -0
- evo_cli-0.2.0/pyproject.toml +62 -0
- evo_cli-0.2.0/setup.cfg +4 -0
- evo_cli-0.2.0/tests/test_cli.py +18 -0
- evo_cli-0.2.0/tests/test_fix_claude.py +44 -0
- evo_cli-0.1.10/PKG-INFO +0 -71
- evo_cli-0.1.10/README.md +0 -42
- evo_cli-0.1.10/evo_cli/VERSION +0 -1
- evo_cli-0.1.10/evo_cli/__main__.py +0 -6
- evo_cli-0.1.10/evo_cli/base.py +0 -17
- evo_cli-0.1.10/evo_cli/cli.py +0 -81
- evo_cli-0.1.10/evo_cli/miniconda_setup.py +0 -176
- evo_cli-0.1.10/evo_cli/ssh_setup.py +0 -236
- evo_cli-0.1.10/evo_cli.egg-info/PKG-INFO +0 -71
- evo_cli-0.1.10/evo_cli.egg-info/entry_points.txt +0 -2
- evo_cli-0.1.10/evo_cli.egg-info/requires.txt +0 -13
- evo_cli-0.1.10/setup.cfg +0 -8
- evo_cli-0.1.10/setup.py +0 -46
- evo_cli-0.1.10/tests/conftest.py +0 -14
- evo_cli-0.1.10/tests/test_base.py +0 -5
- {evo_cli-0.1.10 → evo_cli-0.2.0}/HISTORY.md +0 -0
- {evo_cli-0.1.10 → evo_cli-0.2.0}/LICENSE +0 -0
- {evo_cli-0.1.10 → evo_cli-0.2.0}/MANIFEST.in +0 -0
- {evo_cli-0.1.10/evo_cli → evo_cli-0.2.0/evo_cli/commands}/__init__.py +0 -0
- {evo_cli-0.1.10 → evo_cli-0.2.0}/evo_cli.egg-info/dependency_links.txt +0 -0
- {evo_cli-0.1.10 → evo_cli-0.2.0}/evo_cli.egg-info/top_level.txt +0 -0
- {evo_cli-0.1.10 → evo_cli-0.2.0}/tests/__init__.py +0 -0
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
|
+
[](https://codecov.io/gh/maycuatroi/evo-cli)
|
|
30
|
+
[](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
|
evo_cli-0.2.0/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Evolution CLI (Develop by Dev And for Dev)
|
|
2
|
+
|
|
3
|
+
[](https://codecov.io/gh/maycuatroi/evo-cli)
|
|
4
|
+
[](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 @@
|
|
|
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()
|