{"id":16320655,"url":"https://github.com/ento/elm-doc","last_synced_at":"2025-10-06T08:09:19.580Z","repository":{"id":15114234,"uuid":"77587038","full_name":"ento/elm-doc","owner":"ento","description":"Generate static documentation of your Elm project.","archived":false,"fork":false,"pushed_at":"2023-01-01T18:05:49.000Z","size":501,"stargazers_count":31,"open_issues_count":13,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-05T06:25:22.711Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ento.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}},"created_at":"2016-12-29T06:00:29.000Z","updated_at":"2024-12-25T04:38:14.000Z","dependencies_parsed_at":"2023-01-13T18:15:51.876Z","dependency_job_id":null,"html_url":"https://github.com/ento/elm-doc","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/ento/elm-doc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ento%2Felm-doc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ento%2Felm-doc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ento%2Felm-doc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ento%2Felm-doc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ento","download_url":"https://codeload.github.com/ento/elm-doc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ento%2Felm-doc/sbom","scorecard":{"id":378195,"data":{"date":"2025-08-11","repo":{"name":"github.com/ento/elm-doc","commit":"541d3b923ab4c4bbf5654a915eb4bdb925e3e95c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":0,"reason":"Found 0/4 approved changesets -- score normalized to 0","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":10,"reason":"no dangerous workflow patterns detected","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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ento/elm-doc/ci.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/ento/elm-doc/ci.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/ento/elm-doc/ci.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/ento/elm-doc/ci.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ento/elm-doc/ci.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: ci.sh:27","Warn: pipCommand not pinned by hash: ci.sh:28","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yaml:1","Info: no jobLevel write permissions found"],"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":"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":"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: BSD 3-Clause \"New\" or \"Revised\" License: 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":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: PYSEC-2020-92 / GHSA-hj5v-574p-mj7c","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2021-108 / GHSA-q2q7-5pp4-w6pg","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 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-18T14:45:17.896Z","repository_id":15114234,"created_at":"2025-08-18T14:45:17.896Z","updated_at":"2025-08-18T14:45:17.896Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278577929,"owners_count":26009703,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-10T22:45:02.026Z","updated_at":"2025-10-06T08:09:19.548Z","avatar_url":"https://github.com/ento.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# elm-doc\n\nGenerate static documentation of your Elm application project.\n\nRequires Python \u003e= 3.6, rsync \u003e= 2.6.7, and macOS or Linux. It may work on Windows but it's untested.\n\nSupported Elm versions:\n\n- elm-doc version \u003c 1.0: Elm 0.18\n- elm-doc version \u003e= 1.0.0: Elm 0.19\n\n## Usage\n\nSimplest invocation:\n\n    $ elm-doc . --output docs --fake-license 'SPDX license name'\n\nThe license name is required because elm-doc uses the official Elm binary to\nvalidate and generate docs; the official Elm binary only generates\ndocs for a package project, and a package project requires a license to be set.\nWhile the license name will not be part of the generated doc, it will be\nassociated with the project in the temporary elm.json file elm-doc generates\nduring the build / validation.\n\nDo no use elm-doc if you'd rather not risk the legal consequences of this fact.\n(IANAL: my understanding is OSS license doesn't take effect unless you distribute\nthe code it's attached to.)\n\nTo view the generated docs, you'll need an HTTP server that can detect mimetypes\nbased on file contents, rather than file extensions.\n\nI personally use [spark](https://github.com/rif/spark):\n\n    $ (cd doc \u0026\u0026 ~/go/bin/spark)\n\nYou can specify other attributes of the project with `--fake-user`, `--fake-project`,\nand `--fake-version`.\n\nelm-doc creates a build directory named `.elm-doc` at the root of the project.\nYou may want to ignore it in your SCM config, or you can change its path with `--build-dir`.\n\n`--validate` can check if you have all the necessary documentation in place:\n\n    $ elm-doc . \\\n        --elm-path ./node_modules/.bin/elm \\\n        --validate\n\n`elm-doc` assumes you're working on an app, not a package; it will try to generate\ndocumentation for all modules found in the application source directories.\n\nYou can `--exclude-modules` by using [fnmatch](https://docs.python.org/3/library/fnmatch.html)\npatterns:\n\n    $ elm-doc . --output docs --fake-license 'SPDX license name' \\\n        --exclude-modules '*.Private.*,Blacklist.*'\n\nor `--exclude-source-directories` entirely:\n\n    $ elm-doc . --output docs --fake-license 'SPDX license name' \\\n        --exclude-source-directories generated\n\nYou can also specify which files and directories to _include_ in the list of modules:\n\n    $ elm-doc . --output docs \\\n        src/Whitelist src/Main.elm\n\nNote that the `--exclude` flag takes no effect if you explicitly specify which\nfiles to include, unless you add the `--force-exclusion` flag:\n\n    $ elm-doc . --output docs --fake-license 'SPDX license name' \\\n        --exclude-modules '*.Private.*,Blacklist.*' \\\n        --force-exclusion \\\n        src/Whitelist src/Main.elm\n\nFor a full list of options, see:\n\n    $ elm-doc --help\n\n## Installation\n\nIn a Python (\u003e=3.6) [virtualenv](https://docs.python.org/3.6/library/venv.html#creating-virtual-environments) or globally:\n\n    $ pip install --upgrade pip setuptools\n    $ pip install elm-doc\n\n## How it works\n\nThis is the rough build process:\n\n- Generate a temporary elm.json file in the build directory\n  - Change the type to `package` and restructure / reformat to match the schema for a package project's elm.json\n  - Populate `--fake-*` fields, including the license: these are required for a package project but not included in an application project's elm.json\n  - Add dependencies that are listed as popular packages in the sidebar, making HTTP requests to look up the latest versions\n  - This means the actual build / validation process will have its own elm-stuff directory\n- Copy source files into the build directory's `src` directory using rsync\n  - An application project supports multiple source directories, while a package project supports only `src`\n- For each file that was copied, rewrite port delcarations to be normal functions\n  - This is needed because ports are not allowed in package projects\n- Run `elm make` with the `--doc` flag on\n- If validating docs, exit here\n- Generate the top page of the package, individual module pages, and other files required for the package website to function\n- For each dependency, copy docs.json from the per-user package cache. This is generally in `~/.elm`\n- For each dependency, also generate files required for the package website to function\n- Generate site-wide search index in a JSON format that the frontend expects\n- Generate help pages hosted by the package website\n- Extract frontend code that is prebuilt and distributed as part of the elm-doc Python package\n  - It is a [fork](https://github.com/ento/package.elm-lang.org/tree/elm-doc) of the elm/package.elm-lang.org repo that takes a flag that specifies which URL path the frontend app is mounted at\n- These are all implemented as [doit](https://github.com/pydoit/doit) tasks\n\n## Development\n\nRunning tests:\n\n    $ nix-shell\n    $ poetry install\n    $ poetry run tox -e py36,...\n\nUpdating the prebuilt frontend code and test fixture:\n\n    $ poetry run doit\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fento%2Felm-doc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fento%2Felm-doc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fento%2Felm-doc/lists"}