{"id":16694765,"url":"https://github.com/spenserblack/gengo","last_synced_at":"2026-01-24T18:12:10.673Z","repository":{"id":187276574,"uuid":"591999963","full_name":"spenserblack/gengo","owner":"spenserblack","description":"A linguist-inspired language classifier with multiple file source handlers","archived":false,"fork":false,"pushed_at":"2026-01-14T20:57:58.000Z","size":1191,"stargazers_count":32,"open_issues_count":23,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-15T00:55:58.283Z","etag":null,"topics":["language-statistics","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/spenserblack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-22T16:11:26.000Z","updated_at":"2026-01-12T17:05:55.000Z","dependencies_parsed_at":"2023-09-27T01:25:22.123Z","dependency_job_id":"e9c21fb8-52a1-45c9-979f-31a44fca1ffa","html_url":"https://github.com/spenserblack/gengo","commit_stats":null,"previous_names":["spenserblack/gengo"],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/spenserblack/gengo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spenserblack%2Fgengo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spenserblack%2Fgengo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spenserblack%2Fgengo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spenserblack%2Fgengo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spenserblack","download_url":"https://codeload.github.com/spenserblack/gengo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spenserblack%2Fgengo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28733633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T17:51:25.893Z","status":"ssl_error","status_checked_at":"2026-01-24T17:50:48.377Z","response_time":89,"last_error":"SSL_read: 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":["language-statistics","rust"],"created_at":"2024-10-12T16:48:12.167Z","updated_at":"2026-01-24T18:12:10.650Z","avatar_url":"https://github.com/spenserblack.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gengo (言語)\n\n[![library](https://img.shields.io/crates/v/gengo.svg?label=gengo)](https://crates.io/crates/gengo)\n[![binary](https://img.shields.io/crates/v/gengo-bin.svg?label=gengo-bin)](https://crates.io/crates/gengo-bin)\n[![CI](https://github.com/spenserblack/gengo/actions/workflows/ci.yml/badge.svg)](https://github.com/spenserblack/gengo/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/spenserblack/gengo/branch/main/graph/badge.svg?token=ihIEUQWwSt)](https://codecov.io/gh/spenserblack/gengo)\n\nA [linguist][linguist]-inspired language classifier with multiple file source handlers.\n\nIts output is similar to [linguist][linguist], but by default the language stats are colorized.\n\n## Comparison\n\n|          Feature/Behavior           | [linguist][linguist] |   gengo    |\n| :---------------------------------: | :------------------: | :--------: |\n|      **Analyze Git Revision**       |         Yes          |    Yes     |\n|        **Analyze Directory**        |          No          |    Yes     |\n|     **Requires Git Repository**     |         Yes          |     No     |\n|  **Detect Language by Extension**   |         Yes          |    Yes     |\n|   **Detect Language by Filename**   |         Yes          |    Yes     |\n|   **Detect by Filepath Pattern**    |          No          |    Yes     |\n| **Detect Language with Heuristics** |         Yes          |    Yes     |\n| **Detect Language with Classifier** |         Yes          | Not Yet ;) |\n\n## Installation\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/rust%3Agengo.svg)](https://repology.org/project/rust%3Agengo/versions)\n\nView [the installation documentation][install-docs].\n\n## Usage\n\nThis tool has multiple file sources. Each file source can have unique usage to take advantage of its\nstrengths and work around its weaknesses.\n\n### Directory File Source\n\nThis is a very generic file source that tries not to make many assumptions about your environment\nand workspace.\n\n#### Ignoring Files\n\nYou can utilize a `.gitignore` file and/or an `.ignore` file to prevent files from\nbeing scanned. See the [`ignore`][ignore-crate] for more details.\n\n### Git File Source\n\nThe git file source is highly opinionated -- it tries to act like a git utility, and uses git tools.\nIts goal is to behave similarly to [linguist]. This means that this file source does *not* need any\nactual files present, and can work on a bare repository, making it suitable for usage with a Git\nserver.\n\n#### Overrides\n\nLike [linguist][linguist], you can override behavior using a `.gitattributes` file.\nBasically, just replace `linguist-FOO` with `gengo-FOO`. _Unlike_ linguist,\n`gengo-detectable` will _always_ make a file be included in statistics (linguist\nwill still exclude them if they're generated or vendored).\n\n```gitattributes\n# .gitattributes\n\n# boolean attributes:\n\n# These can be *negated* by prefixing with `-` (`-gengo-documentation`).\n# Mark a file as documentation\n*.html gengo-documentation\n# Mark a file as generated\nmy-built-files/* gengo-generated\n# Mark a file as vendored\ndeps/* gengo-vendored\n\n# string attributes:\n# Override the detected language for a file\n# Use the Language enum's variant name (see docs.rs for more details)\ntemplates/*.js gengo-language=PlainText\n```\n\nYou will need to commit your `.gitattributes` file for it to take effect.\n\n[ignore-crate]: https://docs.rs/ignore\n[install-docs]: ./docs/INSTALLATION.md\n[linguist]: https://github.com/github-linguist/linguist\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspenserblack%2Fgengo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspenserblack%2Fgengo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspenserblack%2Fgengo/lists"}