{"id":27214597,"url":"https://github.com/rocq-community/templates","last_synced_at":"2025-04-10T03:24:38.350Z","repository":{"id":36411581,"uuid":"190182583","full_name":"rocq-community/templates","owner":"rocq-community","description":"Templates for configuration files and scripts useful for maintaining Coq projects [maintainers=@liyishuai,@palmskog,@Zimmi48]","archived":false,"fork":false,"pushed_at":"2024-12-13T08:30:01.000Z","size":185,"stargazers_count":13,"open_issues_count":27,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-05T09:20:02.352Z","etag":null,"topics":["continuous-integration","coq","mustache-templates"],"latest_commit_sha":null,"homepage":"","language":"Mustache","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/rocq-community.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":"2019-06-04T10:48:12.000Z","updated_at":"2024-12-13T08:30:01.000Z","dependencies_parsed_at":"2023-10-16T10:32:51.731Z","dependency_job_id":"6314bcde-0f82-4a56-b7e5-08b5b74cf6fc","html_url":"https://github.com/rocq-community/templates","commit_stats":null,"previous_names":["rocq-community/templates"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Ftemplates","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Ftemplates/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Ftemplates/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Ftemplates/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rocq-community","download_url":"https://codeload.github.com/rocq-community/templates/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248149634,"owners_count":21055796,"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":["continuous-integration","coq","mustache-templates"],"created_at":"2025-04-10T03:24:37.759Z","updated_at":"2025-04-10T03:24:38.331Z","avatar_url":"https://github.com/rocq-community.png","language":"Mustache","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Templates for Coq projects in coq-community and elsewhere\n\n[![Contributing][contributing-shield]][contributing-link]\n[![Code of Conduct][conduct-shield]][conduct-link]\n[![Zulip][zulip-shield]][zulip-link]\n\n[contributing-shield]: https://img.shields.io/badge/contributions-welcome-%23f7931e.svg\n[contributing-link]: https://github.com/coq-community/manifesto/blob/master/CONTRIBUTING.md\n\n[conduct-shield]: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-%23f15a24.svg\n[conduct-link]: https://github.com/coq-community/manifesto/blob/master/CODE_OF_CONDUCT.md\n\n[zulip-shield]: https://img.shields.io/badge/chat-on%20zulip-%23c1272d.svg\n[zulip-link]: https://coq.zulipchat.com/#narrow/stream/237663-coq-community-devs.20.26.20users\n\nTemplate files for use in generating configuration files\nand other boilerplate for coq-community (or external) Coq projects.\n\n## Meta\n\n- Coq-community maintainers:\n  - Karl Palmskog ([**@palmskog**](https://github.com/palmskog))\n  - Théo Zimmermann ([**@Zimmi48**](https://github.com/Zimmi48))\n  - Yishuai Li ([**@liyishuai**](https://github.com/liyishuai))\n- License: [The Unlicense](LICENSE)\n\n## Building instructions\n\nFiles ending in `.mustache` have values to fill in (and the `.mustache`\nextension should be removed from the resulting files). Filling in values\nis done automatically using a mustache command-line tool. There are many mustache\nimplementations available from the [Mustache website](https://mustache.github.io).\nNote that these implementations can differ w.r.t. the supported input\nformat (for your project metadata). We suggest you rely on a\nYAML-compatible mustache implementation such as `ruby-mustache`\n(available for instance as an\n[Ubuntu](https://packages.ubuntu.com/ruby-mustache) or\n[Debian](https://packages.debian.org/ruby-mustache) package)\nor `mustache-go` (available as a\n[Nix](https://nixos.org/nixos/packages.html?attr=mustache-go\u0026channel=nixpkgs-unstable) package).\nNote that the `mustache` available via opam does *not* work!\n\n### The `meta.yml` file\n\nTo enable generating files (e.g, `.opam` files and CI setup) using one such\nmustache tool, one needs to provide a `meta.yml` file containing the required\nvalues. Depending on your project and the desired setup, the `meta.yml` files of\none of the following projects may serve as a starting point:\n\n- [Huffman](https://github.com/coq-community/huffman) (pure library, no dependencies, coq-community):\n  [meta.yml](https://github.com/coq-community/huffman/blob/master/meta.yml)\n- [AAC Tactics](https://github.com/coq-community/aac-tactics) (plugin, one-branch per Coq version):\n  [meta.yml](https://github.com/coq-community/aac-tactics/blob/master/meta.yml)\n- [reglang](https://github.com/coq-community/reglang) (pure library, mathcomp, custom docker images):\n  [meta.yml](https://github.com/coq-community/reglang/blob/master/meta.yml)\n- [StructTact](https://github.com/uwplse/StructTact) (pure library, no dependencies, no coq-community):\n  [meta.yml](https://github.com/uwplse/StructTact/blob/master/meta.yml)\n\nA description of all available keys and the template files they are used in can\nbe found in [`ref.yml`](ref.yml).\n\n### Generating configuration files using the `generate.sh` script\n\nOnce `\u003cyour-project\u003e/meta.yml` is written, the standard files can be generated\nby calling the `generate.sh` script in the following manner:\n\n```shell\ncd \u003cyour-project\u003e\nTMP=$(mktemp -d); git clone https://github.com/coq-community/templates.git $TMP\n$TMP/generate.sh # nix users can do instead: nix-shell -p mustache-go --run $TMP/generate.sh\ngit add \u003cthe_generated_files\u003e\n```\nRegarding continuous integration, the `generate.sh` script will create:\n* a [Travis CI](https://docs.travis-ci.com/) configuration\n    [(based on opam + Nix)](./.travis.yml.mustache),\n* or a [GitHub Action](https://help.github.com/en/actions) workflow\n    (based on [opam](./docker-action.yml.mustache) or [Nix](./nix-action.yml.mustache)),\n* or a [CircleCI](https://circleci.com/) configuration\n    [(based on opam)](./config.yml.mustache),\n\ndepending on whether `meta.yml` contains `travis: true` or `action: true`\nor `circleci: true`.\n\nFor `coq-community` projects, using `travis: true` is currently\ndisabled due to a very limited build-time allowance from Travis. Using\nGitHub actions is a reasonable choice.\n\nIf you only want to (re)generate certain files, you can specify them as arguments to the shell script:\n```shell\n$TMP/generate.sh README.md .github/workflows/docker-action.yml\n```\n\nAll files generated from the templates should be kept under version\ncontrol as continuous integration needs its config file as well as the\n`.opam` file to be present in the repository and GitHub needs the\n`README.md` file order to display it.\n\n### Manual generation of files using the templates.\n\nAs an alternative to using `generate.sh`, the configuration files can\nalso be generated by calling `mustache` directly. For instance,\nasuming the templates are available in a sibling directory, a standard\n`README.md` can be generated as follows: \n\n```shell\nmustache meta.yml ../templates/README.md.mustache \u003e README.md\n```\n\n### Further information\n\nYou can find documentation, advice, and guidelines on how to maintain a Coq project\nin the [wiki](https://github.com/coq-community/manifesto/wiki).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocq-community%2Ftemplates","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocq-community%2Ftemplates","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocq-community%2Ftemplates/lists"}