{"id":18014409,"url":"https://github.com/idevz/lego","last_synced_at":"2026-03-03T06:36:36.380Z","repository":{"id":100854699,"uuid":"216291736","full_name":"idevz/lego","owner":"idevz","description":"lego version for runX","archived":false,"fork":false,"pushed_at":"2023-01-04T15:44:44.000Z","size":53,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T23:51:07.639Z","etag":null,"topics":["autodeployments","k8s-start","runx"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/idevz.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-20T01:27:28.000Z","updated_at":"2023-01-04T15:44:49.000Z","dependencies_parsed_at":"2023-06-02T04:15:44.317Z","dependency_job_id":null,"html_url":"https://github.com/idevz/lego","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/idevz/lego","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idevz%2Flego","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idevz%2Flego/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idevz%2Flego/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idevz%2Flego/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idevz","download_url":"https://codeload.github.com/idevz/lego/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idevz%2Flego/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30034121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T06:09:21.518Z","status":"ssl_error","status_checked_at":"2026-03-03T06:08:47.858Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autodeployments","k8s-start","runx"],"created_at":"2024-10-30T04:09:24.660Z","updated_at":"2026-03-03T06:36:36.376Z","avatar_url":"https://github.com/idevz.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 乐高 / [Lego][lego]\n\n```bash\n   ██▓    ▓█████   ▄████  ▒█████  \n  ▓██▒    ▓█   ▀  ██▒ ▀█▒▒██▒  ██▒\n  ▒██░    ▒███   ▒██░▄▄▄░▒██░  ██▒\n  ▒██░    ▒▓█  ▄ ░▓█  ██▓▒██   ██░\n  ░██████▒░▒████▒░▒▓███▀▒░ ████▓▒░\n  ░ ▒░▓  ░░░ ▒░ ░ ░▒   ▒ ░ ▒░▒░▒░ \n  ░ ░ ▒  ░ ░ ░  ░  ░   ░   ░ ▒ ▒░ \n    ░ ░      ░   ░ ░   ░ ░ ░ ░ ▒  \n      ░  ░   ░  ░      ░     ░ ░  \n```\n\n本项目是 runX 的乐高积木版，灵感来自对 [runX][runX]、[k8s-start][k8s-start]、wtool（微博内部工具包）\n几个项目的总结，旨在像搭积木一样来组合各种系统部署、管理功能，高效的代码复用、提高工作效率、解放双手。\n\n## 快速开始\n\n只需要简单几条命令就可以快速开始 Lego。\n\n### 安装\n\n只需运行如下命令即可安装 Lego。\n\n```bash\nsh -c \"$(curl -sSL https://raw.githubusercontent.com/idevz/lego/master/get.sh)\"\n# sh -c \"$(curl -H 'Cache-Control: no-cache' \\\n#     -sSL 'https://raw.githubusercontent.com/idevz/lego/master/get.sh')\"\n```\n\n### 其他命令示例\n\n```bash\n# 添加第三方模块 \"idevz\"\no lego add idevz\n# 运行模块 \"idevz\" 的相关命令\no idevz your_function\n```\n\n### 自动补全\n\n在相应的 shell .rc 文件后追加如下命令来开启命令自动补全\n\n```bash\nsource $YOUR_LEGO_ROOT/lego/ac/auto-complete\n```\n\n以 zsh 为例，只需在 `~/.zshrc` 文件末尾追加上面的命令，然后执行 `source ~/.zshrc` 令追加生效，\n即可完成自动补全。\n\n```bash\n# 注意，把这里的 $YOUR_LEGO_ROOT 换成你自己的 Lego 安装根目录\n# 运行 `o l_status` 命令可获取当前 LEGO_ROOT 路径\necho 'source $YOUR_LEGO_ROOT/lego/ac/auto-complete' \u003e\u003e ~/.zshrc\n```\n\n## 主要功能及思想\n\n* 快速搭建实验环境，部署 pvm(Parallels Virtual Machines)，并通过 prlctl 工具来管理 pvm\n* 分为内建和第三方两类模块，模块的组织方式相同，功能都由各模块下 `legoes` 目录下的脚本提供\n* 默认会根据 `lego/legoes/export` 文件中的配置及顺序自动载入 lego 目录下的通用函数库及功能\n* 分为命令和模块函数两种函数类型，尽管理论上它们都可以被直接调用，但它们的命名方式和功能定位都不一样\n* 模块函数是每个模块中，各种零散功能的封装；命名方式为 \"命令::模块名::函数名\"，比如 \"pvm::deploy::init_etc\"\n  表示的是 pvm 这个命令下，deploy 模块中的 init_etc 这个功能函数，原则上避免直接调用，\n  但是如果一定需要直接调用的话，对应的命令为 `o pvm deploy::init_etc`\n* 命令函数则是各种命令运行的载体，是对 ”模块函数“ 的封装和组合，乐高的思想主要体现在这个部分；\n  命名方式直接是 \"命令名称\"，而需要特别注意的是命令函数只能在各模块的 \"helpers.sh\" 文件中定义，\n  文件名必须是 \"helpers.sh\"，比如 ”pvm/legoes/helpers.sh“ 中的 \"start\" 函数，其对应的命令为 `o pvm start`\n* 除了 lego 目录下的全局模块外，其它的函数功能都是通过命令反推加载对应的文件，同时与自动补全对接（自动补全还未实现）\n\n## 规范及约定\n\n* 所有功能的帮助信息都写在对应功能函数定义的前一行，Lego 会解析 shell 文件\n  获取所有可用的功能及其对应的帮助信息（帮助信息不宜过长，简单说明要点即可）\n\n## TODO\n\n* 优化[自动补全][auto_completion]功能（比如首先对 模块进行补全，然后再补全模块后面的相关命令）\n* 更新、删除模块\n* `-h` 命令支持按模块名称显式相关帮助信息\n\n[lego]:https://github.com/idevz/lego/blob/master/README.md\n[auto_completion]:https://www.infoq.cn/article/bash-programmable-completion-tutorial\n[runX]:https://github.com/idevz/runx\n[k8s-start]:https://github.com/idevz/k8s-start\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidevz%2Flego","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidevz%2Flego","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidevz%2Flego/lists"}