{"id":37174847,"url":"https://github.com/rls-moe/jmmasw","last_synced_at":"2026-01-14T20:25:35.011Z","repository":{"id":215991381,"uuid":"87178363","full_name":"rls-moe/jmmasw","owner":"rls-moe","description":"Just make me a static website","archived":true,"fork":false,"pushed_at":"2017-04-05T16:34:44.000Z","size":65,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-21T18:05:31.902Z","etag":null,"topics":["generator","go","golang","static-site","static-site-generator","static-website","templates","templating"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rls-moe.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}},"created_at":"2017-04-04T11:24:51.000Z","updated_at":"2024-06-18T12:26:41.000Z","dependencies_parsed_at":"2024-01-07T21:20:34.835Z","dependency_job_id":null,"html_url":"https://github.com/rls-moe/jmmasw","commit_stats":null,"previous_names":["rls-moe/jmmasw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rls-moe/jmmasw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rls-moe%2Fjmmasw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rls-moe%2Fjmmasw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rls-moe%2Fjmmasw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rls-moe%2Fjmmasw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rls-moe","download_url":"https://codeload.github.com/rls-moe/jmmasw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rls-moe%2Fjmmasw/sbom","scorecard":{"id":778675,"data":{"date":"2025-08-11","repo":{"name":"github.com/rls-moe/jmmasw","commit":"deb8b54a96452656d77d9f366678de7fed8adc75"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 1/10 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Mozilla Public License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T04:20:00.867Z","repository_id":215991381,"created_at":"2025-08-23T04:20:00.867Z","updated_at":"2025-08-23T04:20:00.867Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["generator","go","golang","static-site","static-site-generator","static-website","templates","templating"],"created_at":"2026-01-14T20:25:34.246Z","updated_at":"2026-01-14T20:25:35.000Z","avatar_url":"https://github.com/rls-moe.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Just Make Me A Static Website\n\nJMMASW is a simple tool for a simple problem: Static Websites.\n\n## Operation\n\n1. Load all files with the extension \".html\" or \".tmpl\"\n2. Parse every file into a Go Template\n3. Load the data file (\"./data.json\" per default)\n4. Run all templates with a name that ends in \".html\"\n5. Write the output to files unless it's empty\n\n## Usage\n\nJMMASW accepts the following commandline parameters:\n\n* `data` - Location of the data file\n* `dir` - Project location, default is current directory\n* `static-out` - Output directory, default is `./jasw-out` (For \"Just a static Website Out\")\n* `ignore-no-data` - Defaults to true. If set to false then a missing data file results in termination of the program\n\n## Building\n\nJMMASW is built using Go1.8, so you should at minimum install Go1.8 for this to work but older\nversions might work too (but no promises)\n\nTo install simply run the following commands:\n\n```\ngo get go.rls.moe/jmmasw\ngo install go.rls.moe/jmmasw\n```\n\n## Templates\n\nFor Information on the Template format, refer to the godoc entries on `html/template`\nand `text/template`.\n\nTemplates are defined by their filename but if you manually defined templates this does not apply.\n\nOnly templates with a name that ends in \".html\" will be rendered, \".tmpl\" files will only be parsed\nand are intended for common functionality.\n\n### Template Functions\n\n* `file` accepts a single string as parameter and attempts to read the specified file form the file system\n* `json` parses a given string into json format, the top-level structure must be a map, simple arrays are not permitted\n* `markdown` renders a given string into HTML using Markdown Processors without any sanitization (don't use on user inputs!)\n* `dict` accepts any number of key-value pairs with a string-typed key and returns the result. This allows to combine several variables into a single pipeline\n\n## Roadmap\n\n* ~~Include Markdown Parser and Markdown File Loader~~\n* ~~Function to parse additional .json files from within the templates~~\n* Method to ignore specific directories\n* Function to output files that aren't present as templates\n    * Example: index.html generates index-en.html and index-de.html instead of index.html\n\n## Wait what?\n\nIf you're wondering why this tool exists: I made it so I can generate my website for\nmultiple languages without having to copy-paste half the website all the time.\n\nI considered Hugo, which is an excellent static page generator but it is also way too\ncomplicated for this application. JMMASW works with \"raw\" HTML templates and makes\nno assumption about your website.\n\nYou can take your website as it is now and provided it doesn't contain invalid\ngo-template code, it will come out the other end of JMMASW without a change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frls-moe%2Fjmmasw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frls-moe%2Fjmmasw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frls-moe%2Fjmmasw/lists"}