pretty-build


Namepretty-build JSON
Version 1.2.8 PyPI version JSON
download
home_pagehttps://github.com/prettybuild/pretty-build
Summary增强型构建系统包装器 - 美观的构建界面和实时监控
upload_time2025-07-29 10:51:03
maintainerNone
docs_urlNone
authorPretty Build Team
requires_python>=3.8
licenseNone
keywords build cmake make tui textual monitoring embedded stm32
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Pretty Build - 增强型构建系统包装器

一个功能强大的构建系统包装器,为 Ninja、Make 和 CMake 提供美观的实时界面、性能监控、智能缓存和插件系统。

## ✨ 主要功能

### 🎨 美观的用户界面
- 响应式网格布局,自适应终端大小
- 实时进度显示和构建状态
- 彩色输出和错误高亮
- 内存使用情况可视化

### ⚡ 性能优化
- 智能构建缓存系统
- 实时性能监控
- 并行构建支持
- 增量构建检测

### 🔌 插件系统
- 可扩展的插件架构
- 内置日志插件
- 自定义构建流程钩子
- 消息处理管道

### 🔔 通知系统
- 跨平台系统通知
- 构建完成提醒
- 错误和警告通知
- 可配置的通知设置

### ⌨️ 交互式控制
- 实时键盘快捷键
- 暂停/恢复构建
- 动态配置调整
- 性能监控界面

## 🚀 快速开始

### 安装依赖
```bash
pip install -r requirements.txt
```

### 基本使用
```bash
# 自动检测构建系统并构建
python pretty_build.py

# 指定构建系统
python pretty_build.py --build-system ninja

# 清理构建
python pretty_build.py --clean

# 重新构建
python pretty_build.py --rebuild

# 设置并行任务数
python pretty_build.py --jobs 8

# 启用详细输出
python pretty_build.py --verbose
```

## ⌨️ 键盘快捷键

在构建过程中,您可以使用以下快捷键:

| 快捷键 | 功能 |
|--------|------|
| `P` | 暂停/恢复构建 |
| `Q` | 退出构建 |
| `C` | 打开配置界面 |
| `H` | 显示帮助信息 |
| `F` | 性能监控界面 |
| `G` | 插件管理界面 |
| `X` | 缓存管理 |
| `N` | 通知设置 |

## 🔧 配置选项

### 命令行参数
```bash
python pretty_build.py --help
```

### 配置文件
程序会自动创建和使用 `.pretty_build.conf` 配置文件,包含以下选项:

- **构建设置**: 并行任务数、构建类型、优化级别
- **缓存设置**: 启用缓存、缓存目录、缓存大小限制
- **通知设置**: 系统通知、声音提醒
- **性能监控**: CPU/内存监控、性能报告
- **插件配置**: 启用的插件列表

## 🔌 插件开发

### 创建自定义插件
```python
from pretty_build import BuildPlugin, MessageType

class MyPlugin(BuildPlugin):
    def __init__(self):
        super().__init__("my_plugin", "1.0.0")
    
    def initialize(self, config, console):
        # 插件初始化逻辑
        return True
    
    def on_build_start(self, build_state):
        # 构建开始时的处理
        pass
    
    def on_build_end(self, build_state, return_code):
        # 构建结束时的处理
        pass
    
    def process_message(self, message, msg_type):
        # 处理构建消息
        return message
```

### 注册插件
```python
plugin_manager.register_plugin(MyPlugin())
```

## 📊 性能监控

实时监控以下指标:
- CPU 使用率
- 内存使用量
- 构建时间
- 编译文件数
- 错误和警告统计

## 🗂️ 智能缓存

- 基于文件哈希的智能缓存
- 自动检测文件变更
- 增量构建支持
- 缓存统计和管理

## 🔔 通知系统

支持以下通知类型:
- 构建成功/失败
- 错误和警告
- 性能警报
- 自定义通知

## 🛠️ 支持的构建系统

- **Ninja**: 快速并行构建
- **GNU Make**: 传统 Makefile 支持
- **CMake**: 跨平台构建系统

## 📋 系统要求

- Python 3.8+
- Windows/Linux/macOS
- 终端支持 ANSI 颜色

## 🤝 贡献

欢迎提交 Issue 和 Pull Request!

## 📄 许可证

MIT License - 详见 LICENSE 文件

## 🔗 相关链接

