multi-lang-build 0.3.0__py3-none-any.whl → 0.3.1__py3-none-any.whl

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.
@@ -0,0 +1,59 @@
1
+ """Structured logging configuration using loguru.
2
+
3
+ Configure the global loguru logger with structured output.
4
+ Other modules can simply: from loguru import logger
5
+
6
+ Usage:
7
+ from loguru import logger
8
+ logger.info('message', key1=value1, key2=value2)
9
+ """
10
+
11
+ import sys
12
+
13
+ from loguru import logger
14
+
15
+ # Remove default handler
16
+ logger.remove()
17
+
18
+ # Custom format function for structured logging
19
+ def _format(record: "loguru._logger.Record") -> str:
20
+ """Format log record with structured fields as key=value."""
21
+ # Get caller info
22
+ file_path = record["file"].name
23
+ short_file = file_path.split("/")[-1] if "/" in file_path else file_path
24
+ line = record["line"]
25
+ func = record["function"]
26
+
27
+ # Build message
28
+ message = record["message"]
29
+
30
+ # Format extra fields as key=value
31
+ extra = record.get("extra", {})
32
+ parts = []
33
+ for key, value in extra.items():
34
+ if isinstance(value, str) and (" " in value or "=" in value):
35
+ parts.append(f'{key}="{value}"')
36
+ elif value is None:
37
+ parts.append(f"{key}=null")
38
+ elif isinstance(value, bool):
39
+ parts.append(f"{key}={'true' if value else 'false'}")
40
+ else:
41
+ parts.append(f"{key}={value}")
42
+
43
+ fields_str = f" {' '.join(parts)}" if parts else ""
44
+
45
+ # Write directly to stdout to bypass loguru's colorizer
46
+ sys.stdout.write(f"[{short_file}:{line} {func}] {message}{fields_str}\n")
47
+ sys.stdout.flush()
48
+
49
+ # Return empty string to suppress loguru's own output
50
+ return ""
51
+
52
+
53
+ # Add configured handler with our custom format
54
+ logger.add(
55
+ sys.stdout,
56
+ format=_format,
57
+ level="INFO",
58
+ colorize=False,
59
+ )
@@ -53,7 +53,7 @@ You can use the `multi-lang-build` tool to compile projects:
53
53
  multi-lang-build go ./src --output ./bin/app --mirror
54
54
 
55
55
  # Build with specific target (multi-entry support)
56
- multi-lang-build go ./src --output ./bin/server --target cmd/server/main.go
56
+ multi-lang-build go ./src --output ./bin/server --target ./cmd/server
57
57
 
58
58
  # Build Python project
59
59
  multi-lang-build python ./src --output ./dist --mirror
@@ -31,7 +31,7 @@ skills:
31
31
  multi-lang-build:
32
32
  name: "Multi-Lang Build"
33
33
  description: "Multi-language automated build tool with mirror acceleration"
34
- version: "0.2.0"
34
+ version: "0.3.0"
35
35
 
36
36
  commands:
37
37
  build-go:
@@ -45,7 +45,7 @@ def register_opencode(project_level: bool = True) -> bool:
45
45
  },
