{"id":13338388,"url":"https://github.com/dhth/dstll","last_synced_at":"2025-06-30T08:06:53.835Z","repository":{"id":231880886,"uuid":"782588342","full_name":"dhth/dstll","owner":"dhth","description":"dstll gives you a high level overview of various constructs in your code","archived":false,"fork":false,"pushed_at":"2025-06-15T11:41:16.000Z","size":463,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-15T12:26:33.267Z","etag":null,"topics":["tree-sitter"],"latest_commit_sha":null,"homepage":"https://tools.dhruvs.space/dstll","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dhth.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,"zenodo":null}},"created_at":"2024-04-05T15:50:22.000Z","updated_at":"2025-06-15T11:41:19.000Z","dependencies_parsed_at":"2025-06-15T12:34:22.296Z","dependency_job_id":null,"html_url":"https://github.com/dhth/dstll","commit_stats":null,"previous_names":["dhth/layitout"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dhth/dstll","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Fdstll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Fdstll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Fdstll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Fdstll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhth","download_url":"https://codeload.github.com/dhth/dstll/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhth%2Fdstll/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262736598,"owners_count":23356146,"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":["tree-sitter"],"created_at":"2024-07-29T19:16:18.422Z","updated_at":"2025-06-30T08:06:53.824Z","avatar_url":"https://github.com/dhth.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003edstll\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/dhth/dstll/actions/workflows/main.yml\"\u003e\u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/actions/workflow/status/dhth/dstll/main.yml?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/dhth/dstll/actions/workflows/vulncheck.yml\"\u003e\u003cimg alt=\"Vulnerability Check\" src=\"https://img.shields.io/github/actions/workflow/status/dhth/dstll/vulncheck.yml?style=flat-square\u0026label=vulncheck\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/dhth/dstll/releases/latest\"\u003e\u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/release/dhth/dstll.svg?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/dhth/dstll/releases/latest\"\u003e\u003cimg alt=\"Commits since latest release\" src=\"https://img.shields.io/github/commits-since/dhth/dstll/latest?style=flat-square\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n`dstll` *(short for \"distill\")* gives you a high level overview of various\n\"constructs\" in your code.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://tools.dhruvs.space/images/dstll/dstll-1.png\" alt=\"Usage\" /\u003e\n\u003c/p\u003e\n\nMotivation\n---\n\nSometimes, you want to quickly understand how a project is organized. It could\nbe a new repo you're working on, or a specific part of a project you're\nunfamiliar with. When given a list of files you're curious about, `dstll` shows\nyou a list of signatures representing various \"code constructs\" found in those\nfiles, such as functions, methods, classes, traits, interfaces, objects, type\naliases, enums, etc.\n\n📜 Languages supported\n---\n\n- ![go](https://img.shields.io/badge/go-grey?logo=go)\n- ![python](https://img.shields.io/badge/python-grey?logo=python)\n- ![rust](https://img.shields.io/badge/rust-grey?logo=rust)\n- ![scala 2](https://img.shields.io/badge/scala-grey?logo=scala)\n- more to come\n\n💾 Installation\n---\n\n**go**:\n\n```sh\ngo install github.com/dhth/dstll@latest\n```\n\nOr get the binary directly from a\n[release](https://github.com/dhth/dstll/releases). Read more about verifying the\nauthenticity of released artifacts [here](#-verifying-release-artifacts).\n\n⚡️ Usage\n---\n\n```bash\n# print findings to stdout\ndstll [PATH ...]\n\n# write findings to a directory\ndstll write [PATH ...] -o /var/tmp/findings\n\n# serve findings via a web server\ndstll serve [PATH ...] -o /var/tmp/findings\n\n# open TUI\ndstll tui\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://tools.dhruvs.space/images/dstll/dstll-2.png\" alt=\"Usage\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://tools.dhruvs.space/images/dstll/dstll-3.png\" alt=\"Usage\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://tools.dhruvs.space/images/dstll/dstll-4.png\" alt=\"Usage\" /\u003e\n\u003c/p\u003e\n\n🛠️ Configuration\n---\n\nCreate a configuration file that looks like the following. By default,\n`dstll` will look for this file at `~/.config/dstll/dstll.yml`.\n\n```toml\nview-file-command = [\"your\", \"command\"]\n# for example, [\"bat\", \"--style\", \"plain\", \"--paging\", \"always\"]\n# will run 'bat --style plain --paging always \u003cfile-path\u003e'\n```\n\nΔ dstlled-diff\n---\n\n`dstll` can be used to generate specialized diffs that only compare changes in\nsignatures of \"code constructs\" between two git revisions. This functionality is\navailable as a Github Action via [dstlled-diff][2].\n\nExamples\n---\n\nRunning `dstll` in the [scala][1] repo gives the following output:\n\n```\n$ dstll $(git ls-files src/compiler/scala/tools/tasty | head -n 3)\n\n-\u003e src/compiler/scala/tools/tasty/ErasedTypeRef.scala\n\nobject ErasedTypeRef\n\nclass ErasedTypeRef(qualifiedName: TypeName, arrayDims: Int)\n\ndef apply(tname: TastyName): ErasedTypeRef\n\ndef name(qual: TastyName, tname: SimpleName, isModule: Boolean)\n\ndef specialised(qual: TastyName, terminal: String, isModule: Boolean, arrayDims: Int = 0): ErasedTypeRef\n\n................................................................................\n\n-\u003e src/compiler/scala/tools/tasty/Attributes.scala\n\nobject Attributes\n\nprivate class ConcreteAttributes(val isJava: Boolean) extends Attributes\n\n................................................................................\n\n-\u003e src/compiler/scala/tools/tasty/AttributeUnpickler.scala\n\nobject AttributeUnpickler\n\ndef attributes(reader: TastyReader): Attributes\n```\n\nMore examples can be found [here](./examples).\n\n[1]: https://github.com/scala/scala\n[2]: https://github.com/dhth/dstlled-diff-action\n\n🔐 Verifying release artifacts\n---\n\nIn case you get the `dstll` binary directly from a [release][2], you may want to\nverify its authenticity. Checksums are applied to all released artifacts. Steps\nto verify (replace `A.B.C` in the commands listed below with the version you\nwant):\n\n1. Download the checksum file and the compressed archive you want, and validate\n   its checksum:\n\n   ```shell\n   curl -sSLO https://github.com/dhth/dstll/releases/download/vA.B.C/dstll_A.B.C_checksums.txt\n   curl -sSLO https://github.com/dhth/dstll/releases/download/vA.B.C/dstll_A.B.C_linux_amd64.tar.gz\n   sha256sum --ignore-missing -c dstll_A.B.C_checksums.txt\n   ```\n\n2. If checksum validation goes through, uncompress the archive:\n\n   ```shell\n   tar -xzf dstll_A.B.C_linux_amd64.tar.gz\n   ./dstll -h\n   # profit!\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhth%2Fdstll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhth%2Fdstll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhth%2Fdstll/lists"}