multi-lang-build 0.3.1__tar.gz → 0.3.3__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.
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/PKG-INFO +24 -24
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/README.md +23 -23
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/pyproject.toml +2 -2
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/__init__.py +2 -2
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/cli.py +75 -75
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/pnpm.py +12 -12
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python_support/cli.py +11 -11
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/mirror/cli.py +66 -66
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/.gitignore +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/LICENSE +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/base.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_compiler.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/binary.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/builder.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/cleaner.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/env.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/mirror.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/module.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/tester.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/pnpm_support/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/pnpm_support/executor.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/pnpm_support/project.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python_support/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python_support/cleaner.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python_support/detector.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python_support/installer.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/python_support/venv.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/ide_register.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/log.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/mirror/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/mirror/config.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/py.typed +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/claude.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/codebuddy.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/opencode.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/trae.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/types.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/tests/__init__.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/tests/conftest.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/tests/test_compiler.py +0 -0
- {multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/tests/test_mirror.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-lang-build
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Multi-language automated build tool with domestic mirror acceleration support
|
|
5
5
|
Project-URL: Homepage, https://github.com/example/multi-lang-build
|
|
6
6
|
Project-URL: Repository, https://github.com/example/multi-lang-build
|
|
@@ -177,41 +177,41 @@ compiler.build(
|
|
|
177
177
|
|
|
178
178
|
| IDE | 命令 | 说明 |
|
|
179
179
|
|-----|------|------|
|
|
180
|
-
| 🤖 **Claude Code** | `multi-lang-
|
|
181
|
-
| 💠 **OpenCode** | `multi-lang-
|
|
182
|
-
| 🔷 **Trae** | `multi-lang-
|
|
183
|
-
| 🎯 **CodeBuddy** | `multi-lang-
|
|
180
|
+
| 🤖 **Claude Code** | `multi-lang-skill claude` | 默认,AI 助手原生支持 |
|
|
181
|
+
| 💠 **OpenCode** | `multi-lang-skill opencode` | 智能代码助手集成 |
|
|
182
|
+
| 🔷 **Trae** | `multi-lang-skill trae` | 字节跳动 AI IDE |
|
|
183
|
+
| 🎯 **CodeBuddy** | `multi-lang-skill codebuddy` | 代码伙伴插件 |
|
|
184
184
|
|
|
185
185
|
### 注册 Claude Code(默认)
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
188
|
# 使用独立命令
|
|
189
|
-
multi-lang-
|
|
189
|
+
multi-lang-skill
|
|
190
190
|
|
|
191
191
|
# 或指定 IDE
|
|
192
|
-
multi-lang-
|
|
193
|
-
multi-lang-
|
|
194
|
-
multi-lang-
|
|
195
|
-
multi-lang-
|
|
192
|
+
multi-lang-skill claude
|
|
193
|
+
multi-lang-skill opencode
|
|
194
|
+
multi-lang-skill trae
|
|
195
|
+
multi-lang-skill codebuddy
|
|
196
196
|
|
|
197
197
|
# 注册到全局配置
|
|
198
|
-
multi-lang-
|
|
198
|
+
multi-lang-skill claude --global
|
|
199
199
|
```
|
|
200
200
|
|
|
201
201
|
### 注册其他 IDE
|
|
202
202
|
|
|
203
203
|
```bash
|
|
204
204
|
# 注册到 OpenCode
|
|
205
|
-
multi-lang-
|
|
205
|
+
multi-lang-skill opencode
|
|
206
206
|
|
|
207
207
|
# 注册到 Trae
|
|
208
|
-
multi-lang-
|
|
208
|
+
multi-lang-skill trae
|
|
209
209
|
|
|
210
210
|
# 注册到 CodeBuddy
|
|
211
|
-
multi-lang-
|
|
211
|
+
multi-lang-skill codebuddy
|
|
212
212
|
|
|
213
213
|
# 注册所有 IDE
|
|
214
|
-
multi-lang-
|
|
214
|
+
multi-lang-skill all
|
|
215
215
|
```
|
|
216
216
|
|
|
217
217
|
### 注册功能说明
|
|
@@ -220,10 +220,10 @@ multi-lang-register all
|
|
|
220
220
|
|
|
221
221
|
| IDE | 命令 | 项目级配置 | 全局配置 |
|
|
222
222
|
|-----|------|-----------|---------|
|
|
223
|
-
| 🤖 **Claude Code** | `multi-lang-
|
|
224
|
-
| 💠 **OpenCode** | `multi-lang-
|
|
225
|
-
| 🔷 **Trae** | `multi-lang-
|
|
226
|
-
| 🎯 **CodeBuddy** | `multi-lang-
|
|
223
|
+
| 🤖 **Claude Code** | `multi-lang-skill claude` | `.claude/multi-lang-build.md` | `~/.claude/CLAUDE.md` |
|
|
224
|
+
| 💠 **OpenCode** | `multi-lang-skill opencode` | `.opencode/skills.json` | `~/.config/opencode/skills.json` |
|
|
225
|
+
| 🔷 **Trae** | `multi-lang-skill trae` | `.trae/skills.json` | `~/.trae/skills.json` |
|
|
226
|
+
| 🎯 **CodeBuddy** | `multi-lang-skill codebuddy` | `.codebuddy/skills.yaml` | `~/.codebuddy/skills.yaml` |
|
|
227
227
|
|
|
228
228
|
注册后,IDE 将自动识别项目类型并提供智能构建建议。
|
|
229
229
|
|
|
@@ -274,11 +274,11 @@ multi-lang-build python ./myproject --output ./dist --mirror
|
|
|
274
274
|
multi-lang-build pnpm ./myproject --output ./dist --mirror
|
|
275
275
|
|
|
276
276
|
# 注册到 IDE(独立命令)
|
|
277
|
-
multi-lang-
|
|
278
|
-
multi-lang-
|
|
279
|
-
multi-lang-
|
|
280
|
-
multi-lang-
|
|
281
|
-
multi-lang-
|
|
277
|
+
multi-lang-skill # 默认 Claude Code
|
|
278
|
+
multi-lang-skill opencode
|
|
279
|
+
multi-lang-skill trae
|
|
280
|
+
multi-lang-skill codebuddy
|
|
281
|
+
multi-lang-skill all # 注册所有 IDE
|
|
282
282
|
|
|
283
283
|
# 镜像配置
|
|
284
284
|
multi-lang-build mirror list # 列出可用镜像
|
|
@@ -148,41 +148,41 @@ compiler.build(
|
|
|
148
148
|
|
|
149
149
|
| IDE | 命令 | 说明 |
|
|
150
150
|
|-----|------|------|
|
|
151
|
-
| 🤖 **Claude Code** | `multi-lang-
|
|
152
|
-
| 💠 **OpenCode** | `multi-lang-
|
|
153
|
-
| 🔷 **Trae** | `multi-lang-
|
|
154
|
-
| 🎯 **CodeBuddy** | `multi-lang-
|
|
151
|
+
| 🤖 **Claude Code** | `multi-lang-skill claude` | 默认,AI 助手原生支持 |
|
|
152
|
+
| 💠 **OpenCode** | `multi-lang-skill opencode` | 智能代码助手集成 |
|
|
153
|
+
| 🔷 **Trae** | `multi-lang-skill trae` | 字节跳动 AI IDE |
|
|
154
|
+
| 🎯 **CodeBuddy** | `multi-lang-skill codebuddy` | 代码伙伴插件 |
|
|
155
155
|
|
|
156
156
|
### 注册 Claude Code(默认)
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
159
|
# 使用独立命令
|
|
160
|
-
multi-lang-
|
|
160
|
+
multi-lang-skill
|
|
161
161
|
|
|
162
162
|
# 或指定 IDE
|
|
163
|
-
multi-lang-
|
|
164
|
-
multi-lang-
|
|
165
|
-
multi-lang-
|
|
166
|
-
multi-lang-
|
|
163
|
+
multi-lang-skill claude
|
|
164
|
+
multi-lang-skill opencode
|
|
165
|
+
multi-lang-skill trae
|
|
166
|
+
multi-lang-skill codebuddy
|
|
167
167
|
|
|
168
168
|
# 注册到全局配置
|
|
169
|
-
multi-lang-
|
|
169
|
+
multi-lang-skill claude --global
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
### 注册其他 IDE
|
|
173
173
|
|
|
174
174
|
```bash
|
|
175
175
|
# 注册到 OpenCode
|
|
176
|
-
multi-lang-
|
|
176
|
+
multi-lang-skill opencode
|
|
177
177
|
|
|
178
178
|
# 注册到 Trae
|
|
179
|
-
multi-lang-
|
|
179
|
+
multi-lang-skill trae
|
|
180
180
|
|
|
181
181
|
# 注册到 CodeBuddy
|
|
182
|
-
multi-lang-
|
|
182
|
+
multi-lang-skill codebuddy
|
|
183
183
|
|
|
184
184
|
# 注册所有 IDE
|
|
185
|
-
multi-lang-
|
|
185
|
+
multi-lang-skill all
|
|
186
186
|
```
|
|
187
187
|
|
|
188
188
|
### 注册功能说明
|
|
@@ -191,10 +191,10 @@ multi-lang-register all
|
|
|
191
191
|
|
|
192
192
|
| IDE | 命令 | 项目级配置 | 全局配置 |
|
|
193
193
|
|-----|------|-----------|---------|
|
|
194
|
-
| 🤖 **Claude Code** | `multi-lang-
|
|
195
|
-
| 💠 **OpenCode** | `multi-lang-
|
|
196
|
-
| 🔷 **Trae** | `multi-lang-
|
|
197
|
-
| 🎯 **CodeBuddy** | `multi-lang-
|
|
194
|
+
| 🤖 **Claude Code** | `multi-lang-skill claude` | `.claude/multi-lang-build.md` | `~/.claude/CLAUDE.md` |
|
|
195
|
+
| 💠 **OpenCode** | `multi-lang-skill opencode` | `.opencode/skills.json` | `~/.config/opencode/skills.json` |
|
|
196
|
+
| 🔷 **Trae** | `multi-lang-skill trae` | `.trae/skills.json` | `~/.trae/skills.json` |
|
|
197
|
+
| 🎯 **CodeBuddy** | `multi-lang-skill codebuddy` | `.codebuddy/skills.yaml` | `~/.codebuddy/skills.yaml` |
|
|
198
198
|
|
|
199
199
|
注册后,IDE 将自动识别项目类型并提供智能构建建议。
|
|
200
200
|
|
|
@@ -245,11 +245,11 @@ multi-lang-build python ./myproject --output ./dist --mirror
|
|
|
245
245
|
multi-lang-build pnpm ./myproject --output ./dist --mirror
|
|
246
246
|
|
|
247
247
|
# 注册到 IDE(独立命令)
|
|
248
|
-
multi-lang-
|
|
249
|
-
multi-lang-
|
|
250
|
-
multi-lang-
|
|
251
|
-
multi-lang-
|
|
252
|
-
multi-lang-
|
|
248
|
+
multi-lang-skill # 默认 Claude Code
|
|
249
|
+
multi-lang-skill opencode
|
|
250
|
+
multi-lang-skill trae
|
|
251
|
+
multi-lang-skill codebuddy
|
|
252
|
+
multi-lang-skill all # 注册所有 IDE
|
|
253
253
|
|
|
254
254
|
# 镜像配置
|
|
255
255
|
multi-lang-build mirror list # 列出可用镜像
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "multi-lang-build"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.3"
|
|
8
8
|
description = "Multi-language automated build tool with domestic mirror acceleration support"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -42,7 +42,7 @@ multi-lang-build = "multi_lang_build:main"
|
|
|
42
42
|
pnpm-build = "multi_lang_build.compiler.pnpm:main"
|
|
43
43
|
go-build = "multi_lang_build.compiler.go:main"
|
|
44
44
|
python-build = "multi_lang_build.compiler.python:main"
|
|
45
|
-
multi-lang-
|
|
45
|
+
multi-lang-skill = "multi_lang_build:main_register"
|
|
46
46
|
multi-lang-mirror = "multi_lang_build.mirror.cli:mirror_main"
|
|
47
47
|
|
|
48
48
|
[project.urls]
|
|
@@ -7,7 +7,7 @@ from multi_lang_build.compiler.python import PythonCompiler
|
|
|
7
7
|
from multi_lang_build.mirror.config import MirrorConfig, get_mirror_config
|
|
8
8
|
from multi_lang_build.ide_register import register_skill
|
|
9
9
|
|
|
10
|
-
__version__ = "0.3.
|
|
10
|
+
__version__ = "0.3.3"
|
|
11
11
|
__all__ = [
|
|
12
12
|
"BuildConfig",
|
|
13
13
|
"BuildResult",
|
|
@@ -37,7 +37,7 @@ def main_register() -> None:
|
|
|
37
37
|
|
|
38
38
|
parser = argparse.ArgumentParser(
|
|
39
39
|
description="Register multi-lang-build as an IDE skill",
|
|
40
|
-
prog="multi-lang-
|
|
40
|
+
prog="multi-lang-skill",
|
|
41
41
|
)
|
|
42
42
|
parser.add_argument(
|
|
43
43
|
"ide",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""AutoBuild 工具的命令行接口。"""
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Sequence, TypedDict
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class BuildResult(TypedDict):
|
|
8
|
-
"""
|
|
8
|
+
"""构建操作的结果。"""
|
|
9
9
|
success: bool
|
|
10
10
|
return_code: int
|
|
11
11
|
stdout: str
|
|
@@ -15,27 +15,27 @@ class BuildResult(TypedDict):
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def run_cli(args: Sequence[str]) -> None:
|
|
18
|
-
"""
|
|
19
|
-
|
|
18
|
+
"""使用给定的参数运行命令行接口。
|
|
19
|
+
|
|
20
20
|
Args:
|
|
21
|
-
args:
|
|
21
|
+
args: 命令行参数(不包括程序名)
|
|
22
22
|
"""
|
|
23
23
|
import argparse
|
|
24
24
|
import sys
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
parser = argparse.ArgumentParser(
|
|
27
|
-
description="AutoBuild -
|
|
27
|
+
description="AutoBuild - 多语言自动化构建工具",
|
|
28
28
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
29
29
|
epilog="""
|
|
30
|
-
|
|
30
|
+
示例:
|
|
31
31
|
%(prog)s pnpm ./src --output ./dist --mirror
|
|
32
32
|
%(prog)s go ./src --output ./bin/app --mirror
|
|
33
33
|
%(prog)s python ./src --output ./dist --mirror --poetry
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
pnpm -
|
|
37
|
-
go - Go
|
|
38
|
-
python - Python
|
|
35
|
+
支持的语言:
|
|
36
|
+
pnpm - 前端 JavaScript/TypeScript 项目
|
|
37
|
+
go - Go 模块项目
|
|
38
|
+
python - Python pip/poetry/pdm 项目
|
|
39
39
|
""",
|
|
40
40
|
)
|
|
41
41
|
|
|
@@ -44,121 +44,121 @@ Supported languages:
|
|
|
44
44
|
action="version",
|
|
45
45
|
version=f"%(prog)s {__import__('multi_lang_build').__version__}",
|
|
46
46
|
)
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
subparsers = parser.add_subparsers(
|
|
49
49
|
dest="language",
|
|
50
|
-
title="
|
|
51
|
-
description="
|
|
50
|
+
title="语言",
|
|
51
|
+
description="特定语言的构建工具",
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
pnpm_parser = subparsers.add_parser(
|
|
55
55
|
"pnpm",
|
|
56
|
-
help="
|
|
57
|
-
description="
|
|
56
|
+
help="构建基于 pnpm 的前端项目",
|
|
57
|
+
description="使用镜像加速构建基于 pnpm 的前端项目",
|
|
58
58
|
)
|
|
59
|
-
pnpm_parser.add_argument("source_dir", type=Path, help="
|
|
60
|
-
pnpm_parser.add_argument("-o", "--output", type=Path, required=True, help="
|
|
61
|
-
pnpm_parser.add_argument("--mirror/--no-mirror", default=True, help="
|
|
62
|
-
pnpm_parser.add_argument("--script", type=str, help="
|
|
63
|
-
pnpm_parser.add_argument("--install", action="store_true", help="
|
|
64
|
-
pnpm_parser.add_argument("--stream/--no-stream", dest="stream_output", default=True, help="
|
|
59
|
+
pnpm_parser.add_argument("source_dir", type=Path, help="源码目录")
|
|
60
|
+
pnpm_parser.add_argument("-o", "--output", type=Path, required=True, help="输出目录")
|
|
61
|
+
pnpm_parser.add_argument("--mirror/--no-mirror", default=True, help="启用/禁用镜像加速")
|
|
62
|
+
pnpm_parser.add_argument("--script", type=str, help="运行指定的 npm 脚本")
|
|
63
|
+
pnpm_parser.add_argument("--install", action="store_true", help="仅安装依赖")
|
|
64
|
+
pnpm_parser.add_argument("--stream/--no-stream", dest="stream_output", default=True, help="启用/禁用实时输出流(默认:启用)")
|
|
65
65
|
|
|
66
66
|
go_parser = subparsers.add_parser(
|
|
67
67
|
"go",
|
|
68
|
-
help="
|
|
69
|
-
description="
|
|
68
|
+
help="构建 Go 项目",
|
|
69
|
+
description="使用模块支持和镜像加速构建 Go 项目",
|
|
70
70
|
)
|
|
71
|
-
go_parser.add_argument("source_dir", type=Path, help="
|
|
72
|
-
go_parser.add_argument("-o", "--output", type=Path, required=True, help="
|
|
73
|
-
go_parser.add_argument("--mirror", dest="mirror", action="store_true", default=True, help="
|
|
74
|
-
go_parser.add_argument("--no-mirror", dest="mirror", action="store_false", help="
|
|
75
|
-
go_parser.add_argument("--ldflags", type=str, help="
|
|
76
|
-
go_parser.add_argument("--tags", type=str, help="
|
|
77
|
-
go_parser.add_argument("--target", type=str, help="
|
|
78
|
-
go_parser.add_argument("--test", action="store_true", help="
|
|
79
|
-
go_parser.add_argument("--tidy", action="store_true", help="
|
|
80
|
-
go_parser.add_argument("--all", action="store_true", help="
|
|
81
|
-
go_parser.add_argument("--stream/--no-stream", dest="stream_output", default=True, help="
|
|
71
|
+
go_parser.add_argument("source_dir", type=Path, help="源码目录")
|
|
72
|
+
go_parser.add_argument("-o", "--output", type=Path, required=True, help="输出文件或目录")
|
|
73
|
+
go_parser.add_argument("--mirror", dest="mirror", action="store_true", default=True, help="启用 Go 代理镜像")
|
|
74
|
+
go_parser.add_argument("--no-mirror", dest="mirror", action="store_false", help="禁用 Go 代理镜像")
|
|
75
|
+
go_parser.add_argument("--ldflags", type=str, help="链接器标志")
|
|
76
|
+
go_parser.add_argument("--tags", type=str, help="构建标签(逗号分隔)")
|
|
77
|
+
go_parser.add_argument("--target", type=str, help="构建目标包(例如:./cmd/server)")
|
|
78
|
+
go_parser.add_argument("--test", action="store_true", help="运行测试而不是构建")
|
|
79
|
+
go_parser.add_argument("--tidy", action="store_true", help="运行 go mod tidy")
|
|
80
|
+
go_parser.add_argument("--all", action="store_true", help="构建所有包")
|
|
81
|
+
go_parser.add_argument("--stream/--no-stream", dest="stream_output", default=True, help="启用/禁用实时输出流(默认:启用)")
|
|
82
82
|
|
|
83
83
|
python_parser = subparsers.add_parser(
|
|
84
84
|
"python",
|
|
85
|
-
help="
|
|
86
|
-
description="
|
|
85
|
+
help="构建 Python 项目",
|
|
86
|
+
description="使用 pip/poetry/pdm 和镜像加速构建 Python 项目",
|
|
87
87
|
)
|
|
88
|
-
python_parser.add_argument("source_dir", type=Path, help="
|
|
89
|
-
python_parser.add_argument("-o", "--output", type=Path, required=True, help="
|
|
90
|
-
python_parser.add_argument("--mirror/--no-mirror", default=True, help="
|
|
91
|
-
python_parser.add_argument("--install", action="store_true", help="
|
|
92
|
-
python_parser.add_argument("--dev", action="store_true", help="
|
|
93
|
-
python_parser.add_argument("--poetry", action="store_true", help="
|
|
94
|
-
python_parser.add_argument("--create-venv", type=Path, help="
|
|
95
|
-
python_parser.add_argument("--stream/--no-stream", dest="stream_output", default=True, help="
|
|
88
|
+
python_parser.add_argument("source_dir", type=Path, help="源码目录")
|
|
89
|
+
python_parser.add_argument("-o", "--output", type=Path, required=True, help="输出目录")
|
|
90
|
+
python_parser.add_argument("--mirror/--no-mirror", default=True, help="启用/禁用 PyPI 镜像")
|
|
91
|
+
python_parser.add_argument("--install", action="store_true", help="仅安装依赖")
|
|
92
|
+
python_parser.add_argument("--dev", action="store_true", help="包含开发依赖")
|
|
93
|
+
python_parser.add_argument("--poetry", action="store_true", help="强制使用 poetry")
|
|
94
|
+
python_parser.add_argument("--create-venv", type=Path, help="在指定路径创建虚拟环境")
|
|
95
|
+
python_parser.add_argument("--stream/--no-stream", dest="stream_output", default=True, help="启用/禁用实时输出流(默认:启用)")
|
|
96
96
|
|
|
97
97
|
mirror_parser = subparsers.add_parser(
|
|
98
98
|
"mirror",
|
|
99
|
-
help="
|
|
100
|
-
description="
|
|
99
|
+
help="管理镜像配置",
|
|
100
|
+
description="列出或配置国内镜像加速设置",
|
|
101
101
|
epilog="""
|
|
102
|
-
|
|
103
|
-
%(prog)s mirror list
|
|
104
|
-
%(prog)s mirror set pip
|
|
105
|
-
%(prog)s mirror set go
|
|
106
|
-
%(prog)s mirror set pnpm
|
|
107
|
-
%(prog)s mirror show
|
|
108
|
-
%(prog)s mirror reset
|
|
102
|
+
示例:
|
|
103
|
+
%(prog)s mirror list 列出所有可用镜像
|
|
104
|
+
%(prog)s mirror set pip 配置 pip 镜像(默认)
|
|
105
|
+
%(prog)s mirror set go 配置 go 代理镜像
|
|
106
|
+
%(prog)s mirror set pnpm 配置 pnpm 仓库镜像
|
|
107
|
+
%(prog)s mirror show 显示当前配置
|
|
108
|
+
%(prog)s mirror reset 重置配置
|
|
109
109
|
""",
|
|
110
110
|
)
|
|
111
111
|
mirror_subparsers = mirror_parser.add_subparsers(dest="mirror_action")
|
|
112
112
|
|
|
113
|
-
list_parser = mirror_subparsers.add_parser("list", help="
|
|
114
|
-
list_parser.add_argument("--json", action="store_true", help="
|
|
113
|
+
list_parser = mirror_subparsers.add_parser("list", help="列出可用镜像")
|
|
114
|
+
list_parser.add_argument("--json", action="store_true", help="以 JSON 格式输出")
|
|
115
115
|
|
|
116
|
-
set_parser = mirror_subparsers.add_parser("set", help="
|
|
116
|
+
set_parser = mirror_subparsers.add_parser("set", help="设置镜像配置")
|
|
117
117
|
set_parser.add_argument(
|
|
118
118
|
"type",
|
|
119
119
|
type=str,
|
|
120
120
|
default="pip",
|
|
121
121
|
nargs="?",
|
|
122
122
|
choices=["pip", "go", "npm", "pnpm"],
|
|
123
|
-
help="
|
|
123
|
+
help="包管理器类型(默认:pip)",
|
|
124
124
|
)
|
|
125
125
|
set_parser.add_argument(
|
|
126
126
|
"mirror",
|
|
127
127
|
type=str,
|
|
128
128
|
nargs="?",
|
|
129
129
|
default="pip",
|
|
130
|
-
help="
|
|
130
|
+
help="要使用的镜像",
|
|
131
131
|
)
|
|
132
132
|
|
|
133
|
-
show_parser = mirror_subparsers.add_parser("show", help="
|
|
133
|
+
show_parser = mirror_subparsers.add_parser("show", help="显示当前配置")
|
|
134
134
|
show_parser.add_argument(
|
|
135
135
|
"--global",
|
|
136
136
|
dest="global_level",
|
|
137
137
|
action="store_true",
|
|
138
|
-
help="
|
|
138
|
+
help="显示全局配置而不是项目级配置",
|
|
139
139
|
)
|
|
140
140
|
|
|
141
|
-
reset_parser = mirror_subparsers.add_parser("reset", help="
|
|
141
|
+
reset_parser = mirror_subparsers.add_parser("reset", help="重置配置")
|
|
142
142
|
reset_parser.add_argument(
|
|
143
143
|
"--global",
|
|
144
144
|
dest="global_level",
|
|
145
145
|
action="store_true",
|
|
146
|
-
help="
|
|
146
|
+
help="重置全局配置而不是项目级配置",
|
|
147
147
|
)
|
|
148
148
|
|
|
149
|
-
#
|
|
149
|
+
# IDE 集成注册子命令
|
|
150
150
|
register_parser = subparsers.add_parser(
|
|
151
151
|
"register",
|
|
152
|
-
help="
|
|
153
|
-
description="
|
|
152
|
+
help="注册为 IDE 技能(Claude Code、OpenCode、Trae、CodeBuddy)",
|
|
153
|
+
description="将 multi-lang-build 注册为各种 AI 编程助手和 IDE 的技能",
|
|
154
154
|
epilog="""
|
|
155
|
-
|
|
156
|
-
%(prog)s register #
|
|
157
|
-
%(prog)s register claude #
|
|
158
|
-
%(prog)s register opencode #
|
|
159
|
-
%(prog)s register trae #
|
|
160
|
-
%(prog)s register codebuddy #
|
|
161
|
-
%(prog)s register all #
|
|
155
|
+
示例:
|
|
156
|
+
%(prog)s register # 注册到 Claude Code(默认)
|
|
157
|
+
%(prog)s register claude # 注册到 Claude Code
|
|
158
|
+
%(prog)s register opencode # 注册到 OpenCode
|
|
159
|
+
%(prog)s register trae # 注册到 Trae
|
|
160
|
+
%(prog)s register codebuddy # 注册到 CodeBuddy
|
|
161
|
+
%(prog)s register all # 注册到所有支持的 IDE
|
|
162
162
|
""",
|
|
163
163
|
)
|
|
164
164
|
register_parser.add_argument(
|
|
@@ -166,7 +166,7 @@ Examples:
|
|
|
166
166
|
nargs="?",
|
|
167
167
|
default="claude",
|
|
168
168
|
choices=["claude", "opencode", "trae", "codebuddy", "all"],
|
|
169
|
-
help="IDE
|
|
169
|
+
help="要注册的 IDE(默认:claude)",
|
|
170
170
|
)
|
|
171
171
|
|
|
172
172
|
parsed_args = parser.parse_args(args)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""PNPM
|
|
1
|
+
"""支持镜像加速的 PNPM 编译器。"""
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Final
|
|
@@ -11,16 +11,16 @@ from multi_lang_build.compiler.pnpm_support import PnpmProject, PnpmExecutor
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class PnpmCompiler(CompilerBase):
|
|
14
|
-
"""
|
|
14
|
+
"""用于基于 pnpm 的前端项目的编译器。"""
|
|
15
15
|
|
|
16
16
|
NAME: Final[str] = "pnpm"
|
|
17
17
|
DEFAULT_MIRROR: Final[str] = "https://registry.npmmirror.com"
|
|
18
18
|
|
|
19
19
|
def __init__(self, pnpm_path: str | None = None) -> None:
|
|
20
|
-
"""
|
|
20
|
+
"""初始化 PNPM 编译器。
|
|
21
21
|
|
|
22
22
|
Args:
|
|
23
|
-
pnpm_path:
|
|
23
|
+
pnpm_path: 可选的 pnpm 可执行文件路径。如果为 None,则使用系统 PATH。
|
|
24
24
|
"""
|
|
25
25
|
self._pnpm_path = pnpm_path
|
|
26
26
|
self._version_cache: str | None = None
|
|
@@ -296,17 +296,17 @@ class PnpmCompiler(CompilerBase):
|
|
|
296
296
|
|
|
297
297
|
|
|
298
298
|
def main() -> None:
|
|
299
|
-
"""PNPM
|
|
299
|
+
"""PNPM 编译器命令行入口点。"""
|
|
300
300
|
import argparse
|
|
301
301
|
import sys
|
|
302
302
|
|
|
303
|
-
parser = argparse.ArgumentParser(description="PNPM
|
|
304
|
-
parser.add_argument("source_dir", type=Path, help="
|
|
305
|
-
parser.add_argument("-o", "--output", type=Path, required=True, help="
|
|
306
|
-
parser.add_argument("--mirror", action="store_true", default=True, help="
|
|
307
|
-
parser.add_argument("--no-mirror", dest="mirror", action="store_false", help="
|
|
308
|
-
parser.add_argument("--script", type=str, help="
|
|
309
|
-
parser.add_argument("--install", action="store_true", help="
|
|
303
|
+
parser = argparse.ArgumentParser(description="PNPM 构建编译器")
|
|
304
|
+
parser.add_argument("source_dir", type=Path, help="源码目录")
|
|
305
|
+
parser.add_argument("-o", "--output", type=Path, required=True, help="输出目录")
|
|
306
|
+
parser.add_argument("--mirror", action="store_true", default=True, help="启用镜像加速")
|
|
307
|
+
parser.add_argument("--no-mirror", dest="mirror", action="store_false", help="禁用镜像加速")
|
|
308
|
+
parser.add_argument("--script", type=str, help="运行特定的 npm 脚本而不是构建")
|
|
309
|
+
parser.add_argument("--install", action="store_true", help="仅安装依赖")
|
|
310
310
|
|
|
311
311
|
args = parser.parse_args()
|
|
312
312
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"""Python
|
|
1
|
+
"""Python 编译器命令行入口。"""
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
def main() -> None:
|
|
7
|
-
"""Python
|
|
7
|
+
"""Python 编译器命令行入口点。"""
|
|
8
8
|
import argparse
|
|
9
9
|
import sys
|
|
10
10
|
|
|
11
|
-
parser = argparse.ArgumentParser(description="Python
|
|
12
|
-
parser.add_argument("source_dir", type=Path, help="
|
|
13
|
-
parser.add_argument("-o", "--output", type=Path, required=True, help="
|
|
14
|
-
parser.add_argument("--mirror", action="store_true", default=True, help="
|
|
15
|
-
parser.add_argument("--no-mirror", dest="mirror", action="store_false", help="
|
|
16
|
-
parser.add_argument("--install", action="store_true", help="
|
|
17
|
-
parser.add_argument("--dev", action="store_true", help="
|
|
18
|
-
parser.add_argument("--poetry", action="store_true", help="
|
|
19
|
-
parser.add_argument("--create-venv", type=Path, help="
|
|
11
|
+
parser = argparse.ArgumentParser(description="Python 构建编译器")
|
|
12
|
+
parser.add_argument("source_dir", type=Path, help="源码目录")
|
|
13
|
+
parser.add_argument("-o", "--output", type=Path, required=True, help="输出目录")
|
|
14
|
+
parser.add_argument("--mirror", action="store_true", default=True, help="启用 PyPI 镜像")
|
|
15
|
+
parser.add_argument("--no-mirror", dest="mirror", action="store_false", help="禁用 PyPI 镜像")
|
|
16
|
+
parser.add_argument("--install", action="store_true", help="仅安装依赖")
|
|
17
|
+
parser.add_argument("--dev", action="store_true", help="包含开发依赖")
|
|
18
|
+
parser.add_argument("--poetry", action="store_true", help="强制使用 poetry")
|
|
19
|
+
parser.add_argument("--create-venv", type=Path, help="在指定路径创建虚拟环境")
|
|
20
20
|
|
|
21
21
|
args = parser.parse_args()
|
|
22
22
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""国内镜像加速配置命令行工具。"""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@ from typing import Literal
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def get_all_mirrors() -> dict:
|
|
14
|
-
"""
|
|
14
|
+
"""获取所有可用镜像及其配置。"""
|
|
15
15
|
from multi_lang_build.mirror.config import MIRROR_CONFIGS
|
|
16
16
|
|
|
17
17
|
mirrors = {}
|
|
@@ -24,13 +24,13 @@ def get_all_mirrors() -> dict:
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def print_mirrors() -> None:
|
|
27
|
-
"""
|
|
27
|
+
"""打印所有可用镜像。"""
|
|
28
28
|
mirrors = get_all_mirrors()
|
|
29
29
|
|
|
30
|
-
print("\n📦
|
|
30
|
+
print("\n📦 可用镜像:")
|
|
31
31
|
print("-" * 60)
|
|
32
32
|
|
|
33
|
-
#
|
|
33
|
+
# 按类别分组
|
|
34
34
|
categories = {
|
|
35
35
|
"js": ["npm", "pnpm", "yarn"],
|
|
36
36
|
"go": ["go", "go_qiniu", "go_vip"],
|
|
@@ -55,19 +55,19 @@ def print_mirrors() -> None:
|
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
def configure_pip(mirror_key: str) -> bool:
|
|
58
|
-
"""
|
|
58
|
+
"""使用 pip config 命令配置 pip 镜像。"""
|
|
59
59
|
from multi_lang_build.mirror.config import get_mirror_config
|
|
60
60
|
|
|
61
61
|
config = get_mirror_config(mirror_key)
|
|
62
62
|
if config is None:
|
|
63
|
-
print(f"❌
|
|
63
|
+
print(f"❌ 未知的 pip 镜像:{mirror_key}")
|
|
64
64
|
return False
|
|
65
65
|
|
|
66
66
|
url = config["url"]
|
|
67
67
|
if not url.endswith("/simple") and not url.endswith("/simple/"):
|
|
68
68
|
url = f"{url}/simple"
|
|
69
69
|
|
|
70
|
-
#
|
|
70
|
+
# 优先使用 pip3,回退到 pip
|
|
71
71
|
pip_cmd = "pip3" if sys.platform != "win32" else "pip"
|
|
72
72
|
|
|
73
73
|
try:
|
|
@@ -75,36 +75,36 @@ def configure_pip(mirror_key: str) -> bool:
|
|
|
75
75
|
[pip_cmd, "config", "set", "global.index-url", url],
|
|
76
76
|
check=True,
|
|
77
77
|
)
|
|
78
|
-
print(f"✅ pip
|
|
78
|
+
print(f"✅ pip 镜像已设置为:{url}")
|
|
79
79
|
return True
|
|
80
80
|
except subprocess.CalledProcessError as e:
|
|
81
|
-
print(f"❌
|
|
81
|
+
print(f"❌ 设置 pip 镜像失败:{e}")
|
|
82
82
|
return False
|
|
83
83
|
except FileNotFoundError:
|
|
84
|
-
#
|
|
84
|
+
# 尝试替代方案
|
|
85
85
|
try:
|
|
86
86
|
alternative = "pip" if pip_cmd == "pip3" else "pip3"
|
|
87
87
|
subprocess.run(
|
|
88
88
|
[alternative, "config", "set", "global.index-url", url],
|
|
89
89
|
check=True,
|
|
90
90
|
)
|
|
91
|
-
print(f"✅ pip
|
|
91
|
+
print(f"✅ pip 镜像已设置为:{url}")
|
|
92
92
|
return True
|
|
93
93
|
except Exception:
|
|
94
|
-
print("❌ pip/pip3
|
|
94
|
+
print("❌ 未找到 pip/pip3")
|
|
95
95
|
return False
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def configure_go(mirror_key: str) -> bool:
|
|
99
|
-
"""
|
|
99
|
+
"""使用 go env -w 配置 Go 代理。"""
|
|
100
100
|
from multi_lang_build.mirror.config import get_mirror_config
|
|
101
101
|
|
|
102
102
|
config = get_mirror_config(mirror_key)
|
|
103
103
|
if config is None:
|
|
104
|
-
print(f"❌
|
|
104
|
+
print(f"❌ 未知的 Go 镜像:{mirror_key}")
|
|
105
105
|
return False
|
|
106
106
|
|
|
107
|
-
#
|
|
107
|
+
# 从环境变量中获取 GOPROXY 值
|
|
108
108
|
proxy_value = config["environment_variables"].get("GOPROXY", f"{config['url']},direct")
|
|
109
109
|
|
|
110
110
|
try:
|
|
@@ -112,33 +112,33 @@ def configure_go(mirror_key: str) -> bool:
|
|
|
112
112
|
["go", "env", "-w", f"GOPROXY={proxy_value}"],
|
|
113
113
|
check=True,
|
|
114
114
|
)
|
|
115
|
-
print(f"✅ Go GOPROXY
|
|
115
|
+
print(f"✅ Go GOPROXY 已设置为:{proxy_value}")
|
|
116
116
|
|
|
117
|
-
#
|
|
117
|
+
# 如果存在也设置 GOSUMDB
|
|
118
118
|
gosumdb = config["environment_variables"].get("GOSUMDB")
|
|
119
119
|
if gosumdb:
|
|
120
120
|
subprocess.run(
|
|
121
121
|
["go", "env", "-w", f"GOSUMDB={gosumdb}"],
|
|
122
122
|
check=True,
|
|
123
123
|
)
|
|
124
|
-
print(f"✅ Go GOSUMDB
|
|
124
|
+
print(f"✅ Go GOSUMDB 已设置为:{gosumdb}")
|
|
125
125
|
|
|
126
126
|
return True
|
|
127
127
|
except subprocess.CalledProcessError as e:
|
|
128
|
-
print(f"❌
|
|
128
|
+
print(f"❌ 设置 Go 镜像失败:{e}")
|
|
129
129
|
return False
|
|
130
130
|
except FileNotFoundError:
|
|
131
|
-
print("❌ go
|
|
131
|
+
print("❌ 未找到 go")
|
|
132
132
|
return False
|
|
133
133
|
|
|
134
134
|
|
|
135
135
|
def configure_npm(mirror_key: str) -> bool:
|
|
136
|
-
"""
|
|
136
|
+
"""配置 npm/pnpm 仓库。"""
|
|
137
137
|
from multi_lang_build.mirror.config import get_mirror_config
|
|
138
138
|
|
|
139
139
|
config = get_mirror_config(mirror_key)
|
|
140
140
|
if config is None:
|
|
141
|
-
print(f"❌
|
|
141
|
+
print(f"❌ 未知的 npm 镜像:{mirror_key}")
|
|
142
142
|
return False
|
|
143
143
|
|
|
144
144
|
url = config["url"]
|
|
@@ -148,32 +148,32 @@ def configure_npm(mirror_key: str) -> bool:
|
|
|
148
148
|
["npm", "config", "set", "registry", url],
|
|
149
149
|
check=True,
|
|
150
150
|
)
|
|
151
|
-
print(f"✅ npm
|
|
151
|
+
print(f"✅ npm 仓库已设置为:{url}")
|
|
152
152
|
|
|
153
|
-
#
|
|
153
|
+
# 如果可用也为 pnpm 设置
|
|
154
154
|
try:
|
|
155
155
|
subprocess.run(
|
|
156
156
|
["pnpm", "config", "set", "registry", url],
|
|
157
157
|
check=True,
|
|
158
158
|
)
|
|
159
|
-
print(f"✅ pnpm
|
|
159
|
+
print(f"✅ pnpm 仓库已设置为:{url}")
|
|
160
160
|
except (subprocess.CalledProcessError, FileNotFoundError):
|
|
161
161
|
pass
|
|
162
162
|
|
|
163
163
|
return True
|
|
164
164
|
except subprocess.CalledProcessError as e:
|
|
165
|
-
print(f"❌
|
|
165
|
+
print(f"❌ 设置 npm 仓库失败:{e}")
|
|
166
166
|
return False
|
|
167
167
|
except FileNotFoundError:
|
|
168
|
-
print("❌ npm
|
|
168
|
+
print("❌ 未找到 npm")
|
|
169
169
|
return False
|
|
170
170
|
|
|
171
171
|
|
|
172
172
|
def get_current_config() -> dict:
|
|
173
|
-
"""
|
|
173
|
+
"""获取当前镜像配置。"""
|
|
174
174
|
config = {}
|
|
175
175
|
|
|
176
|
-
#
|
|
176
|
+
# 优先使用 pip3,回退到 pip
|
|
177
177
|
pip_cmd = "pip3" if sys.platform != "win32" else "pip"
|
|
178
178
|
|
|
179
179
|
try:
|
|
@@ -187,7 +187,7 @@ def get_current_config() -> dict:
|
|
|
187
187
|
except Exception:
|
|
188
188
|
pass
|
|
189
189
|
|
|
190
|
-
#
|
|
190
|
+
# 检查 Go
|
|
191
191
|
try:
|
|
192
192
|
result = subprocess.run(
|
|
193
193
|
["go", "env", "GOPROXY"],
|
|
@@ -199,7 +199,7 @@ def get_current_config() -> dict:
|
|
|
199
199
|
except Exception:
|
|
200
200
|
pass
|
|
201
201
|
|
|
202
|
-
#
|
|
202
|
+
# 检查 npm
|
|
203
203
|
try:
|
|
204
204
|
result = subprocess.run(
|
|
205
205
|
["npm", "config", "get", "registry"],
|
|
@@ -215,14 +215,14 @@ def get_current_config() -> dict:
|
|
|
215
215
|
|
|
216
216
|
|
|
217
217
|
def configure_mirror(mirror_type: str, mirror_key: str) -> bool:
|
|
218
|
-
"""
|
|
218
|
+
"""为特定的包管理器配置镜像。
|
|
219
219
|
|
|
220
220
|
Args:
|
|
221
|
-
mirror_type:
|
|
222
|
-
mirror_key:
|
|
221
|
+
mirror_type: 包管理器类型(pip、go、npm)
|
|
222
|
+
mirror_key: 要使用的镜像键
|
|
223
223
|
|
|
224
224
|
Returns:
|
|
225
|
-
True
|
|
225
|
+
成功返回 True,失败返回 False
|
|
226
226
|
"""
|
|
227
227
|
if mirror_type == "pip":
|
|
228
228
|
return configure_pip(mirror_key)
|
|
@@ -231,67 +231,67 @@ def configure_mirror(mirror_type: str, mirror_key: str) -> bool:
|
|
|
231
231
|
elif mirror_type in ["npm", "pnpm"]:
|
|
232
232
|
return configure_npm(mirror_key)
|
|
233
233
|
else:
|
|
234
|
-
print(f"❌
|
|
234
|
+
print(f"❌ 未知的包管理器:{mirror_type}")
|
|
235
235
|
return False
|
|
236
236
|
|
|
237
237
|
|
|
238
238
|
def mirror_main():
|
|
239
|
-
"""
|
|
239
|
+
"""镜像命令的主入口点。"""
|
|
240
240
|
import argparse
|
|
241
241
|
|
|
242
242
|
parser = argparse.ArgumentParser(
|
|
243
|
-
description="
|
|
243
|
+
description="配置国内镜像加速",
|
|
244
244
|
epilog="""
|
|
245
|
-
|
|
246
|
-
%(prog)s list
|
|
247
|
-
%(prog)s set pip
|
|
248
|
-
%(prog)s set go
|
|
249
|
-
%(prog)s set npm
|
|
250
|
-
%(prog)s show
|
|
245
|
+
示例:
|
|
246
|
+
%(prog)s list 列出所有可用镜像
|
|
247
|
+
%(prog)s set pip 配置 pip 镜像(默认)
|
|
248
|
+
%(prog)s set go 配置 Go 代理
|
|
249
|
+
%(prog)s set npm 配置 npm 仓库
|
|
250
|
+
%(prog)s show 显示当前配置
|
|
251
251
|
""",
|
|
252
252
|
)
|
|
253
253
|
parser.add_argument(
|
|
254
254
|
"--version",
|
|
255
255
|
action="version",
|
|
256
|
-
version="%(prog)s 0.
|
|
256
|
+
version="%(prog)s 0.3.3",
|
|
257
257
|
)
|
|
258
258
|
|
|
259
|
-
subparsers = parser.add_subparsers(dest="command", help="
|
|
259
|
+
subparsers = parser.add_subparsers(dest="command", help="命令")
|
|
260
260
|
|
|
261
|
-
# list
|
|
262
|
-
list_parser = subparsers.add_parser("list", help="
|
|
261
|
+
# list 命令
|
|
262
|
+
list_parser = subparsers.add_parser("list", help="列出可用镜像")
|
|
263
263
|
list_parser.add_argument(
|
|
264
264
|
"--json",
|
|
265
265
|
action="store_true",
|
|
266
|
-
help="
|
|
266
|
+
help="以 JSON 格式输出",
|
|
267
267
|
)
|
|
268
268
|
list_parser.add_argument(
|
|
269
269
|
"--type",
|
|
270
270
|
type=str,
|
|
271
271
|
choices=["pip", "go", "npm"],
|
|
272
|
-
help="
|
|
272
|
+
help="按类型筛选",
|
|
273
273
|
)
|
|
274
274
|
|
|
275
|
-
# set
|
|
276
|
-
set_parser = subparsers.add_parser("set", help="
|
|
275
|
+
# set 命令
|
|
276
|
+
set_parser = subparsers.add_parser("set", help="配置镜像")
|
|
277
277
|
set_parser.add_argument(
|
|
278
278
|
"type",
|
|
279
279
|
type=str,
|
|
280
280
|
default="pip",
|
|
281
281
|
nargs="?",
|
|
282
282
|
choices=["pip", "go", "npm", "pnpm"],
|
|
283
|
-
help="
|
|
283
|
+
help="包管理器类型(默认:pip)",
|
|
284
284
|
)
|
|
285
285
|
set_parser.add_argument(
|
|
286
286
|
"mirror",
|
|
287
287
|
type=str,
|
|
288
288
|
nargs="?",
|
|
289
289
|
default="pip",
|
|
290
|
-
help="
|
|
290
|
+
help="要使用的镜像",
|
|
291
291
|
)
|
|
292
292
|
|
|
293
|
-
# show
|
|
294
|
-
show_parser = subparsers.add_parser("show", help="
|
|
293
|
+
# show 命令
|
|
294
|
+
show_parser = subparsers.add_parser("show", help="显示当前镜像配置")
|
|
295
295
|
|
|
296
296
|
args = parser.parse_args()
|
|
297
297
|
|
|
@@ -311,25 +311,25 @@ Examples:
|
|
|
311
311
|
elif args.command == "show":
|
|
312
312
|
config = get_current_config()
|
|
313
313
|
if config:
|
|
314
|
-
print("\n📦
|
|
314
|
+
print("\n📦 当前镜像配置:")
|
|
315
315
|
print("-" * 40)
|
|
316
316
|
for key, value in config.items():
|
|
317
317
|
print(f" • {key}: {value}")
|
|
318
318
|
print()
|
|
319
319
|
else:
|
|
320
|
-
print("\n📦
|
|
321
|
-
print("
|
|
320
|
+
print("\n📦 未配置镜像")
|
|
321
|
+
print(" 运行 'multi-lang-build mirror set <type> <mirror>' 进行配置")
|
|
322
322
|
print()
|
|
323
323
|
print_mirrors()
|
|
324
324
|
|
|
325
325
|
else:
|
|
326
|
-
#
|
|
326
|
+
# 无子命令,显示帮助
|
|
327
327
|
parser.print_help()
|
|
328
|
-
print("\n📋
|
|
329
|
-
print(" list
|
|
330
|
-
print(" set <type> <name>
|
|
331
|
-
print(" show
|
|
332
|
-
print("\n📋
|
|
328
|
+
print("\n📋 命令:")
|
|
329
|
+
print(" list 列出所有可用镜像")
|
|
330
|
+
print(" set <type> <name> 配置镜像(类型:pip/go/npm)")
|
|
331
|
+
print(" show 显示当前配置")
|
|
332
|
+
print("\n📋 示例:")
|
|
333
333
|
print(" multi-lang-build mirror list")
|
|
334
334
|
print(" multi-lang-build mirror set pip")
|
|
335
335
|
print(" multi-lang-build mirror set go")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_compiler.py
RENAMED
|
File without changes
|
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/binary.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/env.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/mirror.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/module.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/compiler/go_support/tester.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
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/__init__.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/claude.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/codebuddy.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/opencode.py
RENAMED
|
File without changes
|
{multi_lang_build-0.3.1 → multi_lang_build-0.3.3}/src/multi_lang_build/register/support/trae.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|