46
46
  "examples": [
47
47
  "multi-lang-build go ./src --output ./bin/app --mirror",
48
- "multi-lang-build go ./src --output ./bin/server --target cmd/server/main.go",
48
+ "multi-lang-build go ./src --output ./bin/server --target ./cmd/server",
49
49
  "multi-lang-build python ./src --output ./dist --mirror",
50
50
  "multi-lang-build pnpm ./src --output ./dist --mirror",
51
51
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multi-lang-build
3
- Version: 0.3.0
3
+ Version: 0.3.1
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,35 +177,41 @@ compiler.build(
177
177
 
178
178
  | IDE | 命令 | 说明 |
179
179
  |-----|------|------|
180
- | 🤖 **Claude Code** | `multi-lang-build register` | 默认,AI 助手原生支持 |
181
- | 💠 **OpenCode** | `multi-lang-build register opencode` | 智能代码助手集成 |
182
- | 🔷 **Trae** | `multi-lang-build register trae` | 字节跳动 AI IDE |
183
- | 🎯 **CodeBuddy** | `multi-lang-build register codebuddy` | 代码伙伴插件 |
180
+ | 🤖 **Claude Code** | `multi-lang-register claude` | 默认,AI 助手原生支持 |
181
+ | 💠 **OpenCode** | `multi-lang-register opencode` | 智能代码助手集成 |
182
+ | 🔷 **Trae** | `multi-lang-register trae` | 字节跳动 AI IDE |
183
+ | 🎯 **CodeBuddy** | `multi-lang-register codebuddy` | 代码伙伴插件 |
184
184
 
185
185
  ### 注册 Claude Code(默认)
186
186
 
187
187
  ```bash
188
- # 默认注册到项目级(.claude/multi-lang-build.md)
189
- multi-lang-build register
188
+ # 使用独立命令
189
+ multi-lang-register
190
190
 
191
- # 或使用完整命令
192
- multi-lang-build register claude
191
+ # 或指定 IDE
192
+ multi-lang-register claude
193
+ multi-lang-register opencode
194
+ multi-lang-register trae
195
+ multi-lang-register codebuddy
193
196
 
194
197
  # 注册到全局配置
195
- multi-lang-build register claude --global
198
+ multi-lang-register claude --global
196
199
  ```
197
200
 
198
201
  ### 注册其他 IDE
199
202
 
200
203
  ```bash
201
204
  # 注册到 OpenCode
202
- multi-lang-build register opencode
205
+ multi-lang-register opencode
203
206
 
204
207
  # 注册到 Trae
205
- multi-lang-build register trae
208
+ multi-lang-register trae
206
209
 
207
210
  # 注册到 CodeBuddy
208
- multi-lang-build register codebuddy
211
+ multi-lang-register codebuddy
212
+
213
+ # 注册所有 IDE
214
+ multi-lang-register all
209
215
  ```
210
216
 
211
217
  ### 注册功能说明
@@ -214,10 +220,10 @@ multi-lang-build register codebuddy
214
220
 
215
221
  | IDE | 命令 | 项目级配置 | 全局配置 |
216
222
  |-----|------|-----------|---------|
217
- | 🤖 **Claude Code** | `multi-lang-build register` | `.claude/multi-lang-build.md` | `~/.claude/CLAUDE.md` |
218
- | 💠 **OpenCode** | `multi-lang-build register opencode` | `.opencode/skills.json` | `~/.config/opencode/skills.json` |
219
- | 🔷 **Trae** | `multi-lang-build register trae` | `.trae/skills.json` | `~/.trae/skills.json` |
220
- | 🎯 **CodeBuddy** | `multi-lang-build register codebuddy` | `.codebuddy/skills.yaml` | `~/.codebuddy/skills.yaml` |
223
+ | 🤖 **Claude Code** | `multi-lang-register claude` | `.claude/multi-lang-build.md` | `~/.claude/CLAUDE.md` |
224
+ | 💠 **OpenCode** | `multi-lang-register opencode` | `.opencode/skills.json` | `~/.config/opencode/skills.json` |
225
+ | 🔷 **Trae** | `multi-lang-register trae` | `.trae/skills.json` | `~/.trae/skills.json` |
226
+ | 🎯 **CodeBuddy** | `multi-lang-register codebuddy` | `.codebuddy/skills.yaml` | `~/.codebuddy/skills.yaml` |
221
227
 
222
228
  注册后,IDE 将自动识别项目类型并提供智能构建建议。
223
229
 
@@ -267,13 +273,12 @@ multi-lang-build python ./myproject --output ./dist --mirror
267
273
  # PNPM 项目构建
268
274
  multi-lang-build pnpm ./myproject --output ./dist --mirror
269
275
 
270
- # 注册到 IDE(默认 Claude Code)
271
- multi-lang-build register
272
-
273
- # 注册到指定 IDE
274
- multi-lang-build register opencode
275
- multi-lang-build register trae
276
- multi-lang-build register codebuddy
276
+ # 注册到 IDE(独立命令)
277
+ multi-lang-register # 默认 Claude Code
278
+ multi-lang-register opencode
279
+ multi-lang-register trae
280
+ multi-lang-register codebuddy
281
+ multi-lang-register all # 注册所有 IDE
277
282
 
278
283
  # 镜像配置
279
284
  multi-lang-build mirror list # 列出可用镜像
@@ -405,6 +410,13 @@ for pkg in ["ui", "utils", "app"]:
405
410
 
406
411
  ## 📋 更新日志
407
412
 
413
+ ### v0.3.1 (2026-02-03)
414
+
415
+ **🔧 重构**
416
+ - 使用 loguru 替换 ColorInfo 实现结构化日志
417
+ - 日志格式: `[file:line function] message key=value`
418
+ - 支持调用者位置追踪
419
+
408
420
  ### v0.3.0 (2026-02-03)
409
421
 
410
422
  **✨ 新功能**
@@ -1,6 +1,7 @@
1
1
  multi_lang_build/__init__.py,sha256=_3D4R7_1Y452wsSbtcqKetK3pUFVJvW3JWSH-CNZCFc,1794
2
2
  multi_lang_build/cli.py,sha256=v1xn2qfpj47n7rZQMg-Xiz8Tnu9aUEz--u9x4chH5vs,13246
3
3
  multi_lang_build/ide_register.py,sha256=lz345IOs9S6-neh7t_6txJhz7XLypEiNzwvSl3ouVo8,3028
4
+ multi_lang_build/log.py,sha256=HM_0uGq8pGj_-9wR30iw1iGH1G0OvIJQb3x_AhKrRAE,1651
4
5
  multi_lang_build/py.typed,sha256=c8jtFarMovqA5DdwhEzKPH4WrX85xaoiWilIlvuc6KU,84
5
6
  multi_lang_build/types.py,sha256=iCyz_6KmEBU4xwpCtfJnpzXoiSsmOcOKOhzHJVx8Z4Q,1043
6
7
  multi_lang_build/compiler/__init__.py,sha256=7cfE3n7ATXZ8JabON_Qg0npxd7EY2jEU4tC6FxDupIs,493
@@ -29,12 +30,12 @@ multi_lang_build/mirror/__init__.py,sha256=RrZOQ83bxImAR275zeAUKyyCgwqdGt5xH8tF_
29
30
  multi_lang_build/mirror/cli.py,sha256=qv6RI6izxUIsfMCIDOtTK3avcNSJpAaUF3NPiK1W49A,9820
30
31
  multi_lang_build/mirror/config.py,sha256=ZQo9upkE29vw0QFuBT6sYw85DhOhHQg59RSYu-OcdQg,9067
31
32
  multi_lang_build/register/support/__init__.py,sha256=Hg5oKJn5KhJ-qikzpDtFf0CO9WVnMvJVhExf20-PC10,443
32
- multi_lang_build/register/support/claude.py,sha256=YgXdU0--1wr6QIDL6rojY_zLKnlb-nu6fDqvpKywzd4,3370
33
- multi_lang_build/register/support/codebuddy.py,sha256=6ZPj0bs6erkSvok5lHueLbqxjIOCqml98zJoVTuBKj4,3356
34
- multi_lang_build/register/support/opencode.py,sha256=zGrTREyCNUX8RZgTbv9p2KV0ZcQjB68jZQqIClFbD1k,2394
33
+ multi_lang_build/register/support/claude.py,sha256=Ku4ZkVVEh6--ALlGKDG8brTWPKXpJsj0gp36pbqVFr8,3364
34
+ multi_lang_build/register/support/codebuddy.py,sha256=b0omRs2BcxeTdKho0aQ3bbjuzU6-WrcQFyCIuf-grQo,3356
35
+ multi_lang_build/register/support/opencode.py,sha256=B9x_cfJcWDjNLDiWZsN5Hj1TqlMGG9Zh0oeey8l16X8,2388
35
36
  multi_lang_build/register/support/trae.py,sha256=nkiQRCWp8in3cI3BLuWHMMLzQwiQQv3crxAU06sXOuk,2527
36
- multi_lang_build-0.3.0.dist-info/METADATA,sha256=9TkZPohwKmu_KV2vxzKjXJqMY2vfm-P7nkXi1chwrzQ,10882
37
- multi_lang_build-0.3.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
38
- multi_lang_build-0.3.0.dist-info/entry_points.txt,sha256=0vd5maQH5aZoqnpbr2Yr_IWB_-ncWX1rO3jGBCW3pHY,319
39
- multi_lang_build-0.3.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
40
- multi_lang_build-0.3.0.dist-info/RECORD,,
37
+ multi_lang_build-0.3.1.dist-info/METADATA,sha256=rPFzE7_v5AbrnUbS9zGWcknq_jOJX_c0RtM49cVGdpU,11122
38
+ multi_lang_build-0.3.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
39
+ multi_lang_build-0.3.1.dist-info/entry_points.txt,sha256=0vd5maQH5aZoqnpbr2Yr_IWB_-ncWX1rO3jGBCW3pHY,319
40
+ multi_lang_build-0.3.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
41
+ multi_lang_build-0.3.1.dist-info/RECORD,,