{"id":18854391,"url":"https://github.com/urbanjost/m_args","last_synced_at":"2026-01-27T15:32:58.583Z","repository":{"id":117557639,"uuid":"352477882","full_name":"urbanjost/M_args","owner":"urbanjost","description":"Command line parsing using a NAMELIST group  -- packages for use with fpm(1)","archived":false,"fork":false,"pushed_at":"2025-07-11T02:00:25.000Z","size":1987,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T05:52:33.346Z","etag":null,"topics":["argument","command","command-line","commandline","fortran-package-manager","fpm","parsing"],"latest_commit_sha":null,"homepage":"","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/urbanjost.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-03-29T01:10:10.000Z","updated_at":"2025-07-11T00:05:46.000Z","dependencies_parsed_at":"2024-03-29T04:32:10.610Z","dependency_job_id":"6aa9567b-196b-4db8-b146-63bbb6224d80","html_url":"https://github.com/urbanjost/M_args","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/urbanjost/M_args","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_args","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_args/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_args/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_args/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/urbanjost","download_url":"https://codeload.github.com/urbanjost/M_args/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_args/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28815407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: 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":["argument","command","command-line","commandline","fortran-package-manager","fpm","parsing"],"created_at":"2024-11-08T03:48:04.918Z","updated_at":"2026-01-27T15:32:58.570Z","avatar_url":"https://github.com/urbanjost.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"# M_args\n\n   A module that provides for command line parsing using NAMELIST syntax. See\n   [M_arges](https://urbanjost.github.io/M_args/M_args.3m_args.html) for a\n   full description.\n\n   Installation requires fpm(1):\n\n      [Fortran Package Manager](https://github.com/fortran-lang/fpm) )\n\n## Sample Usage\n\n   ```fortran\n          module M_arguments\n          use M_args,    only : get_namelist, print_dictionary, unnamed, oneline\n\n          ! \u003e\u003e\u003e CHANGE THIS\n          ! declare and initialize a namelist. Letter_ denotes an uppercase short command keyword\n          real              :: x=111.1, y=222.2, z=333.3\n          real              :: point(3)=[10.0,20.0,30.0]\n          character(len=80) :: title=\" \"\n          logical           :: l=.false., l_=.false.\n          logical           :: help=.false., version=.false., v=.false., h=.false.\n          equivalence       (help,h),(version,v)\n\n          namelist /args/ x,y,z,point,title,help,h,version,v,l,l_\n          ! \u003c\u003c END OF CHANGES\n\n          contains\n             subroutine get_args()\n             integer :: ios\n             character(len=255) :: message ! use for I/O error messages\n             character(len=:),allocatable :: readme  ! stores updated namelist\n             character(len=10000) :: hold_namelist(60)\n                hold_namelist=''\n                write(hold_namelist,nml=args,iostat=ios,iomsg=message)\n                if(ios.eq.0)then\n                   readme=get_namelist(oneline(hold_namelist))\n                   read(readme,nml=args,iostat=ios,iomsg=message)\n                endif\n                if(ios.ne.0)then\n                   write(*,'(\"ERROR:\",i0,1x,a)')ios, trim(message)\n                   call print_dictionary()\n                   stop 1\n                endif\n             end subroutine get_args\n          end module M_arguments\n\n          program short\n          use M_arguments, only : get_args, unnamed\n          use M_arguments  ! make user variables available\n          implicit none\n          integer :: i\n             call get_args()  ! crack command line options\n             ! \u003e\u003e USER YOUR VARIABLES HERE. FOR EXAMPLE:\n             write(*,*)'VALUES ARE NOW ', new_line('A'),\u0026\n             \u0026'x        ',x,              new_line('A'),\u0026\n             \u0026'y        ',y,              new_line('A'),\u0026\n             \u0026'z        ',z,              new_line('A'),\u0026\n             \u0026'point    ',point,          new_line('A'),\u0026\n             \u0026'title    ',title,          new_line('A'),\u0026\n             \u0026'help     ',help,'h ',h,    new_line('A'),\u0026\n             \u0026'version  ',version,'v ',v, new_line('A'),\u0026\n             \u0026'l        ',l,              new_line('A'),\u0026\n             \u0026'l_       ',l_\n             if(size(unnamed).gt.0)then\n                write(*,'(a)')'UNNAMED:'\n                write(*,'(i6.6,3a)')(i,'[',unnamed(i),']',i=1,size(unnamed))\n             endif\n             !\u003c\u003c END OF EXAMPLE USAGE OF VARIABLES\n          end program short\n          !end program demo_M_args\n   ```\n   This program can now be called like\n   ```bash\n       ./demo_M_args -x 200 -y 123 -l --title 'My title'\n   ```\n\n## Supports FPM ![fpm](docs/images/fpm_logo.gif)\n\n   download the github repository and build it with\n   fpm ( as described at [Fortran Package Manager](https://github.com/fortran-lang/fpm) )\n\n   ```bash\n        git clone https://github.com/urbanjost/M_args.git\n        cd M_args\n        fpm test\n   ```\n\n   or just list it as a dependency in your fpm.toml project file.\n\n```toml\n        [dependencies]\n        M_args        = { git = \"https://github.com/urbanjost/M_args.git\" }\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furbanjost%2Fm_args","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furbanjost%2Fm_args","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furbanjost%2Fm_args/lists"}