{"id":13526541,"url":"https://github.com/eryajf/eryajfctl","last_synced_at":"2026-03-09T20:30:51.025Z","repository":{"id":172702618,"uuid":"649244346","full_name":"eryajf/eryajfctl","owner":"eryajf","description":"🚀 基于Cobra库快速打造类似kubectl一样的命令行工具箱 🧰 本项目同时展示了Go项目打包构建的最佳实践。","archived":false,"fork":false,"pushed_at":"2025-04-17T07:27:58.000Z","size":77,"stargazers_count":18,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-14T05:05:00.942Z","etag":null,"topics":["cobra","cobra-cli","eryajf","kubectl","ops","ops-tools"],"latest_commit_sha":null,"homepage":"https://wiki.eryajf.net","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eryajf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null},"funding":{"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://wiki.eryajf.net/reward/"]}},"created_at":"2023-06-04T08:47:48.000Z","updated_at":"2025-04-19T23:47:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"8fa6b8b0-574b-41a2-b1ae-ab82f83b37f0","html_url":"https://github.com/eryajf/eryajfctl","commit_stats":null,"previous_names":["eryajf/eryajfctl"],"tags_count":2,"template":true,"template_full_name":null,"purl":"pkg:github/eryajf/eryajfctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eryajf%2Feryajfctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eryajf%2Feryajfctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eryajf%2Feryajfctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eryajf%2Feryajfctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eryajf","download_url":"https://codeload.github.com/eryajf/eryajfctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eryajf%2Feryajfctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30310728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T20:05:46.299Z","status":"ssl_error","status_checked_at":"2026-03-09T19:57:04.425Z","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":["cobra","cobra-cli","eryajf","kubectl","ops","ops-tools"],"created_at":"2024-08-01T06:01:31.241Z","updated_at":"2026-03-09T20:30:50.981Z","avatar_url":"https://github.com/eryajf.png","language":"Go","funding_links":["https://wiki.eryajf.net/reward/"],"categories":["命令行工具","Go"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003eeryajfctl\u003c/h1\u003e\n\n[![Auth](https://img.shields.io/badge/Auther--eryajf-ff69b4.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAADZElEQVR4nO2ZX2iPURjHP/7/aZN/E21DaZvtwoVYyQUuGXLB/LtkLRcUhSJMSVwg3KCUJPJvLmRZtMQFLvwZhUJk/saGLWaYV6eet06n9/3tfd+9531/sW89td9z3vOc8z3nPOc8zzPoQQ+yAnlAA/AbcCzKR2ClTSL7LRNwNPkB5Noi0pggEQeYbovIh4SJLLBBojfwK2EiVTaIjEyYhANsskGkNAUi+2wQmZECkRM2iCxMgUi9DSKrxPhS7GOZjHXPhvGtYlwdMduYKWO9tmH8oBgvxj6KZawOoFfcxk+L8RzsI0fzkyFhO28EvqXg0FHlK1DtReRzFkzOCSmfvIhczIKJOSHlmheRgcAK4E4WTNDpQp4Ba4P4zxRgO3ArgSQqqDQDx4AKCWBDYwSwRDP4JWECG4CpQB9iwCTNsBsJl8srvxk4CtQBN4Enkre0GKQ7RaekCXgAXAcuAHuB1bLaZcAgrd+2uK78ai0PsfLSBshG70u9IDJmyUq2AYvlbD5N4Dg9l/EnArdFV9sdIlfEiLrNzFAlqPwE2kP2OaKNlyfH8Q9QFJVIixgepukqIuTdRRI3Be1TaczjnOgXRSXyTgwUarrBIVb4htbvcMA+nR7+UCdtc6MSOS8G9hj6+gjlnHEBd+WuMVaZ9FMyJiqRydrgB4B80VcFmFBtxALfFm3nlwPv48rfK7WoWDkc8jgpYq0eE/kOnAGG+4RBh3z6qTGOyzfIJeG2nQL6EQMmaEaTgtNdv+jKcFJwbI33XxEpAM76+IArrXIbFqVFpE0MuzeXF4nmEI9ecwZbhVo6GzsaxLhnniw74YQUVdDwwjppv2yzaPbIJ7HJdJz8RIX5JgYAL6V9vg0ifYEXMsAaj3Z3cpfkmPmhQAs5vHxgh+gbbdS0XMyTQdrkbdHhTiwTCdMHTCLl8hCqeGsalnFSO2JDNb3XxOZINqhkttFmfq8W4I1PbGcFuVr21qCloe7EarRvmzT9K01fYxAZJVmgA1yNKxwh4NF4q0Wr+UZs5JIxndskoVLoEskI1e/HRu6TCEpklR1ZebPcqk/YT9cu1UL190NgNCmhQGpfTjelLo2dMNEf2BkylXVF7eL6qAU3WyiVvCHIv7A7pBY2nizGWGC3FOr0XeoQZ96VIcbqAf8K/gLNGaTJ3vwbFgAAAABJRU5ErkJggg==)](https://github.com/eryajf)\n[![Eryajf HitCount](https://views.whatilearened.today/views/github/eryajf/eryajf.svg)](https://github.com/eryajf)\n[![GitHub license](https://img.shields.io/github/license/eryajf/eryajfctl)](https://github.com/eryajf/eryajfctl/blob/main/LICENSE)\n[![GitHub Stars](https://img.shields.io/github/stars/eryajf/eryajfctl)](https://github.com/eryajf/eryajfctl/stargazers)\n[![Eryajf Blog](https://img.shields.io/badge/%E5%8D%9A%E5%AE%A2-%E4%BA%8C%E4%B8%AB%E8%AE%B2%E6%A2%B5-d7b1bf?logo=Blogger)](https://wiki.eryajf.net)\n[![Eryajf WeChat](https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-%E8%BF%90%E7%BB%B4%E8%89%BA%E6%9C%AF-71f9fe?logo=WeChat)](https://y.gtimg.cn/music/photo_new/T053M000003iCCnF30PTi3.jpg)\n[![Eryajf Awesome Stars](https://img.shields.io/badge/Awesome-MyStarList-c780fa?logo=Awesome-Lists)](https://github.com/eryajf/awesome-stars-eryajf#readme)\n\n\u003cp\u003e 🌉 基于Cobra库快速开发类似kubectl一样的命令行工具框架 🌉\u003c/p\u003e\n\u003cimg src=\"https://cnb.cool/66666/resource/-/git/raw/main/img/hengtiao.gif\" width=\"100%\"  height=\"3\"\u003e\n\u003c/br\u003e\n\u003c/div\u003e\n\n运维也可以如此优雅！快用这个框架打造一个专属于你的工具箱吧！\n\n通过这个框架，你可以快速上手，直接构建你想要的运维工具，而不必再考虑配置，框架设计等内容。\n\n## 如何使用\n\n先拷贝配置文件:\n\n```sh\ncp config.example.yml config.yml\n```\n\n执行如下指令，运行示例参数：\n\n```sh\n$ go run main.go ex getconfig -w \"hello, This is eryajfctl\"\n通过配置文件获取到的用户名: eryajf\n通过配置文件获取到的密码: 123456\n通过命令行获取到的内容是: hello, This is eryajfctl\n```\n\n\u003e 其中ex为一级参数，getconfig为二级参数，大多数场景下，分两个层级就够用了，你可以把一级参数当做归类，比如 jenkins, gitlab，二级参数当做功能参数，再往后的参数则是该二级参数所需要的运行时参数。\n\n也可以编译成二进制，然后通过如下方式查看帮助信息：\n\n```\n# 编译\n$ make build\n\n#运行测试\n$ ./eryajfctl ex getconfig -h\n通过命令行获取配置信息\n\nUsage:\n  eryajfctl ex getconfig [flags]\n\nFlags:\n  -h, --help          help for getconfig\n  -w, --word string   测试参数 (default \"你好，这是测试\")\n```\n\n查看版本：\n\n```\n$ ./eryajfctl -v\n🍉 eryajfctl version information: \n  Version:    8400fbc\n  Git Commit: 8400fbc\n  Go version: go1.24.2\n  OS/Arch:    linux/amd64\n  Build Time: 2025-04-17 15:18:05\n```\n\n## 开始开发\n\n你可以直接参考ex参数的流程，开发新的参数，从而满足实际使用需求。\n\n如果你的配置文件中有敏感数据，可以考虑结合go-bindata来使用，通过执行：\n\n```\ngo-bindata -o=./public/bindata_config.go -pkg=public config.yml\n```\n\n然后更改 [public/config.go](https://github.com/eryajf/eryajfctl/blob/4cd30714062e5b65746bdb5f100f19bfe38ed52e/public/config.go#L28) 中的配置信息读取方式，接着进入开发即可。\n\n如果后续本地的config.yml配置有更新，则再次执行上边的命令，将配置文件注入到 `bindata_config.go` 即可。\n\n这样做的一个好处是，你的二进制放到服务器等地运行的时候，既不需要添加config.yml文件，也能防止文件中的敏感信息暴漏出去。\n\n## 生成文档\n\n执行如下命令，会自动生成该工具的文档，且生成子命令的文档。\n\n```\n$ ./eryajfctl --md-docs\n```\n\n在这里你可以看到所有的文档：[点我查看](./docs/eryajfctl.md)\n\n## 感谢开源\n\n此框架建立在如下几个优秀的开源项目之上：\n\n- [gopkg.in/yaml.v3 v3.0.1](https://github.com/go-yaml/yaml)\n- [github.com/spf13/cobra v1.9.1](https://github.com/spf13/cobra)\n- [github.com/spf13/viper v1.20.1](https://github.com/spf13/viper)\n\n## 其他参考\n\n如果你想熟悉了解此框架的详细用法，还可以参考我的如下三篇文章：\n\n- [使用go-bindata将文件编译进二进制](https://wiki.eryajf.net/pages/2bf6c3/)\n- [利用cobra库快速开发类似kubectl一样的命令行工具](https://wiki.eryajf.net/pages/5c4163/)\n- [近期关于cobra库的一些实践心得总结](https://wiki.eryajf.net/pages/7b8eff/)\n\n## 项目源码\n\n可选择你熟悉的平台浏览源码：\n\n|   服务商   |                   地址                   |\n| :------: | :------------------------------------------: |\n|  `CNB`  | \u003chttps://cnb.cool/eryajf/eryajfctl\u003e  |\n| `GitHub` | \u003chttps://github.com/eryajf/eryajfctl\u003e |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feryajf%2Feryajfctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feryajf%2Feryajfctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feryajf%2Feryajfctl/lists"}