{"adoption": {"forks": 167, "observed_at": "2026-08-28T04:08:46.355780+00:00", "stars": 4353}, "canonical_url": "https://ross.abutalabs.com/products/batsh", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A language that compiles to Bash and Windows Batch", "domain": ["programming-languages", "compilers", "developer-tools", "cross-platform"], "enriched": true, "function": ["compiler", "programming-language", "cli"], "health_score": 20, "homepage": "http://batsh.org", "language": "OCaml", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["batsh-dev-team/Batsh"], "name": "batsh-dev-team/Batsh", "platform": ["windows", "cross-platform", "cli"], "pushed_at": "2023-04-30T02:01:02+00:00", "repo": "batsh-dev-team/Batsh", "stars": 4353, "tags": ["transpiler", "bash", "batch", "shell-scripting", "ocaml", "write-once-run-anywhere", "automation", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["write cross-platform shell scripts that run on linux and windows", "compile a script to bash and batch from one source", "replace duplicated bash and batch glue code in a tool", "avoid learning bash and windows batch syntax", "generate platform-specific scripts from a single language"], "what_it_is": "Batsh is a C-based programming language that compiles to both Bash and Windows Batch scripts, letting you write shell scripts once that run on all platforms with no runtime dependencies. It is implemented in OCaml and distributed as a command-line compiler via OPAM.", "when_to_avoid": ["you only target a single operating system", "you need a language with a large ecosystem or active community", "you need advanced shell features beyond what batsh supports"], "when_to_choose": ["you maintain a cross-platform tool needing both bash and batch glue scripts", "you want one script source targeting unix and windows shells", "you want zero runtime dependencies in the generated scripts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/batsh", "repo": "batsh-dev-team/Batsh", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:46.355780+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:21:30.797540+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0c1c70311d6c3390ea87f4e6bca7fe487b7646c98acd876fe5f8a697a4c7953d", "fetched_at": "2026-08-28T04:08:46.355780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/batsh-dev-team/Batsh"}, {"content_hash": "40065856b8486ac8f153c7630525d097d2e4ce7c9a8630ce04fdfd3d535db303", "fetched_at": "2026-08-29T09:10:09.669049+00:00", "kind": "homepage", "missing": false, "url": "http://batsh.org"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4748, "days_push": 1222, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}