{"id":23792583,"url":"https://github.com/howz1t/commander","last_synced_at":"2026-06-23T17:31:20.093Z","repository":{"id":116798077,"uuid":"331121715","full_name":"HOWZ1T/Commander","owner":"HOWZ1T","description":"C# DotNet core Command Framework","archived":false,"fork":false,"pushed_at":"2021-02-07T14:22:20.000Z","size":768,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-21T13:30:58.989Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HOWZ1T.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-01-19T22:03:10.000Z","updated_at":"2021-02-07T14:22:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"aa0102e7-bd27-4c7b-b318-4b0c5cd084a3","html_url":"https://github.com/HOWZ1T/Commander","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HOWZ1T/Commander","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HOWZ1T%2FCommander","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HOWZ1T%2FCommander/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HOWZ1T%2FCommander/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HOWZ1T%2FCommander/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HOWZ1T","download_url":"https://codeload.github.com/HOWZ1T/Commander/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HOWZ1T%2FCommander/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34700904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-01-01T18:35:58.772Z","updated_at":"2026-06-23T17:31:20.074Z","avatar_url":"https://github.com/HOWZ1T.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](./assets/construction-resized.jpeg)\n\n# Commander\nCommander is a simple, extensible, and configurable command framework for C# developers.\n\nIt's based on a simple idea of giving string input to the program and returning a string containing the result of the execution of the command based on the input.\n\n# Features\n- Automatic command naming based on method name (overridable by attribute).\n- Automatic conversion and piping of string input to relevant data type(s) based on the command's method parameter.\n- Automatic usage example generation.\n- Automatic command documentation based on method attributes and the method itself.\n- Automatic input splitting based on whitespace, preserves single and double quoted strings.\n- Automatic command dispatching.\n- Includes a default help command.\n- Add custom parameter convertors.\n- Add custom input splitters.\n- Add custom help command.\n- Detailed command documentation with special character sequences.\n- Command groups and nestable commands.\n- Required and optional command parameters, with optional parameters having default value(s).\n- Organizational unit 'Cog' which is a class that contains commands and it can optionally group commands together.\n- Dead simple execution through the program Run method.\n- Error handling.\n\n# Installation\nTODO\n\n# Documentation\nTODO\n\n[Generated Code Docs](./documentation/html/index.html)\n\n# Applications\nCommander can be used to implement command systems for games, command line tools, chat bots etc.\n\nIt accomplishes this goal by enforcing the input of a command string to the program and forcing all commands to return a string containing the result of the commands' execution.\n\n# Quickstart\nBelow is a simple example of how to use this framework.\n```c#\n/* ExampleCog.cs */\nusing Commander;\n\nnamespace Quickstart {\n    public class ExampleCog : Commander.Cog {\n        public ExampleCog(Program program) : base(program) {\n            /* SETUP CODE HERE */\n        }\n        \n        [Commander.Command(Description=\"Repeats the given message.\")]\n        [Commander.Example(\"@c hello\")]\n        [Commander.Example(\"@c 'hello world!'\")]\n        public string Echo(string message) {\n            return message;\n        }\n        \n        [Commander.Command(Description=\"Adds numbers together.\")]\n        [Commander.Example(\"@c 10\")]\n        [Commander.Example(\"@c 5 16\")]\n        public string Add(int a, int b = 10) {\n            return (a + b).ToString();\n        }\n    }\n}\n```\n\n```c#\n/* ExampleProgram.cs */\nusing Commander;\n\nnamespace Quickstart {\n    public class ExampleProgram : Commander.Program\n    {\n        public ExampleProgram() : base(\"ExampleProgram\")\n        {\n            /* SETUP CODE HERE */\n            \n            Register(new ExampleCog(this));\n        }\n        \n        public static void Main(string[] args) {\n            var program = new ExampleProgram();\n            Console.WriteLn(program.Run(\"ExampleProgram echo 'hello world!'\"));\n            Console.WriteLn(program.Run(\"ExampleProgram add 400 20\"));\n            Console.WriteLn(program.Run(\"ExampleProgram help\"));\n            Console.WriteLn(program.Run(\"ExampleProgram help add\"));\n        }\n    }\n}\n```\n\n# Examples\nTODO\n\n#### TODO\n- ~~[ ] Finish Unit tests.~~\n- ~~[ ] Add flag parser.~~\n- [x] Add argument preprocessor for commands ala discordpy ?\n      E.g.: myFunc(string arg1, int arg2)\n- [x] Add code comments\n- [x] Complete unit tests (current: 85% Coverage)\n- [x] Add code docs\n- [ ] Add examples\n- [ ] Prettify README.md\n- [x] Add command usage info generation from metadata\n- [x] Add special sequence parser\n- [x] Add input splitter to program\n- [x] Add default help command\n- ~~This all could have gone in a project right?~~","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowz1t%2Fcommander","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhowz1t%2Fcommander","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowz1t%2Fcommander/lists"}