just-cli 0.3.1__tar.gz → 0.4.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.
- just_cli-0.4.0/.claude/settings.local.json +7 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/.gitignore +4 -1
- {just_cli-0.3.1 → just_cli-0.4.0}/PKG-INFO +1 -1
- {just_cli-0.3.1 → just_cli-0.4.0}/pyproject.toml +1 -1
- just_cli-0.4.0/scripts/ai_coding/agents2claude.py +41 -0
- just_cli-0.4.0/scripts/ai_coding/claude2agents.py +41 -0
- just_cli-0.4.0/src/just/installers/glab/installer.py +65 -0
- just_cli-0.4.0/src/just/installers/kimi/installer.py +24 -0
- just_cli-0.4.0/src/just/installers/mssh/installer.py +9 -0
- just_cli-0.4.0/tests/test_extension/test_extension_add.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/uv.lock +30 -1
- just_cli-0.3.1/.claude/plans/2026-04-18-edit-installer-macos-micro.md +0 -237
- just_cli-0.3.1/.claude/settings.local.json +0 -9
- just_cli-0.3.1/src/just/installers/mssh/installer.py +0 -14
- {just_cli-0.3.1 → just_cli-0.4.0}/.claude/skills/textual/README.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/.claude/skills/textual/SKILL.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/.claude/skills/textual/guide.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/.claude/skills/textual/quick-reference.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/.github/workflows/publish.yml +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/AGENTS.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/Dockerfile +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/README.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/docs/extension_guide.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/docs/images/editor_demo.png +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/docs/images/viewer_demo.png +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/scripts/system/linux/proxy/proxy.sh +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/scripts/system/mac/proxy/proxy.sh +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/scripts/system/windows/proxy/proxy.bat +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/scripts/system/windows/proxy/proxy.ps1 +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/cli.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/download.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/edit.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/ext/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/ext/add.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/ext/edit.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/ext/list.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/ext/remove.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/extract.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/install.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/linux.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/note.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/tunnel.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/view.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/commands/workspace.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/config/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/config/config.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/config/utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/extension/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/extension/generator.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/extension/parser.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/extension/utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/extension/validator.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/AGENTS.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/decorator.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/install_package.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/installers/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/installers/binary_release.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/installers/remote_script.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/package_info.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/source/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/source/base.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/source/http.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/source/local.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/installer/utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/system_probe/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/system_probe/system_info.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/core/system_probe/system_probe.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/AGENTS.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/brew/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/claude-code/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/claude-code/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/cloudflare/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/cloudflare/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/docker/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/docker/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/edit/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/edit/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/gh/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/gh/installer.py +0 -0
- {just_cli-0.3.1/src/just/installers/mssh → just_cli-0.4.0/src/just/installers/glab}/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/miniconda3/installer.py +0 -0
- {just_cli-0.3.1/src/just/installers/nvm → just_cli-0.4.0/src/just/installers/mssh}/__init__.py +0 -0
- {just_cli-0.3.1/src/just/installers/qodercli → just_cli-0.4.0/src/just/installers/nvm}/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/nvm/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/openclaw/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/opencode/installer.py +0 -0
- {just_cli-0.3.1/src/just/installers/tailscale → just_cli-0.4.0/src/just/installers/qodercli}/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/qodercli/installer.py +0 -0
- /just_cli-0.3.1/tests/test_extension/test_extension_add.py → /just_cli-0.4.0/src/just/installers/tailscale/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/tailscale/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/uv/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/installers/uv/installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/tui/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/tui/editor.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/tui/extension.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/tui/markdown.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/tui/note.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/tui/workspace.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/AGENTS.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/__init__.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/compression_handler.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/extractor.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/format_detect.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/sevenzip_handler.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/tar_handler.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/archive/zip_handler.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/docker_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/download_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/echo_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/env_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/file_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/format_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/note_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/progress.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/shell_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/system_probe.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/typer_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/src/just/utils/user_interaction.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/AGENTS.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/requirements.txt +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/run_tests.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_archive_extraction.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_bash_script_installer.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_download.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_extension/README.md +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_extension/test_ext.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_extension.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_file_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_init.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_installer_e2e.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_linux_commands.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_progress_utils.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/test_system_probe.py +0 -0
- {just_cli-0.3.1 → just_cli-0.4.0}/tests/testing.py +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""Rename all AGENTS.md files to CLAUDE.md under a given workspace."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import os
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def agents_to_claude(workspace: str) -> list[Path]:
|
|
9
|
+
renamed = []
|
|
10
|
+
for dirpath, _, filenames in os.walk(workspace):
|
|
11
|
+
if "AGENTS.md" in filenames:
|
|
12
|
+
old_path = Path(dirpath) / "AGENTS.md"
|
|
13
|
+
new_path = Path(dirpath) / "CLAUDE.md"
|
|
14
|
+
old_path.rename(new_path)
|
|
15
|
+
renamed.append(new_path)
|
|
16
|
+
return renamed
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main() -> None:
|
|
20
|
+
parser = argparse.ArgumentParser(
|
|
21
|
+
description="Rename all AGENTS.md files to CLAUDE.md under a workspace."
|
|
22
|
+
)
|
|
23
|
+
parser.add_argument(
|
|
24
|
+
"workspace",
|
|
25
|
+
nargs="?",
|
|
26
|
+
default="./",
|
|
27
|
+
help="Root directory to search (default: current directory)",
|
|
28
|
+
)
|
|
29
|
+
args = parser.parse_args()
|
|
30
|
+
|
|
31
|
+
renamed = agents_to_claude(args.workspace)
|
|
32
|
+
if renamed:
|
|
33
|
+
for path in renamed:
|
|
34
|
+
print(f"Renamed: {path}")
|
|
35
|
+
print(f"\nTotal: {len(renamed)} file(s) renamed.")
|
|
36
|
+
else:
|
|
37
|
+
print("No AGENTS.md files found.")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
if __name__ == "__main__":
|
|
41
|
+
main()
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""Rename all CLAUDE.md files to AGENTS.md under a given workspace."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import os
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def claude_to_agents(workspace: str) -> list[Path]:
|
|
9
|
+
renamed = []
|
|
10
|
+
for dirpath, _, filenames in os.walk(workspace):
|
|
11
|
+
if "CLAUDE.md" in filenames:
|
|
12
|
+
old_path = Path(dirpath) / "CLAUDE.md"
|
|
13
|
+
new_path = Path(dirpath) / "AGENTS.md"
|
|
14
|
+
old_path.rename(new_path)
|
|
15
|
+
renamed.append(new_path)
|
|
16
|
+
return renamed
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main() -> None:
|
|
20
|
+
parser = argparse.ArgumentParser(
|
|
21
|
+
description="Rename all CLAUDE.md files to AGENTS.md under a workspace."
|
|
22
|
+
)
|
|
23
|
+
parser.add_argument(
|
|
24
|
+
"workspace",
|
|
25
|
+
nargs="?",
|
|
26
|
+
default="./",
|
|
27
|
+
help="Root directory to search (default: current directory)",
|
|
28
|
+
)
|
|
29
|
+
args = parser.parse_args()
|
|
30
|
+
|
|
31
|
+
renamed = claude_to_agents(args.workspace)
|
|
32
|
+
if renamed:
|
|
33
|
+
for path in renamed:
|
|
34
|
+
print(f"Renamed: {path}")
|
|
35
|
+
print(f"\nTotal: {len(renamed)} file(s) renamed.")
|
|
36
|
+
else:
|
|
37
|
+
print("No CLAUDE.md files found.")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
if __name__ == "__main__":
|
|
41
|
+
main()
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import just
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@just.installer(check="glab version")
|
|
5
|
+
def install_glab():
|
|
6
|
+
"""Install GitLab CLI (glab)."""
|
|
7
|
+
|
|
8
|
+
if just.system.platform == "darwin":
|
|
9
|
+
if just.system.pms.brew.is_available():
|
|
10
|
+
just.execute_commands("brew install glab")
|
|
11
|
+
else:
|
|
12
|
+
raise NotImplementedError(
|
|
13
|
+
"Homebrew is required to install glab on macOS.\n"
|
|
14
|
+
"Visit: https://gitlab.com/gitlab-org/cli/-/releases"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
elif just.system.platform == "windows":
|
|
18
|
+
if just.system.pms.winget.is_available():
|
|
19
|
+
just.execute_commands("winget install glab.glab")
|
|
20
|
+
else:
|
|
21
|
+
raise NotImplementedError(
|
|
22
|
+
"winget is required to install glab on Windows.\n"
|
|
23
|
+
"Visit: https://gitlab.com/gitlab-org/cli/-/releases"
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
elif just.system.platform == "linux":
|
|
27
|
+
_install_linux()
|
|
28
|
+
|
|
29
|
+
else:
|
|
30
|
+
raise NotImplementedError(
|
|
31
|
+
f"glab is not supported on {just.system.platform}.\n"
|
|
32
|
+
"Visit: https://gitlab.com/gitlab-org/cli/-/releases"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
just.echo.success("GitLab CLI (glab) installed successfully.")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _install_linux():
|
|
39
|
+
arch_map = {"x86_64": "amd64", "aarch64": "arm64"}
|
|
40
|
+
arch = arch_map.get(just.system.arch)
|
|
41
|
+
if not arch:
|
|
42
|
+
raise NotImplementedError(f"Unsupported arch: {just.system.arch}")
|
|
43
|
+
|
|
44
|
+
if just.system.pms.brew.is_available():
|
|
45
|
+
just.execute_commands("brew install glab")
|
|
46
|
+
return
|
|
47
|
+
|
|
48
|
+
if just.system.pms.apt.is_available():
|
|
49
|
+
try:
|
|
50
|
+
just.execute_commands(
|
|
51
|
+
"sudo apt update && sudo apt install -y glab"
|
|
52
|
+
)
|
|
53
|
+
return
|
|
54
|
+
except Exception:
|
|
55
|
+
pass
|
|
56
|
+
|
|
57
|
+
url = (
|
|
58
|
+
"https://gitlab.com/gitlab-org/cli/-/releases/permalink/latest/"
|
|
59
|
+
f"downloads/glab_linux_{arch}.tar.gz"
|
|
60
|
+
)
|
|
61
|
+
just.ArchiveInstaller(
|
|
62
|
+
url=url,
|
|
63
|
+
executables=["glab"],
|
|
64
|
+
name="glab",
|
|
65
|
+
).run()
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import just
|
|
2
|
+
from just.core.installer import BashScriptInstaller, PowerShellInstaller
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@just.installer(check="kimi --version")
|
|
6
|
+
def install_kimi():
|
|
7
|
+
"""Install Kimi Code CLI by Moonshot AI."""
|
|
8
|
+
|
|
9
|
+
if just.system.platform in ("linux", "darwin"):
|
|
10
|
+
BashScriptInstaller(
|
|
11
|
+
script_url="https://code.kimi.com/install.sh",
|
|
12
|
+
name="kimi",
|
|
13
|
+
).run()
|
|
14
|
+
|
|
15
|
+
elif just.system.platform == "windows":
|
|
16
|
+
PowerShellInstaller(
|
|
17
|
+
script_url="https://code.kimi.com/install.ps1",
|
|
18
|
+
name="kimi",
|
|
19
|
+
).run()
|
|
20
|
+
|
|
21
|
+
else:
|
|
22
|
+
raise NotImplementedError(
|
|
23
|
+
f"Kimi Code CLI is not supported on {just.system.platform}."
|
|
24
|
+
)
|
|
File without changes
|
|
@@ -316,7 +316,7 @@ wheels = [
|
|
|
316
316
|
|
|
317
317
|
[[package]]
|
|
318
318
|
name = "just-cli"
|
|
319
|
-
version = "0.
|
|
319
|
+
version = "0.4.0"
|
|
320
320
|
source = { editable = "." }
|
|
321
321
|
dependencies = [
|
|
322
322
|
{ name = "httpx" },
|
|
@@ -329,9 +329,15 @@ dependencies = [
|
|
|
329
329
|
{ name = "zstandard" },
|
|
330
330
|
]
|
|
331
331
|
|
|
332
|
+
[package.optional-dependencies]
|
|
333
|
+
dev = [
|
|
334
|
+
{ name = "loguru" },
|
|
335
|
+
]
|
|
336
|
+
|
|
332
337
|
[package.metadata]
|
|
333
338
|
requires-dist = [
|
|
334
339
|
{ name = "httpx" },
|
|
340
|
+
{ name = "loguru", marker = "extra == 'dev'" },
|
|
335
341
|
{ name = "prompt-toolkit", specifier = ">=3.0.0" },
|
|
336
342
|
{ name = "py7zr" },
|
|
337
343
|
{ name = "python-dotenv" },
|
|
@@ -340,6 +346,7 @@ requires-dist = [
|
|
|
340
346
|
{ name = "typer", specifier = ">=0.20.0" },
|
|
341
347
|
{ name = "zstandard" },
|
|
342
348
|
]
|
|
349
|
+
provides-extras = ["dev"]
|
|
343
350
|
|
|
344
351
|
[[package]]
|
|
345
352
|
name = "linkify-it-py"
|
|
@@ -353,6 +360,19 @@ wheels = [
|
|
|
353
360
|
{ url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820, upload-time = "2024-02-04T14:48:02.496Z" },
|
|
354
361
|
]
|
|
355
362
|
|
|
363
|
+
[[package]]
|
|
364
|
+
name = "loguru"
|
|
365
|
+
version = "0.7.3"
|
|
366
|
+
source = { registry = "https://pypi.org/simple" }
|
|
367
|
+
dependencies = [
|
|
368
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
369
|
+
{ name = "win32-setctime", marker = "sys_platform == 'win32'" },
|
|
370
|
+
]
|
|
371
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" }
|
|
372
|
+
wheels = [
|
|
373
|
+
{ url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload-time = "2024-12-06T11:20:54.538Z" },
|
|
374
|
+
]
|
|
375
|
+
|
|
356
376
|
[[package]]
|
|
357
377
|
name = "markdown-it-py"
|
|
358
378
|
version = "4.0.0"
|
|
@@ -802,6 +822,15 @@ wheels = [
|
|
|
802
822
|
{ url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" },
|
|
803
823
|
]
|
|
804
824
|
|
|
825
|
+
[[package]]
|
|
826
|
+
name = "win32-setctime"
|
|
827
|
+
version = "1.2.0"
|
|
828
|
+
source = { registry = "https://pypi.org/simple" }
|
|
829
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" }
|
|
830
|
+
wheels = [
|
|
831
|
+
{ url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" },
|
|
832
|
+
]
|
|
833
|
+
|
|
805
834
|
[[package]]
|
|
806
835
|
name = "zstandard"
|
|
807
836
|
version = "0.25.0"
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
# Edit Installer: macOS Support with micro Implementation Plan
|
|
2
|
-
|
|
3
|
-
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
-
|
|
5
|
-
**Goal:** Add macOS support to `just install edit` by installing the `micro` text editor
|
|
6
|
-
|
|
7
|
-
**Architecture:** Platform-specific branching in installer function - Windows/Linux continue using Microsoft Edit, macOS uses micro with symlink from `edit` to `micro`.
|
|
8
|
-
|
|
9
|
-
**Tech Stack:** Python 3.10+, typer, just installer framework
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## File Structure
|
|
14
|
-
|
|
15
|
-
**Files to modify:**
|
|
16
|
-
- `src/just/installers/edit/installer.py` - Main installer implementation
|
|
17
|
-
|
|
18
|
-
**No new files needed.**
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Chunk 1: Update installer.py with macOS micro support
|
|
23
|
-
|
|
24
|
-
### Task 1: Modify version parameter and add platform detection
|
|
25
|
-
|
|
26
|
-
**Files:**
|
|
27
|
-
- Modify: `src/just/installers/edit/installer.py`
|
|
28
|
-
|
|
29
|
-
- [ ] **Step 1: Update the version parameter default**
|
|
30
|
-
|
|
31
|
-
Change the `version` parameter default from `"1.2.0"` to `None`:
|
|
32
|
-
|
|
33
|
-
```python
|
|
34
|
-
def install_edit(
|
|
35
|
-
version: just.Annotated[
|
|
36
|
-
str, just.Option("-v", "--version", help="The version of Edit to install.")
|
|
37
|
-
] = None, # Changed from "1.2.0"
|
|
38
|
-
):
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
- [ ] **Step 2: Add version resolution logic**
|
|
42
|
-
|
|
43
|
-
Add platform-specific default version after the function definition:
|
|
44
|
-
|
|
45
|
-
```python
|
|
46
|
-
# Resolve default version based on platform
|
|
47
|
-
if version is None:
|
|
48
|
-
if just.system.platform == "darwin":
|
|
49
|
-
version = "2.0.15" # micro latest stable
|
|
50
|
-
else:
|
|
51
|
-
version = "1.2.0" # Microsoft Edit
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
- [ ] **Step 3: Update docstring**
|
|
55
|
-
|
|
56
|
-
Update the docstring to reflect macOS support:
|
|
57
|
-
|
|
58
|
-
```python
|
|
59
|
-
"""
|
|
60
|
-
Install a terminal text editor.
|
|
61
|
-
|
|
62
|
-
- Windows/Linux: Microsoft Edit
|
|
63
|
-
- macOS: micro (with 'edit' symlink)
|
|
64
|
-
"""
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
- [ ] **Step 4: Commit**
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
git add src/just/installers/edit/installer.py
|
|
71
|
-
git commit -m "feat(edit): add version parameter resolution for platform defaults"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
### Task 2: Add macOS branch with micro installation
|
|
77
|
-
|
|
78
|
-
**Files:**
|
|
79
|
-
- Modify: `src/just/installers/edit/installer.py`
|
|
80
|
-
|
|
81
|
-
- [ ] **Step 1: Add macOS platform branch**
|
|
82
|
-
|
|
83
|
-
Add the `elif just.system.platform == "darwin":` branch before the `else` clause:
|
|
84
|
-
|
|
85
|
-
```python
|
|
86
|
-
elif just.system.platform == "darwin":
|
|
87
|
-
# Install micro text editor for macOS
|
|
88
|
-
editor_name = "micro"
|
|
89
|
-
url = f"https://github.com/zyedidia/micro/releases/download/v{version}/micro-{version}-{just.system.arch}-darwin.tar.gz"
|
|
90
|
-
|
|
91
|
-
just.echo.info(f"Installing {editor_name} v{version} as the default editor...")
|
|
92
|
-
|
|
93
|
-
just.ArchiveInstaller(
|
|
94
|
-
url=url,
|
|
95
|
-
executables=["micro"],
|
|
96
|
-
name="micro",
|
|
97
|
-
).run()
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
- [ ] **Step 2: Add edit -> micro symlink creation**
|
|
101
|
-
|
|
102
|
-
After the `ArchiveInstaller().run()` call in the macOS branch, add symlink creation:
|
|
103
|
-
|
|
104
|
-
```python
|
|
105
|
-
# Create edit -> micro symlink for consistency
|
|
106
|
-
from just.core.installer.utils import create_symlink_or_wrapper
|
|
107
|
-
from just.core.config.utils import get_bin_dir
|
|
108
|
-
|
|
109
|
-
micro_path = get_bin_dir() / "micro"
|
|
110
|
-
create_symlink_or_wrapper(
|
|
111
|
-
target=micro_path,
|
|
112
|
-
link_dir=get_bin_dir(),
|
|
113
|
-
link_name="edit"
|
|
114
|
-
)
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
- [ ] **Step 3: Add info log for Windows/Linux branches**
|
|
118
|
-
|
|
119
|
-
Add `just.echo.info()` calls before `ArchiveInstaller().run()` in Windows and Linux branches:
|
|
120
|
-
|
|
121
|
-
```python
|
|
122
|
-
just.echo.info(f"Installing Microsoft Edit v{version} as the default editor...")
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
- [ ] **Step 4: Commit**
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
git add src/just/installers/edit/installer.py
|
|
129
|
-
git commit -m "feat(edit): add macOS support with micro editor"
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
### Task 3: Update installer decorator check command
|
|
135
|
-
|
|
136
|
-
**Files:**
|
|
137
|
-
- Modify: `src/just/installers/edit/installer.py`
|
|
138
|
-
|
|
139
|
-
- [ ] **Step 1: Update check command for platform detection**
|
|
140
|
-
|
|
141
|
-
The current `@just.installer(check="edit -v")` won't work for macOS since we install micro first.
|
|
142
|
-
Update to use a dynamic check or remove the check parameter for now:
|
|
143
|
-
|
|
144
|
-
```python
|
|
145
|
-
@just.installer(check="edit --version") # Works for both after symlink is created
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Note: `micro --version` works, and after symlink `edit --version` will invoke micro.
|
|
149
|
-
|
|
150
|
-
- [ ] **Step 2: Commit**
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
git add src/just/installers/edit/installer.py
|
|
154
|
-
git commit -m "fix(edit): update check command to work with micro"
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Chunk 2: Testing
|
|
160
|
-
|
|
161
|
-
### Task 4: Manual testing on macOS
|
|
162
|
-
|
|
163
|
-
**Files:**
|
|
164
|
-
- None (manual testing)
|
|
165
|
-
|
|
166
|
-
- [ ] **Step 1: Test macOS installation**
|
|
167
|
-
|
|
168
|
-
Run on macOS:
|
|
169
|
-
```bash
|
|
170
|
-
just install edit
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Expected output:
|
|
174
|
-
```
|
|
175
|
-
Installing micro v2.0.15 as the default editor...
|
|
176
|
-
...
|
|
177
|
-
Installing micro v2.0.15 as the default editor...
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
- [ ] **Step 2: Verify edit command works**
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
edit --version
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Expected: micro version output
|
|
187
|
-
|
|
188
|
-
- [ ] **Step 3: Verify symlink exists**
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
ls -la ~/.just/bin/edit
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Expected: symlink pointing to micro
|
|
195
|
-
|
|
196
|
-
- [ ] **Step 4: Test version override**
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
just install edit -v 2.0.14
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
Expected: installs specified micro version
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
### Task 5: Verify existing platforms unchanged
|
|
207
|
-
|
|
208
|
-
**Files:**
|
|
209
|
-
- None (manual testing on Windows/Linux)
|
|
210
|
-
|
|
211
|
-
- [ ] **Step 1: Test default behavior**
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
just install edit
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
Expected: installs Microsoft Edit v1.2.0
|
|
218
|
-
|
|
219
|
-
- [ ] **Step 2: Test version override**
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
just install edit -v 1.1.0
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Expected: installs specified Microsoft Edit version
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Final State
|
|
230
|
-
|
|
231
|
-
After implementation, `just install edit` will:
|
|
232
|
-
|
|
233
|
-
| Platform | Editor | Default Version | Command Available |
|
|
234
|
-
|----------|--------|-----------------|-------------------|
|
|
235
|
-
| macOS | micro | 2.0.15 | `edit` (-> micro) |
|
|
236
|
-
| Windows | Microsoft Edit | 1.2.0 | `edit` |
|
|
237
|
-
| Linux | Microsoft Edit | 1.2.0 | `edit` |
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import just
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
@just.installer
|
|
5
|
-
def install_mssh(
|
|
6
|
-
version: just.Annotated[str, just.Option(
|
|
7
|
-
'-v', '--version',
|
|
8
|
-
help="The version of nvm to install."
|
|
9
|
-
)] = ""
|
|
10
|
-
):
|
|
11
|
-
"""
|
|
12
|
-
Install TUI SSH Manager
|
|
13
|
-
"""
|
|
14
|
-
just.execute_commands("pip install https://github.com/zjxszzzcb/ssh-manager/releases/download/v0.1.0/ssh_manager-0.1.0-py3-none-any.whl")
|
|
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
|
|
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
|
|
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
|
|
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
|
{just_cli-0.3.1/src/just/installers/mssh → just_cli-0.4.0/src/just/installers/glab}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{just_cli-0.3.1/src/just/installers/nvm → just_cli-0.4.0/src/just/installers/mssh}/__init__.py
RENAMED
|
File without changes
|
{just_cli-0.3.1/src/just/installers/qodercli → just_cli-0.4.0/src/just/installers/nvm}/__init__.py
RENAMED
|
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
|
|
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
|
|
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
|