{"id":16218075,"url":"https://github.com/quasilyte/go-unexport","last_synced_at":"2025-10-05T22:57:54.794Z","repository":{"id":57644515,"uuid":"163606118","full_name":"quasilyte/go-unexport","owner":"quasilyte","description":"Unexport symbols from a package under a workspace automatically.","archived":false,"fork":false,"pushed_at":"2019-08-08T16:12:20.000Z","size":8,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-07T23:19:17.967Z","etag":null,"topics":["dev-tools","go","golang","source-code-analysis","tool"],"latest_commit_sha":null,"homepage":"","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/quasilyte.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":"2018-12-30T17:43:53.000Z","updated_at":"2019-10-21T03:09:31.000Z","dependencies_parsed_at":"2022-08-30T08:02:18.621Z","dependency_job_id":null,"html_url":"https://github.com/quasilyte/go-unexport","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/quasilyte/go-unexport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quasilyte%2Fgo-unexport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quasilyte%2Fgo-unexport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quasilyte%2Fgo-unexport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quasilyte%2Fgo-unexport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quasilyte","download_url":"https://codeload.github.com/quasilyte/go-unexport/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quasilyte%2Fgo-unexport/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278532354,"owners_count":26002346,"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-05T02:00:06.059Z","response_time":54,"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":["dev-tools","go","golang","source-code-analysis","tool"],"created_at":"2024-10-10T11:48:25.836Z","updated_at":"2025-10-05T22:57:54.758Z","avatar_url":"https://github.com/quasilyte.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-unexport\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/quasilyte/go-unexport)](https://goreportcard.com/report/github.com/quasilyte/go-unexport)\n\n# Overview\n\nTries to unexport as much symbols as possible for a given package under a current workspace.\n\nIt's mostly intended for `internal/` packages where it's simpler to change API and all your\nclients are most likely reside in the same repository. In other words, it's useful for big\nmonoliths or command-line apps with a lot of code (which can include legacy).\n\nThis tool automatically does unexporting, the only thing you should do is to review the diff\nand commit it, if it makes sense. If you would like to keep some symbols exported even though\nthey are only used inside the package itself, one can specify `skip` flag.\n\n# Installation and usage (quick start)\n\nThis install `go-unexport` binary under your `$GOPATH/bin`:\n\n```bash\ngo get github.com/quasilyte/go-unexport\n```\n\nIf `$GOPATH/bin` is under your system `$PATH`, `go-unexport` command should be available after that.\u003cbr\u003e\nThis should print the help message:\n\n```bash\ngo-unexport --help\n```\n\nTo run unexporting process, do:\n\n```bash\ngo-unexport -v package/import/path\n```\n\nFlag `-v` turns on verbose mode.\n\n# Implementation notice\n\nThis tool does zero analysis on its own. I've used `go-rename` to do all the heavy lifting.\n\n**Pros:**\n* If you trust `go-rename`, you can trust `go-unexport`. It's unlikely that it will break your program.\n* Maintainance cost is almost close to zero.\n\n**Cons:**\n* The execution time is slow.\n\n# Motivation\n\nKeep the number of exported symbols low. \n\nIt's hard to maintain minimal exported symbol set for a big projects, so this tool can help a little bit in that regard.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquasilyte%2Fgo-unexport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquasilyte%2Fgo-unexport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquasilyte%2Fgo-unexport/lists"}