{"id":19968981,"url":"https://github.com/ankithans/gsoc21","last_synced_at":"2026-03-06T06:04:15.775Z","repository":{"id":132448236,"uuid":"378306570","full_name":"ankithans/gsoc21","owner":"ankithans","description":"Project Tracker for Google Summer of Code @aerogear","archived":false,"fork":false,"pushed_at":"2021-08-23T08:15:08.000Z","size":21,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T17:48:34.671Z","etag":null,"topics":["charmil","cobra"],"latest_commit_sha":null,"homepage":"https://ankithans.github.io/gsoc21","language":null,"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/ankithans.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2021-06-19T02:30:01.000Z","updated_at":"2021-08-31T08:49:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"2b725168-bf89-4ea1-ac72-d698903d4c4e","html_url":"https://github.com/ankithans/gsoc21","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ankithans/gsoc21","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankithans%2Fgsoc21","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankithans%2Fgsoc21/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankithans%2Fgsoc21/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankithans%2Fgsoc21/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ankithans","download_url":"https://codeload.github.com/ankithans/gsoc21/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankithans%2Fgsoc21/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30164532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T04:43:31.446Z","status":"ssl_error","status_checked_at":"2026-03-06T04:40:30.133Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["charmil","cobra"],"created_at":"2024-11-13T02:48:24.453Z","updated_at":"2026-03-06T06:04:15.687Z","avatar_url":"https://github.com/ankithans.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n    \u003ca href=\"https://summerofcode.withgoogle.com/projects/#4595512243650560\"\u003e\u003cimg src=\"https://cdn.discordapp.com/attachments/852928325197234256/855675167874220032/Group_4.png\" width=\"550\" alt=\"google-summer-of-code\"\u003e\u003c/a\u003e\r\n\u003c/div\u003e\r\n\u003cp align=\"center\"\u003e\r\n    \u003ccode\u003e \r\n\t\u003ca href=\"#-project-abstract\"\u003eProject Abstract\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\r\n    \u003ca href=\"#-weekly-reports\"\u003eWeekly Summary\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\r\n    \u003ca href=\"#-pull-requests--issues\"\u003ePull Requests \u0026 Issues\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\r\n\t\u003ca href=\"#-would-like-to-sync\"\u003eWould like to sync?\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\r\n    \u003ca href=\"#-links\"\u003eLinks\u003c/a\u003e\r\n    \u003c/code\u003e\r\n\u003c/p\u003e\r\n\u003cbr\u003e\r\n\r\n## ❔ Project Abstract\r\n\r\n\r\n[Charmil](https://github.com/aerogear/charmil/) is a framework for building command line plugins on top of Golang [Cobra](https://github.com/spf13/cobra) Library.\r\nCharmil will grant your cobra-based CLI superpowers that cobra does not support and that show to be crucial tools for efficiency and effectiveness. These CLI's can also be added to any Host CLI as plugins.\r\n\r\n\r\n\u003cp align=\"center\"\u003e\r\n    \u003cimg src=\"https://raw.githubusercontent.com/aerogear/charmil/main/docs/images/logo_cropped.png\"\u003e\r\n\u003c/p\u003e\r\n\r\nCobra is standard and very famous in the CLI industry and is being used in many industry projects such as Kubernetes, rhoas, gh-cli, etc. To make the development process easier we introduced Charmil.\r\n\r\nCharmil solves many problems/issues faced by developers during development of CLI’s. The major feature that Charmil brings on the table is the ability to develop multiple fragmented CLI’s, maintained/working in separate repositories, and later embed/combine them in a single Host CLI.\r\n\r\n\r\n\r\n### Charmil Components in brief\r\n- Charmil SDK - For building mutlirepo CLI’s\r\n- Charmil Validator - Cobra Testing Library\r\n- Charmil CLI - Creating starter and managing CLI project\r\n- Charmil Command Registry - Install CLI plugins with binary from maintained registry\r\n\r\n\r\nFor detailed description visit [Charmil](https://github.com/aerogear/charmil/)\r\n\r\n\u003cbr\u003e\r\n\r\n## 📅 Weekly Reports\r\n- Week 1️⃣ [Trying to set core in place](weekly-reports/week1.md)\r\n- Week 2️⃣ [Finally there is something to move with](weekly-reports/week2.md)\r\n- Week 3️⃣ [Let's validate the cobra commands](weekly-reports/week3.md)\r\n- Week 4️⃣ [Garnishing charmil validator framework](weekly-reports/week4.md)\r\n- Week 5️⃣ [CLI for the CLI framework](weekly-reports/week5.md)\r\n- Week 6️⃣ [CLI on it's way](weekly-reports/week6.md)\r\n- Week 7️⃣ [Fixing things up](weekly-reports/week7.md)\r\n- Week 8️⃣ [It needs a refactor](weekly-reports/week8.md)\r\n- Week 9️⃣ [Final move before completion](weekly-reports/week9.md)\r\n- Week 1️⃣ 0️⃣ [Case Study](weekly-reports/week10.md)\r\n\r\n\r\n\u003cbr\u003e\r\n\r\n## ✨ Pull Requests \u0026 Issues\r\nThis summarizes my work during this summer with [Aerogear](https://github.com/aerogear)\r\n\r\n| Pull Request  \t| Related Issue  \t|\r\n|---\t|---\t|\r\n| [#45](https://github.com/aerogear/charmil/pull/45) charmil as wrapper for cobra  \t        | Charmil Core  \t|\r\n| [#48](https://github.com/aerogear/charmil/pull/48) Factory(RHOAS) for driving charmil  \t| Charmil Core  \t|\r\n| [#52](https://github.com/aerogear/charmil/pull/52) Add i18n support \u0026 improve logging  \t| [issue#50](https://github.com/aerogear/charmil/issues/50) [#51](https://github.com/aerogear/charmil/issues/51)  \t|\r\n| [#82](https://github.com/aerogear/charmil/pull/82) Validator for cobra commands  \t| [issue#58](https://github.com/aerogear/charmil/issues/58)  \t|\r\n| [#83](https://github.com/aerogear/charmil/pull/83) CI/CD \u0026 issue pr templates  \t| [issue#53](https://github.com/aerogear/charmil/issues/53)  \t|\r\n| [#97](https://github.com/aerogear/charmil/pull/97) fix: traverse all the child cmds + duplicates     | [issue#95](https://github.com/aerogear/charmil/issues/95)  \t|\r\n| [#101](https://github.com/aerogear/charmil/pull/101) test for validator \u0026 add it to CI/CD   | [issue#94](https://github.com/aerogear/charmil/issues/94) [issue#92](https://github.com/aerogear/charmil/issues/92) \t|\r\n| [#767](https://github.com/redhat-developer/app-services-cli/pull/767) add cobra commands validator in Rhoas   | [issue#777](https://github.com/redhat-developer/app-services-cli/issues/777) |\r\n| [#103](https://github.com/aerogear/charmil/pull/103) validate rules in loop    | [issue#98](https://github.com/aerogear/charmil/issues/98) [issue#93](https://github.com/aerogear/charmil/issues/93) [issue#53](https://github.com/aerogear/charmil/issues/53)|\r\n| [#105](https://github.com/aerogear/charmil/pull/105) refactor RuleConfig + overriding default values   | [issue#110](https://github.com/aerogear/charmil/issues/110) [issue#104](https://github.com/aerogear/charmil/issues/104) [issue#133](https://github.com/aerogear/charmil/issues/133)|\r\n| [#139](https://github.com/aerogear/charmil/pull/139) Regex validation in command name(UseMatches rule)  \t        | [issue#84](https://github.com/aerogear/charmil/issues/84)  \t|\r\n| [#142](https://github.com/aerogear/charmil/pull/142) Set up gh-pages and settings for docusaurus  \t        | [issue#140](https://github.com/aerogear/charmil/issues/140)  \t|\r\n| [#144](https://github.com/aerogear/charmil/pull/144) Config with array of commands during validation \t        | [issue#86](https://github.com/aerogear/charmil/issues/86) \t|\r\n| [#154](https://github.com/aerogear/charmil/pull/154) Pull pkg from starter to charmil core  \t| [issue#149](https://github.com/aerogear/charmil/issues/149)\t|\r\n| [#814](https://github.com/redhat-developer/app-services-cli/pull/814) Update charmil \u0026 validatorOptions in rhoas    | Breaking changes in new release |\r\n| [#155](https://github.com/aerogear/charmil/pull/155)   Charmil CLI for starter project       | [issue#143](https://github.com/aerogear/charmil/issues/143)  \t|\r\n| [#159](https://github.com/aerogear/charmil/pull/159)   feat: example validation       | [issue#116](https://github.com/aerogear/charmil/issues/116)  \t|\r\n| [#160](https://github.com/aerogear/charmil/pull/160)   chore: refactor docs \u0026 contributing.md       | [issue#148](https://github.com/aerogear/charmil/issues/148) [issue#126](https://github.com/aerogear/charmil/issues/126) [issue#111](https://github.com/aerogear/charmil/issues/111) [issue#54](https://github.com/aerogear/charmil/issues/54)  \t| \r\n| [#161](https://github.com/aerogear/charmil/pull/161)   fix: skip validation for children       | [issue#151](https://github.com/aerogear/charmil/issues/151)  \t|\r\n| [#170](https://github.com/aerogear/charmil/pull/170)   feat: charmil init command       | [issue#165](https://github.com/aerogear/charmil/issues/165) [issue#164](https://github.com/aerogear/charmil/issues/164)  \t|\r\n| [#173](https://github.com/aerogear/charmil/pull/173)   chore: remove starter from main       | Charmil Core  \t|\r\n| [#182](https://github.com/aerogear/charmil/pull/182)   feat: Punctuation rule in validator       | [issue#168](https://github.com/aerogear/charmil/issues/168)  \t|\r\n| [#188](https://github.com/aerogear/charmil/pull/188)   chore: refactor repo structure       | [issue#180](https://github.com/aerogear/charmil/issues/180)  \t|\r\n| [#860](https://github.com/aerogear/charmil/pull/860)   docs: remove full stops from flags       | [issue#830](https://github.com/aerogear/charmil/issues/830)  \t|\r\n| [#193](https://github.com/aerogear/charmil/pull/193)   fix: goreleaser build path       |  Build issue \t|\r\n| [#195](https://github.com/aerogear/charmil/pull/195)   chore: move factory to starter       | [issue#162](https://github.com/aerogear/charmil/issues/162)  \t|\r\n| [#201](https://github.com/aerogear/charmil/pull/201)   fix: update starter url and imports       | Charmil Init Command  \t|\r\n| [#900](https://github.com/aerogear/charmil/pull/900)   fix: locale key err in cluster_kubernetes       | [issue#899](https://github.com/aerogear/charmil/issues/899)  \t|\r\n| [#202](https://github.com/aerogear/charmil/pull/202)   feat: disable validation rule option       | [issue#197](https://github.com/aerogear/charmil/issues/197)  \t|\r\n| [#203](https://github.com/aerogear/charmil/pull/203)   feat: check for updates in starter       | [issue#138](https://github.com/aerogear/charmil/issues/138)  \t|\r\n| [#207](https://github.com/aerogear/charmil/pull/207)   feat: add command in charmil cli        | [issue#166](https://github.com/aerogear/charmil/issues/166)  \t|\r\n| [#209](https://github.com/aerogear/charmil/pull/209)   docs: update i18n docs       | [issue#163](https://github.com/aerogear/charmil/issues/163)  \t|\r\n| [#219](https://github.com/aerogear/charmil/pull/219)   chore: refactor core package       | [issue#213](https://github.com/aerogear/charmil/issues/213) [issue#183](https://github.com/aerogear/charmil/issues/183) [issue#185](https://github.com/aerogear/charmil/issues/185)  \t|\r\n| [#223](https://github.com/aerogear/charmil/pull/202)   feat: example builder utility       | [issue#218](https://github.com/aerogear/charmil/issues/218)  \t|\r\n\r\n\u003cbr\u003e \r\n\r\n## 🔮 Future Goals\r\nThe Summer was productive for us, but there are some things we can do better. Mostly the future goals depends upon - [charmil issues](https://github.com/aerogear/charmil/issues), on which we will be continuing working on after GSoC ends. Here are some of the issues to catch up.\r\n- Ability to use plugins without compiling them into root CLI\r\n- Arguments validators in cobra command\r\n- Charmil starter should be automatically updated when changes in the repo\r\n- Ability to save command log/history\r\n\r\n\u003cbr\u003e\r\n\r\n\r\n## 🤝 Acknowledgment\r\nA big thanks to my mentors [Wojciech Trocki](https://github.com/wtrocki), [Jack Delahunt](https://github.com/jackdelahunt), [Dimitri Saridakis](https://github.com/dimakis), [JJ Kiely](https://github.com/jjkiely), [Ramakrishna Pattnaik](https://github.com/rkpattnaik780), [\r\nMaksym Vavilov](https://github.com/makslion) for being active and guiding us during the whole period. \r\n\r\nThank you for including me in the project's development; it was a fantastic learning experience for me this summer.\r\n\r\n\u003cbr\u003e \r\n\r\n## 🔄 Would like to sync?\r\n- We are keeping all the communications open, so that everyone can sync and is free to contribute. So if you have any feature/bugs suggestions about anything please donot hesitate to open up an [issue](https://github.com/aerogear/charmil/issues/new)\r\n- You can join [Aerogear's discord server](https://discord.gg/hsDJUPkAWH) to participate in the discussions happening\r\n\r\n\u003cbr\u003e\r\n\r\n## 🔗 Important Links\r\n- [aerogear/charmil](https://github.com/aerogear/charmil/)\r\n- [aerogear/charmil-starter](https://github.com/aerogear/charmil-starter)\r\n- [aerogear/charmil-host-example](https://github.com/aerogear/charmil-host-example)\r\n- [aerogear/charmil-plugin-example](https://github.com/aerogear/charmil-plugin-example)\r\n- [redhat-developer/app-services-cli](https://github.com/redhat-developer/app-services-cli)\r\n- [My Blog \u0026 Website](https://ankithans.github.io)\r\n\r\n\u003cbr\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankithans%2Fgsoc21","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fankithans%2Fgsoc21","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankithans%2Fgsoc21/lists"}