{"id":15355169,"url":"https://github.com/sake92/sbt-hepek","last_synced_at":"2025-06-22T08:38:20.937Z","repository":{"id":59970385,"uuid":"81370554","full_name":"sake92/sbt-hepek","owner":"sake92","description":"Sbt plugin for rendering Scala objects to files. And more!","archived":false,"fork":false,"pushed_at":"2023-12-08T17:28:29.000Z","size":44,"stargazers_count":21,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-15T00:35:44.488Z","etag":null,"topics":["html","sbt","sbt-plugin","scala","static-site-generator"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sake92.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-02-08T20:03:06.000Z","updated_at":"2024-12-09T19:54:19.000Z","dependencies_parsed_at":"2023-12-08T18:26:01.398Z","dependency_job_id":"4bb62d7c-6f11-4ee0-b4d3-3fd27008fa8a","html_url":"https://github.com/sake92/sbt-hepek","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/sake92/sbt-hepek","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sake92%2Fsbt-hepek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sake92%2Fsbt-hepek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sake92%2Fsbt-hepek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sake92%2Fsbt-hepek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sake92","download_url":"https://codeload.github.com/sake92/sbt-hepek/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sake92%2Fsbt-hepek/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261263495,"owners_count":23132555,"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":["html","sbt","sbt-plugin","scala","static-site-generator"],"created_at":"2024-10-01T12:22:53.988Z","updated_at":"2025-06-22T08:38:15.924Z","avatar_url":"https://github.com/sake92.png","language":"Scala","funding_links":[],"categories":["Table of Contents","Sbt plugins"],"sub_categories":["Sbt plugins"],"readme":"# sbt-hepek\n![Maven Central](https://img.shields.io/maven-central/v/ba.sake/sbt-hepek_2.12_1.0)\n\nAn sbt plugin for writing Scala `object`s to files.  \nSee also [**hepek**](https://github.com/sake92/hepek), static content generator that builds upon this plugin.\n\n\n## Installation\n\nAdd the plugin to `project/plugins.sbt`:\n```scala\naddSbtPlugin(\"ba.sake\" % \"sbt-hepek\" % \"0.6.0\")\n```\n\nand enable it in `build.sbt`: \n```scala\nmyProject.enablePlugins(HepekPlugin)\n```\n\n## Usage\n\nThe main task of sbt-hepek is `hepek`.  \nWhen executed, it will:\n1. copy all files from `src/main/resources/public` to `hepek_output` folder\n1. write all `object .. extends Renderable` from the `files` package to `hepek_output` folder\n1. write accessors for `src/main/resources/public` files, so you don't have to type it, or make mistakes\n\n\n\nMinimal example:\n\n```scala\npackage files // mandatory !!\n\nimport java.nio.file.Paths\nimport ba.sake.hepek.core.Renderable\n\nobject RenderMe extends Renderable {\n\n  // access `src/main/resources/public` files through autogenerated files.\u003cTAB\u003e\n  override def render =\n    \"Some text\" // arbitrary Scala code\n  \n  override def relPath = \n    Paths.get(\"renderme.txt\")\n}\n```\n\nWhen you run `sbt hepek`, you'll find the `hepek_output/renderme.txt` file,  \nwith text `Some text`.\n\n## Examples / docs\n- [my blog](https://github.com/sake92/sake-ba-source) rendered @ [blog.sake.ba](https://blog.sake.ba)\n- [examples](https://github.com/sake92/hepek-examples)\n- [philosophy behind hepek](https://dev.to/sake_92/render-static-site-from-scala-code)\n\n\n---\n\n## Fun fact\nI think that this is the first project that tried this approach, namely, using first-class Scala `object`s for this kind of stuff.  \nCorrect me if I'm wrong... ^_^\n\n---\n\n\n## About the name\n\nA \"hepek\" in Bosnian language is a jargon for a thing/thingy/stuff...  \nIt is used when we don't know the name of a thing: \"Give me that ... *hepek*\".  \nAlso, it is used in the famous show called \"Top lista nadrealista\" as a name for an advanced device which calms down situations of various kinds.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsake92%2Fsbt-hepek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsake92%2Fsbt-hepek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsake92%2Fsbt-hepek/lists"}