{"id":21735724,"url":"https://github.com/sloweax/argparse","last_synced_at":"2025-03-21T00:25:34.732Z","repository":{"id":261541815,"uuid":"884614406","full_name":"sloweax/argparse","owner":"sloweax","description":"callback driven argparse library with subparser support","archived":false,"fork":false,"pushed_at":"2025-01-12T01:50:44.000Z","size":61,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-25T20:44:49.409Z","etag":null,"topics":["argparse","callback","flag","getopt","go"],"latest_commit_sha":null,"homepage":"","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/sloweax.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":"2024-11-07T04:23:08.000Z","updated_at":"2024-12-23T20:56:24.000Z","dependencies_parsed_at":"2024-11-07T05:27:47.520Z","dependency_job_id":"e17ba91c-13ce-4a9b-bad3-f0c3c823454d","html_url":"https://github.com/sloweax/argparse","commit_stats":null,"previous_names":["sloweax/argparse"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloweax%2Fargparse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloweax%2Fargparse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloweax%2Fargparse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloweax%2Fargparse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sloweax","download_url":"https://codeload.github.com/sloweax/argparse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244713791,"owners_count":20497709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["argparse","callback","flag","getopt","go"],"created_at":"2024-11-26T05:14:22.041Z","updated_at":"2025-03-21T00:25:34.697Z","avatar_url":"https://github.com/sloweax.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Examples\n\nyou can check more examples [here](https://github.com/sloweax/argparse/tree/main/example)\n\nbasic example\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/sloweax/argparse\"\n)\n\n// $ go run . -v -s abc\n// verbose=true short=abc long= positional=\n\n// $ go run . -vs xyz\n// verbose=true short=xyz long= positional=\n\n// $ go run . -s abc --long 123 xyz\n// verbose=false short=abc long=123 positional=xyz\n\n// $ go run . --help\n// usage: ./basic [-h] [-v] [-s var] [--long var] [positional]\n//\n// options:\n//     -h, --help     shows usage and exits\n//     -v\n//     -s var\n//     --long var\n//     positional\n\nfunc main() {\n\tparser := argparse.NewWithDefaults()\n\n\tverbose := false\n\tshort := \"\"\n\tlong := \"\"\n\tpositional := \"\"\n\n\tparser.AddOption(argparse.Bool(\"v\", \u0026verbose))\n\tparser.AddOption(argparse.String(\"s\", \u0026short))\n\tparser.AddOption(argparse.String(\"long\", \u0026long))\n\tparser.AddOption(argparse.StringPositional(\"positional\", \u0026positional))\n\n\tif err := parser.ParseArgs(); err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(1)\n\t}\n\n\tfmt.Printf(\"verbose=%v short=%v long=%v positional=%v\\n\", verbose, short, long, positional)\n}\n```\n\nfrom struct example\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/sloweax/argparse\"\n)\n\ntype MyStruct struct {\n\t// alias accepts a comma separated list of names\n\tFlag       bool   `alias:\"f\"`\n\tLongName   string `alias:\"l\"`\n\tPositional string `type:\"positional\" required:\"true\"`\n\t// if name is not specified. it will be auto generated based on field name\n\tBadNameForOption string `name:\"nice-name\"`\n\t// dont add the option below\n\tIgnored string `ignored:\"true\"`\n}\n\n// go run . --long-name abc -f 123 --nice-name test\n// Flag=true\n// LongName=abc\n// Positional=123\n// BadNameForOption=test\n\nfunc main() {\n\tms := MyStruct{}\n\tparser := argparse.FromStruct(\u0026ms)\n\n\tif err := parser.ParseArgs(); err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(1)\n\t}\n\n\tfmt.Printf(\"Flag=%v\\n\", ms.Flag)\n\tfmt.Printf(\"LongName=%v\\n\", ms.LongName)\n\tfmt.Printf(\"Positional=%v\\n\", ms.Positional)\n\tfmt.Printf(\"BadNameForOption=%v\\n\", ms.BadNameForOption)\n}\n```\n\nsubparser example\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/sloweax/argparse\"\n)\n\n// $ go run . --prefix cool- add file\n// adding file cool-file\n\n// $ go run . --prefix very- del bad-file\n// deleting file very-bad-file\n\nfunc main() {\n\tparser := argparse.New()\n\tadd_parser := argparse.New()\n\tdel_parser := argparse.New()\n\n\tparser.AddSubParser(\"add\", add_parser)\n\tparser.AddSubParser(\"del\", del_parser)\n\n\tprefix := \"\"\n\tparser.AddOption(argparse.String(\"prefix\", \u0026prefix))\n\n\tfile := \"\"\n\tadd_parser.AddOption(argparse.StringPositional(\"file\", \u0026file).SetRequired(true))\n\tdel_parser.AddOption(argparse.StringPositional(\"file\", \u0026file).SetRequired(true))\n\n\tif err := parser.ParseArgs(); err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(1)\n\t}\n\n\tswitch parser.SubParser {\n\tcase add_parser:\n\t\tfmt.Printf(\"adding file %s\\n\", prefix+file)\n\tcase del_parser:\n\t\tfmt.Printf(\"deleting file %s\\n\", prefix+file)\n\tdefault:\n\t\tfmt.Println(\"nothing to do\")\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloweax%2Fargparse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsloweax%2Fargparse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloweax%2Fargparse/lists"}