- [Rich 库文档](https://rich.readthedocs.io/)
- [Ninja 构建系统](https://ninja-build.org/)
- [CMake 文档](https://cmake.org/documentation/)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/prettybuild/pretty-build",
    "name": "pretty-build",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "build, cmake, make, tui, textual, monitoring, embedded, stm32",
    "author": "Pretty Build Team",
    "author_email": "team@prettybuild.dev",
    "download_url": "https://files.pythonhosted.org/packages/fb/45/01b06823c7bf883c909d07aba5922c79217ddef39b9796d240458c361ede/pretty-build-1.2.8.tar.gz",
    "platform": null,
    "description": "# Pretty Build - \u589e\u5f3a\u578b\u6784\u5efa\u7cfb\u7edf\u5305\u88c5\u5668\r\n\r\n\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684\u6784\u5efa\u7cfb\u7edf\u5305\u88c5\u5668\uff0c\u4e3a Ninja\u3001Make \u548c CMake \u63d0\u4f9b\u7f8e\u89c2\u7684\u5b9e\u65f6\u754c\u9762\u3001\u6027\u80fd\u76d1\u63a7\u3001\u667a\u80fd\u7f13\u5b58\u548c\u63d2\u4ef6\u7cfb\u7edf\u3002\r\n\r\n## \u2728 \u4e3b\u8981\u529f\u80fd\r\n\r\n### \ud83c\udfa8 \u7f8e\u89c2\u7684\u7528\u6237\u754c\u9762\r\n- \u54cd\u5e94\u5f0f\u7f51\u683c\u5e03\u5c40\uff0c\u81ea\u9002\u5e94\u7ec8\u7aef\u5927\u5c0f\r\n- \u5b9e\u65f6\u8fdb\u5ea6\u663e\u793a\u548c\u6784\u5efa\u72b6\u6001\r\n- \u5f69\u8272\u8f93\u51fa\u548c\u9519\u8bef\u9ad8\u4eae\r\n- \u5185\u5b58\u4f7f\u7528\u60c5\u51b5\u53ef\u89c6\u5316\r\n\r\n### \u26a1 \u6027\u80fd\u4f18\u5316\r\n- \u667a\u80fd\u6784\u5efa\u7f13\u5b58\u7cfb\u7edf\r\n- \u5b9e\u65f6\u6027\u80fd\u76d1\u63a7\r\n- \u5e76\u884c\u6784\u5efa\u652f\u6301\r\n- \u589e\u91cf\u6784\u5efa\u68c0\u6d4b\r\n\r\n### \ud83d\udd0c \u63d2\u4ef6\u7cfb\u7edf\r\n- \u53ef\u6269\u5c55\u7684\u63d2\u4ef6\u67b6\u6784\r\n- \u5185\u7f6e\u65e5\u5fd7\u63d2\u4ef6\r\n- \u81ea\u5b9a\u4e49\u6784\u5efa\u6d41\u7a0b\u94a9\u5b50\r\n- \u6d88\u606f\u5904\u7406\u7ba1\u9053\r\n\r\n### \ud83d\udd14 \u901a\u77e5\u7cfb\u7edf\r\n- \u8de8\u5e73\u53f0\u7cfb\u7edf\u901a\u77e5\r\n- \u6784\u5efa\u5b8c\u6210\u63d0\u9192\r\n- \u9519\u8bef\u548c\u8b66\u544a\u901a\u77e5\r\n- \u53ef\u914d\u7f6e\u7684\u901a\u77e5\u8bbe\u7f6e\r\n\r\n### \u2328\ufe0f \u4ea4\u4e92\u5f0f\u63a7\u5236\r\n- \u5b9e\u65f6\u952e\u76d8\u5feb\u6377\u952e\r\n- \u6682\u505c/\u6062\u590d\u6784\u5efa\r\n- \u52a8\u6001\u914d\u7f6e\u8c03\u6574\r\n- \u6027\u80fd\u76d1\u63a7\u754c\u9762\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u5b89\u88c5\u4f9d\u8d56\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n\r\n### \u57fa\u672c\u4f7f\u7528\r\n```bash\r\n# \u81ea\u52a8\u68c0\u6d4b\u6784\u5efa\u7cfb\u7edf\u5e76\u6784\u5efa\r\npython pretty_build.py\r\n\r\n# \u6307\u5b9a\u6784\u5efa\u7cfb\u7edf\r\npython pretty_build.py --build-system ninja\r\n\r\n# \u6e05\u7406\u6784\u5efa\r\npython pretty_build.py --clean\r\n\r\n# \u91cd\u65b0\u6784\u5efa\r\npython pretty_build.py --rebuild\r\n\r\n# \u8bbe\u7f6e\u5e76\u884c\u4efb\u52a1\u6570\r\npython pretty_build.py --jobs 8\r\n\r\n# \u542f\u7528\u8be6\u7ec6\u8f93\u51fa\r\npython pretty_build.py --verbose\r\n```\r\n\r\n## \u2328\ufe0f \u952e\u76d8\u5feb\u6377\u952e\r\n\r\n\u5728\u6784\u5efa\u8fc7\u7a0b\u4e2d\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u5feb\u6377\u952e\uff1a\r\n\r\n| \u5feb\u6377\u952e | \u529f\u80fd |\r\n|--------|------|\r\n| `P` | \u6682\u505c/\u6062\u590d\u6784\u5efa |\r\n| `Q` | \u9000\u51fa\u6784\u5efa |\r\n| `C` | \u6253\u5f00\u914d\u7f6e\u754c\u9762 |\r\n| `H` | \u663e\u793a\u5e2e\u52a9\u4fe1\u606f |\r\n| `F` | \u6027\u80fd\u76d1\u63a7\u754c\u9762 |\r\n| `G` | \u63d2\u4ef6\u7ba1\u7406\u754c\u9762 |\r\n| `X` | \u7f13\u5b58\u7ba1\u7406 |\r\n| `N` | \u901a\u77e5\u8bbe\u7f6e |\r\n\r\n## \ud83d\udd27 \u914d\u7f6e\u9009\u9879\r\n\r\n### \u547d\u4ee4\u884c\u53c2\u6570\r\n```bash\r\npython pretty_build.py --help\r\n```\r\n\r\n### \u914d\u7f6e\u6587\u4ef6\r\n\u7a0b\u5e8f\u4f1a\u81ea\u52a8\u521b\u5efa\u548c\u4f7f\u7528 `.pretty_build.conf` \u914d\u7f6e\u6587\u4ef6\uff0c\u5305\u542b\u4ee5\u4e0b\u9009\u9879\uff1a\r\n\r\n- **\u6784\u5efa\u8bbe\u7f6e**: \u5e76\u884c\u4efb\u52a1\u6570\u3001\u6784\u5efa\u7c7b\u578b\u3001\u4f18\u5316\u7ea7\u522b\r\n- **\u7f13\u5b58\u8bbe\u7f6e**: \u542f\u7528\u7f13\u5b58\u3001\u7f13\u5b58\u76ee\u5f55\u3001\u7f13\u5b58\u5927\u5c0f\u9650\u5236\r\n- **\u901a\u77e5\u8bbe\u7f6e**: \u7cfb\u7edf\u901a\u77e5\u3001\u58f0\u97f3\u63d0\u9192\r\n- **\u6027\u80fd\u76d1\u63a7**: CPU/\u5185\u5b58\u76d1\u63a7\u3001\u6027\u80fd\u62a5\u544a\r\n- **\u63d2\u4ef6\u914d\u7f6e**: \u542f\u7528\u7684\u63d2\u4ef6\u5217\u8868\r\n\r\n## \ud83d\udd0c \u63d2\u4ef6\u5f00\u53d1\r\n\r\n### \u521b\u5efa\u81ea\u5b9a\u4e49\u63d2\u4ef6\r\n```python\r\nfrom pretty_build import BuildPlugin, MessageType\r\n\r\nclass MyPlugin(BuildPlugin):\r\n    def __init__(self):\r\n        super().__init__(\"my_plugin\", \"1.0.0\")\r\n    \r\n    def initialize(self, config, console):\r\n        # \u63d2\u4ef6\u521d\u59cb\u5316\u903b\u8f91\r\n        return True\r\n    \r\n    def on_build_start(self, build_state):\r\n        # \u6784\u5efa\u5f00\u59cb\u65f6\u7684\u5904\u7406\r\n        pass\r\n    \r\n    def on_build_end(self, build_state, return_code):\r\n        # \u6784\u5efa\u7ed3\u675f\u65f6\u7684\u5904\u7406\r\n        pass\r\n    \r\n    def process_message(self, message, msg_type):\r\n        # \u5904\u7406\u6784\u5efa\u6d88\u606f\r\n        return message\r\n```\r\n\r\n### \u6ce8\u518c\u63d2\u4ef6\r\n```python\r\nplugin_manager.register_plugin(MyPlugin())\r\n```\r\n\r\n## \ud83d\udcca \u6027\u80fd\u76d1\u63a7\r\n\r\n\u5b9e\u65f6\u76d1\u63a7\u4ee5\u4e0b\u6307\u6807\uff1a\r\n- CPU \u4f7f\u7528\u7387\r\n- \u5185\u5b58\u4f7f\u7528\u91cf\r\n- \u6784\u5efa\u65f6\u95f4\r\n- \u7f16\u8bd1\u6587\u4ef6\u6570\r\n- \u9519\u8bef\u548c\u8b66\u544a\u7edf\u8ba1\r\n\r\n## \ud83d\uddc2\ufe0f \u667a\u80fd\u7f13\u5b58\r\n\r\n- \u57fa\u4e8e\u6587\u4ef6\u54c8\u5e0c\u7684\u667a\u80fd\u7f13\u5b58\r\n- \u81ea\u52a8\u68c0\u6d4b\u6587\u4ef6\u53d8\u66f4\r\n- \u589e\u91cf\u6784\u5efa\u652f\u6301\r\n- \u7f13\u5b58\u7edf\u8ba1\u548c\u7ba1\u7406\r\n\r\n## \ud83d\udd14 \u901a\u77e5\u7cfb\u7edf\r\n\r\n\u652f\u6301\u4ee5\u4e0b\u901a\u77e5\u7c7b\u578b\uff1a\r\n- \u6784\u5efa\u6210\u529f/\u5931\u8d25\r\n- \u9519\u8bef\u548c\u8b66\u544a\r\n- \u6027\u80fd\u8b66\u62a5\r\n- \u81ea\u5b9a\u4e49\u901a\u77e5\r\n\r\n## \ud83d\udee0\ufe0f \u652f\u6301\u7684\u6784\u5efa\u7cfb\u7edf\r\n\r\n- **Ninja**: \u5feb\u901f\u5e76\u884c\u6784\u5efa\r\n- **GNU Make**: \u4f20\u7edf Makefile \u652f\u6301\r\n- **CMake**: \u8de8\u5e73\u53f0\u6784\u5efa\u7cfb\u7edf\r\n\r\n## \ud83d\udccb \u7cfb\u7edf\u8981\u6c42\r\n\r\n- Python 3.8+\r\n- Windows/Linux/macOS\r\n- \u7ec8\u7aef\u652f\u6301 ANSI \u989c\u8272\r\n\r\n## \ud83e\udd1d \u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request\uff01\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\nMIT License - \u8be6\u89c1 LICENSE \u6587\u4ef6\r\n\r\n## \ud83d\udd17 \u76f8\u5173\u94fe\u63a5\r\n\r\n- [Rich \u5e93\u6587\u6863](https://rich.readthedocs.io/)\r\n- [Ninja \u6784\u5efa\u7cfb\u7edf](https://ninja-build.org/)\r\n- [CMake \u6587\u6863](https://cmake.org/documentation/)\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "\u589e\u5f3a\u578b\u6784\u5efa\u7cfb\u7edf\u5305\u88c5\u5668 - \u7f8e\u89c2\u7684\u6784\u5efa\u754c\u9762\u548c\u5b9e\u65f6\u76d1\u63a7",
    "version": "1.2.8",
    "project_urls": {
        "Bug Tracker": "https://github.com/prettybuild/pretty-build/issues",
        "Documentation": "https://prettybuild.readthedocs.io/",
        "Homepage": "https://github.com/prettybuild/pretty-build",
        "Source Code": "https://github.com/prettybuild/pretty-build"
    },
    "split_keywords": [
        "build",
        " cmake",
        " make",
        " tui",
        " textual",
        " monitoring",
        " embedded",
        " stm32"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a3d75d817b9224b03abe8c36195557b710a85885d938a8900f0b810668cbc21c",
                "md5": "db152e18170e61801293499c56e9350d",
                "sha256": "f1e9c62e8af1f71db671d0fc2353996720ebd9de3948dfa31445857c5de330a0"
            },
            "downloads": -1,
            "filename": "pretty_build-1.2.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "db152e18170e61801293499c56e9350d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 53308,
            "upload_time": "2025-07-29T10:51:01",
            "upload_time_iso_8601": "2025-07-29T10:51:01.723959Z",
            "url": "https://files.pythonhosted.org/packages/a3/d7/5d817b9224b03abe8c36195557b710a85885d938a8900f0b810668cbc21c/pretty_build-1.2.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fb4501b06823c7bf883c909d07aba5922c79217ddef39b9796d240458c361ede",
                "md5": "26e3b40eaac69ac09734589fb06e9f5a",
                "sha256": "5c2becbd25a173ed33e1a7711d0d1c49b563b5fc1ca5454d6e4717775a1cb7f4"
            },
            "downloads": -1,
            "filename": "pretty-build-1.2.8.tar.gz",
            "has_sig": false,
            "md5_digest": "26e3b40eaac69ac09734589fb06e9f5a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 62657,
            "upload_time": "2025-07-29T10:51:03",
            "upload_time_iso_8601": "2025-07-29T10:51:03.248937Z",
            "url": "https://files.pythonhosted.org/packages/fb/45/01b06823c7bf883c909d07aba5922c79217ddef39b9796d240458c361ede/pretty-build-1.2.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-29 10:51:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "prettybuild",
    "github_project": "pretty-build",
    "github_not_found": true,
    "lcname": "pretty-build"
}
        
Elapsed time: 2.15886s