{"id":36858055,"url":"https://github.com/appliedgocode/goman","last_synced_at":"2026-01-12T14:46:56.393Z","repository":{"id":47723612,"uuid":"95254302","full_name":"appliedgocode/goman","owner":"appliedgocode","description":"The missing man page for Go binaries. Goman fetches the repo's readme as a man page replacement.","archived":false,"fork":false,"pushed_at":"2025-03-06T11:24:36.000Z","size":22693,"stargazers_count":125,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-06T12:27:35.977Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appliedgocode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.blackfriday.txt","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}},"created_at":"2017-06-23T20:31:24.000Z","updated_at":"2025-03-06T11:24:33.000Z","dependencies_parsed_at":"2025-03-06T12:34:03.575Z","dependency_job_id":null,"html_url":"https://github.com/appliedgocode/goman","commit_stats":null,"previous_names":["christophberger/goman"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/appliedgocode/goman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appliedgocode%2Fgoman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appliedgocode%2Fgoman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appliedgocode%2Fgoman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appliedgocode%2Fgoman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appliedgocode","download_url":"https://codeload.github.com/appliedgocode/goman/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appliedgocode%2Fgoman/sbom","scorecard":{"id":203875,"data":{"date":"2025-08-11","repo":{"name":"github.com/appliedgocode/goman","commit":"ed8e53ab810f36eabef5705d084f2e5fddc44143"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"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":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml: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":"Code-Review","score":0,"reason":"Found 0/12 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":"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":"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/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/appliedgocode/goman/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/appliedgocode/goman/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/appliedgocode/goman/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/appliedgocode/goman/codeql-analysis.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction 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":"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":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: checksums.txt.sig: https://github.com/appliedgocode/goman/releases/tag/v0.4.0-rc2","Info: signed release artifact: checksums.txt.sig: https://github.com/appliedgocode/goman/releases/tag/v0.4.0","Info: signed release artifact: checksums.txt.sig: https://github.com/appliedgocode/goman/releases/tag/v0.3.2","Info: signed release artifact: checksums.txt.sig: https://github.com/appliedgocode/goman/releases/tag/v0.3.1","Info: signed release artifact: checksums.txt.sig: https://github.com/appliedgocode/goman/releases/tag/v0.3.0","Warn: release artifact v0.4.0-rc2 does not have provenance: https://api.github.com/repos/appliedgocode/goman/releases/190780002","Warn: release artifact v0.4.0 does not have provenance: https://api.github.com/repos/appliedgocode/goman/releases/190780210","Warn: release artifact v0.3.2 does not have provenance: https://api.github.com/repos/appliedgocode/goman/releases/164465490","Warn: release artifact v0.3.1 does not have provenance: https://api.github.com/repos/appliedgocode/goman/releases/163035361","Warn: release artifact v0.3.0 does not have provenance: https://api.github.com/repos/appliedgocode/goman/releases/58697769"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 18 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"}},{"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"}}]},"last_synced_at":"2025-08-16T23:17:39.466Z","repository_id":47723612,"created_at":"2025-08-16T23:17:39.466Z","updated_at":"2025-08-16T23:17:39.466Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28340409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"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":[],"created_at":"2026-01-12T14:46:54.202Z","updated_at":"2026-01-12T14:46:56.386Z","avatar_url":"https://github.com/appliedgocode.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goman - the missing man page for Go binaries\n\n[![go-recipes](https://raw.githubusercontent.com/nikolaydubina/go-recipes/main/badge.svg?raw=true)](https://github.com/nikolaydubina/go-recipes)\n\n\u003e Note: Find the latest version here: [appliedgocode/goman](https://github.com/appliedgocode/goman). \n\n![goman logo](goman.png)\n\nAlmost all Go binaries come without any man page, even when properly installed through means like Homebrew.\n\n`goman` substitutes the missing man page by the README file from the Go binary's sources.\n\n`goman` first grabs the source path from the binary. Then it tries to locate the README file locally via the GOPATH. If this fails, it tries to fetch the README file from the binary's public repository. \n\nFor that last option, `goman` makes a couple of assumptions about the location, but at least with github and gitlab, those assumptions should be valid.\n\n- - -\n\n**Featured on [episode #51](https://changelog.com/gotime/51) of the Go Time podcast! \n(In the \"Free Software Friday\" section, at 1:02:35)**\n\n- - -\n\n## Demo\n\n![goman demo](goman.gif)\n\n\n## Usage\n\n    goman \u003cgo binary file\u003e\n\n    goman \u003cgo binary file\u003e | less -R\n\n(`-R` tells `less` to render ANSI color codes.)\n\n\n## Installation \n\n### Binaries\n\n#### Homebrew\n\n```sh\nbrew tap appliedgo/tools\nbrew install goman\n```\n\n#### Manual download\nOn the release pages, open the latest release and download the binary that matches your OS and architecture.\n\n### From the source\n\nYou need a Go toolchain installed.\n\n    go install github.com/appliedgocode/goman@latest\n\nThis downloads and installs `goman` to `$(go env GOPATH)/bin` (or `$(go env GOBIN)` if set). \n\n#### Arch Linux\n\nUsing an AUR helper application, such as `paru -S goman-git`.\n\n## Shell Integration\n\n`goman` can blend in with the standard `man` command. \n\nBash example (to be placed in `~/.bashrc`):\n\n```bash\nman() { \n    if ! /usr/bin/man $1; then \n        goman $1 | less -R; \n    fi; \n}\n```\n\nFish example:\n\n```fish\nfunction man\n    /usr/bin/man $argv; or goman $argv[1] | less -R\nend\n```\n\n\n## Credits and Licenses\n\nAll code that is written by myself is governed by a 3-clause BSD license, see [LICENSE.txt](https://github.com/christophberger/goman/blob/master/LICENSE.txt).\n\nThe `which` package is part of the [which command](https://github.com/bfontaine/which) that is licensed under the MIT license; see [LICENSE.which.txt](https://github.com/christophberger/goman/blob/master/LICENSE.which.txt).\n\nThe code that extracts the source code path from a go binary is a part of the [`gorebuild` tool](https://github.com/FiloSottile/gorebuild) that is published under the MIT license; See [LICENSE.dwarf.go.txt](https://github.com/christophberger/goman/blob/master/LICENSE.dwarf.go.txt).\n\nThe Markdown renderer is [a fork](https://github.com/ec1oud/blackfriday) of [blackfriday](https://github.com/russross/blackfriday) with extra code for rendering Markdown to plain text with ANSI color codes. See [LICENSE.blackfriday.txt](https://github.com/christophberger/goman/blob/master/LICENSE.blackfriday.txt) and the copyright notice in [ec1oud/blackfriday/ansi.go](https://github.com/christophberger/goman/blob/master/vendor/github.com/ec1oud/blackfriday/ansi.go).\n\n\n## Limitations\n\nIn its current state, `goman` is little more than a proof of concept. Bugs certainly do exist, as well as functional shortcomings due to oversimplified design, such as:\n\n* `goman` assumes that the README file contains either Markdown text or plain text. I know of at least one README.md that contains HTML. `goman` does not treat such cases in any special way.\n\n* If a binary originates from a command subdirectory of a project, chances are that this subdirectory contains no extra README file. `goman` then tries to find the README file in the parent directories.\n\n* Some binaries contain an absolute path to their source code, and `goman` assumes that the GOPATH used at compile time is the part from the root to the first directory named `/src/`. If the GOPATH itself contains a `/src/` directory (e.g., \"export GOPATH=/home/user/src/go\"), `goman` fails extracting the relative source code path.\n\n* `goman`'s output may wrap character-wise instead of word-wise.\n\n* Path redirection to canonical paths (like, e.g. from \"https://npf.io/gorram\" to https://github.com/natefinch/gorram) are not handled right now.\n\n\n## See also\n\n[mdcat](https://github.com/ec1oud/mdcat) - a `cat` tool for Markdown\n\n[mandown](https://github.com/driusan/mandown) - write *real* man pages in Markdown\n\n[mango](https://github.com/slyrz/mango) - generate man pages from your source code\n\n[gorebuild](https://github.com/FiloSottile/gorebuild) - rebuild Go binaries from source\n\n[binstale](https://github.com/shurcooL/binstale) - check if your go binaries are outdated\n\n[bin](https://github.com/rjeczalik/bin) and gobin - update all your Go binaries\n\n\n## Changelog\n\n### v0.2.3\n\nLarge update to implement a simpler and more reliable method of getting the readme path for binaries built with Module support.\n\nTODOs:\n- Support vanity module paths\n- Determine semver tag, in order to fetch the readme version that matches with the compiled version\n\n### v0.2.2 (2021-04-23)\n\n- Add goreleaser.yml\n- Various fixes\n### v0.2.1 (2017-07-04)\n\nFix stripping prefix from absolute path on Windows (PR #5)\n\n### v0.2.0 (2017-07-03)\n\nAdd support for the PE file format (Windows). (Implements issue #3)\n\n### v0.1.3 (2017-06-28)\n\nChange search strategy for README file to cover all possible cases. (Fixes issue #2)\n\n### v0.1.2 (2017-06-27)\n\nFix slice panic if URL path is shorter than \"github.com\" (issue #1)\n\n### v0.4.0 (2024-12-14)\n\nAdd man page (created from Markdown by `pandoc`, installed via Homebrew's `man1.install`)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappliedgocode%2Fgoman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappliedgocode%2Fgoman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappliedgocode%2Fgoman/lists"}