{"id":19367106,"url":"https://github.com/abailly/yate","last_synced_at":"2025-02-24T13:40:26.815Z","repository":{"id":14866414,"uuid":"17589869","full_name":"abailly/yate","owner":"abailly","description":"Yet Another Template Engine","archived":false,"fork":false,"pushed_at":"2020-03-28T15:23:05.000Z","size":28,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-06T21:45:40.701Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abailly.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-10T10:58:57.000Z","updated_at":"2020-03-28T15:23:08.000Z","dependencies_parsed_at":"2022-09-23T04:32:06.063Z","dependency_job_id":null,"html_url":"https://github.com/abailly/yate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abailly%2Fyate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abailly%2Fyate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abailly%2Fyate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abailly%2Fyate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abailly","download_url":"https://codeload.github.com/abailly/yate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240491064,"owners_count":19809974,"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":[],"created_at":"2024-11-10T07:48:17.188Z","updated_at":"2025-02-24T13:40:26.785Z","avatar_url":"https://github.com/abailly.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"**This project is in its infancy and the infant mortality of dev projects is very high. Use at your own risks...**\n\n# Yet Another Template Engine\n\nA Simple template engine initially created to speed-up generation of new projects in various languages, first of all Haskell.\n\n# Rationale\n\nIt has become commonplace in various languages to provide *bootstrappers*, usually in the form of command-line utilities, that\ncreate new instances of a project in a the target language given some basic project description, usually sorting out dependencies.\nIn the java world, one can use\n[maven archetypes](https://maven.apache.org/guides/introduction/introduction-to-archetypes.html), in clojure we use\n[lein new](https://github.com/technomancy/leiningen), in javascript there is [bower](https://github.com/bower/bower), in scala\n[conscript](https://github.com/n8han/conscript/)...\n\nThere is nothing similar in Haskell and each and every time I start a new development I have to copy/paste existing project to get\na walking skeleton. So I started working on a small template-based generator that would allow me to maintain various projects\nskeletons and instantiate them at will.\n\n# Usage\n\n```\nyate [template id] [output directory] [template descriptor]\n```\n\n## Template Id\n\nOne of:\n\n* A directory inside the directory referenced by `YATE_TEMPLATES` environment variable, defaulting to current directory,\n* A github-hosted project under the current user id,\n* A full github URI to a project.\n\n## Template Descriptor\n\nA Haskell data-structure providing objects to instantiate variables, for example:\n\n```\n\"project\" :\u003e: L [\n    \"name\" :\u003e: S \"myproj\",\n    \"version\" :\u003e: S \"1.0\",\n    \"synopsis\"  :\u003e: S \"This is a sample project\",\n    \"authors\" :\u003e: L [\n        \"author\" :\u003e: L [\n            \"name\":\u003e: S \"Arnaud Bailly \u003carnaud.oqube@gmail.com\u003e\",\n            \"year\" :\u003e: S \"2014\"]]]\n```\n\n# Templates\n\n* Use [mustache](http:://mustache.github.io) syntax,\n* May contain a `.mapping` file that is itself a template defining how to map source files to target files.\n\n# TODO\n\n* Use [hastache](https://github.com/lymar/hastache)\n* Use pure JSON as project descriptor\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabailly%2Fyate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabailly%2Fyate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabailly%2Fyate/lists"}