{"id":16411152,"url":"https://github.com/phoe/asd-generator","last_synced_at":"2026-03-02T11:02:33.146Z","repository":{"id":111724087,"uuid":"56944321","full_name":"phoe/asd-generator","owner":"phoe","description":"Automatic generator for ASDF's .asd files","archived":false,"fork":false,"pushed_at":"2018-12-21T15:03:21.000Z","size":48,"stargazers_count":18,"open_issues_count":1,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-24T04:27:15.132Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Common Lisp","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/phoe.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":"2016-04-23T22:51:54.000Z","updated_at":"2024-11-02T05:56:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa47302c-d541-475a-8f60-c29bac8443b6","html_url":"https://github.com/phoe/asd-generator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/phoe/asd-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoe%2Fasd-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoe%2Fasd-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoe%2Fasd-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoe%2Fasd-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phoe","download_url":"https://codeload.github.com/phoe/asd-generator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phoe%2Fasd-generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29999224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T09:59:02.300Z","status":"ssl_error","status_checked_at":"2026-03-02T09:59:02.001Z","response_time":60,"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":[],"created_at":"2024-10-11T06:44:41.369Z","updated_at":"2026-03-02T11:02:33.103Z","avatar_url":"https://github.com/phoe.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# asd-generator\nAutomatic generator for ASDF's .asd files.\n\nThis is still in alpha, but I use it to build my own projects, if it means anything. `:P`\n\n\nThis autoregenerates an .asd file with a customizable `:COMPONENTS` field, based on the file structure you provide.\n\nThe project must have a valid `.asd` file containing a single `asdf:defsystem` expression.\n\nThe project must have a `asd-generator-data.asd` file with the structure outlined below.\n\n\n## Installation\n\nCurrently, not available from quicklisp.\n\nWith Roswell, you can:\n\n    $ ros install phoe/asd-generator\n\n## Lisp API\n### write-asd\nSyntax: `(write-asd system-designator \u0026key im-sure)`\n\nThis writes the ASD file for a provided ASDF-loadable system.\n\nYou need to press Enter before anything happens, unless the `im-sure` key is set to non-nil.\n\n### regen\nSyntax: `(regen \u0026key im-sure)`\n\nThis calls write-asd on the *current* package, as stated in the **`*package*`** variable.\n\nYou need to press Enter before anything happens, unless the `im-sure` key is set to non-nil.\n\n## Command line API\n\n    update-asdf [-y] [-C pathname] [-f data] [[-s SYSTEM]*]\n\nMostly corresponds to calling `regen` and `write-asd`.\n\n* -y : Do not confirm; equivalent to `:im-sure t`.\n* -C pathname : Specify the system pathname. Similar to `make -C path`\n* -s SYSTEM : Specify which asdf system definition to update.\n              This is because the current directory could contain multiple asdf definitions.\n              By default, it selects the first system in the dictionary order of the names.\n              Can be specified multiple times, in which case all definitions are updated.\n              Do not include `.asd` in the system name.\n* -f data : Specify the asd-generator-data file relative to the system pathname,\n              or an absolute pathname. Defaulted to `asd-generator-data.asd`.\n              Similar to `Makefile -f makefile.mk`.\n* -r : Call `ql:register-local-projects`.\n\n## Known bugs/TODO\nSave *all* of your files in Emacs before running this, as it will pull files like `.#file.lisp` into the `:COMPONENTS` tree along with all others.\n\n## Example of usage:\n\nOriginal asdf file:\n\n```\n(defsystem #:asd-generator-test\n :description \"system for testing asd-generator\"\n :author \"Masataro Asai\"\n :depends-on (#:cl-fad\n              #:iterate\n              #:alexandria)\n :serial t\n :components ())\n```\n\nasd-generator-data.asd\n\n```common-lisp\n((\"package\")        ;single element list (\u003cPATH\u003e) is an abbreviation of (:file \u003cPATH\u003e)\n (:file \"constants\")\n (:file \"constants2\" :depends-on (\"constants\")) ; you have to specify :file when you use other features\n (:cffi-grovel-file \"grovel\") ; works well with asdf extensions\n ;;\n (:dir :src                             ; abbreviation of :module + :components.\n       (\"a\")\n       (\"b\")\n       (:dir \"sub\" (\"a\"))\n       \n       (:rest)\n       ;; Traverse the current directory recursively and expands to the list of\n       ;; files that are not included by any other directives.\n       ;; \n       ;; This means that the expansion is affected by the components not just\n       ;; before, but also after (:rest).  Thus the files \"a\", \"b\", \"sub/a\", \"c\",\n       ;; \"rest\", all files below \"more-grovels\", all files below \"non-recursive\",\n       ;; all files below \"sub2\" are excluded.\n       ;; \n       ;; This could be somewhat similar to the behavior of\n       ;; (call-next-method).\n       \n       ;; (:rest :as :file)    ; You can specify the component type (:file by default).\n\n       (\"c\")\n       \n       ;; A file rest.lisp should be included by (:file \"rest\")\n       (:file \"rest\")\n       \n       (:dir \"more-grovels\"\n             (:rest :as :cffi-grovel-file)) ; Specifying the component type.\n    \n       (:dir \"non-recursive\"\n             ;; You can disable the recursive traversal.  Note that while the\n             ;; expansion includes only the files immediately below\n             ;; \"non-recursive\" and does not include the files in the\n             ;; subdirectory \"non-recursive/sub\", the files below\n             ;; \"non-recursive/sub\" are also excluded from the above (:rest)\n             ;; directive. In other words, all files below \"non-recursive\" are\n             ;; treated as if they are already included.\n             (:rest :recursive nil))\n         \n       (:dir \"sub2\")                  ; directory without subcomponents imply (:rest).\n       ;; (:dir \"sub2\" (:rest))       ; eqivalent definition\n       ))\n```\n\nResult asdf file:\n\n``` common-lisp\n(defsystem #:asd-generator-test\n :description \"system for testing asd-generator\"\n :author \"Masataro Asai\"\n :depends-on (#:cl-fad\n              #:iterate\n              #:alexandria)\n :serial t\n :components ((:file \"package\")\n              (:file \"constants\")\n              (:file \"constants2\"\n               :depends-on (\"constants\"))\n              (:cffi-grovel-file \"grovel\")\n              (:module \"src\"\n               :components ((:file \"a\")\n                            (:file \"b\")\n                            (:module \"sub\"\n                             :components ((:file \"a\")))\n                            (:file \"not-specified-anywhere/a\")\n                            (:file \"not-specified-anywhere/b\")\n                            (:file \"not-specified-anywhere/c\")\n                            (:file \"c\")\n                            (:file \"rest\")\n                            (:module \"more-grovels\"\n                             :components ((:cffi-grovel-file \"a\")\n                                          (:cffi-grovel-file \"b\")\n                                          (:cffi-grovel-file \"c\")))\n                            (:module \"non-recursive\"\n                             :components ((:file \"a\")\n                                          (:file \"b\")\n                                          (:file \"c\")))\n                            (:module \"sub2\"\n                             :components ((:file \"a\")\n                                          (:file \"b\")\n                                          (:file \"c\")))))))\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphoe%2Fasd-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphoe%2Fasd-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphoe%2Fasd-generator/lists"}