{"id":48754123,"url":"https://github.com/typisttech/wpry","last_synced_at":"2026-04-17T23:09:27.946Z","repository":{"id":350777644,"uuid":"1193320245","full_name":"typisttech/wpry","owner":"typisttech","description":"Parse WordPress plugin and theme headers.","archived":false,"fork":false,"pushed_at":"2026-04-12T03:34:34.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-12T04:05:56.309Z","etag":null,"topics":["cli","wordpress"],"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/typisttech.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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["tangrufus"],"custom":["https://typist.tech/donation/"]}},"created_at":"2026-03-27T05:10:42.000Z","updated_at":"2026-04-12T03:32:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/typisttech/wpry","commit_stats":null,"previous_names":["typisttech/wpry"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/typisttech/wpry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typisttech%2Fwpry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typisttech%2Fwpry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typisttech%2Fwpry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typisttech%2Fwpry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typisttech","download_url":"https://codeload.github.com/typisttech/wpry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typisttech%2Fwpry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31949453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"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":["cli","wordpress"],"created_at":"2026-04-12T23:56:50.924Z","updated_at":"2026-04-17T23:09:27.941Z","avatar_url":"https://github.com/typisttech.png","language":"Go","funding_links":["https://github.com/sponsors/tangrufus","https://typist.tech/donation/"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# WPry\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/typisttech/wpry.svg)](https://pkg.go.dev/github.com/typisttech/wpry)\n[![GitHub Release](https://img.shields.io/github/v/release/typisttech/wpry?style=flat-square\u0026)](https://github.com/typisttech/wpry/releases/latest)\n[![Test](https://github.com/typisttech/wpry/actions/workflows/test.yml/badge.svg)](https://github.com/typisttech/wpry/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/typisttech/wpry/graph/badge.svg?token=HD0PRS6E1A)](https://codecov.io/gh/typisttech/wpry)\n[![License](https://img.shields.io/github/license/typisttech/wpry.svg)](https://github.com/typisttech/wpry/blob/master/LICENSE)\n[![Follow @TangRufus on X](https://img.shields.io/badge/Follow-TangRufus-15202B?logo=x\u0026logoColor=white)](https://x.com/tangrufus)\n[![Follow @TangRufus.com on Bluesky](https://img.shields.io/badge/Bluesky-TangRufus.com-blue?logo=bluesky)](https://bsky.app/profile/tangrufus.com)\n[![Sponsor @TangRufus via GitHub](https://img.shields.io/badge/Sponsor-TangRufus-EA4AAA?logo=githubsponsors)](https://github.com/sponsors/tangrufus)\n[![Hire Typist Tech](https://img.shields.io/badge/Hire-Typist%20Tech-778899)](https://typist.tech/contact/)\n\n\u003cp\u003e\n  \u003cstrong\u003eWPry parses WordPress plugin and theme headers.\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  Built with ♥ by \u003ca href=\"https://typist.tech/\"\u003eTypist Tech\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n---\n\n\u003e [!TIP]\n\u003e **Hire Tang Rufus!**\n\u003e\n\u003e I am looking for my next role, freelance or full-time.\n\u003e If you find this tool useful, I can build you more weird stuff like this.\n\u003e Let's talk if you are hiring PHP / Ruby / Go developers.\n\u003e\n\u003e Contact me at https://typist.tech/contact/\n\n---\n\n## Features\n\n- Parse WordPress plugin headers from PHP files\n- Parse WordPress theme headers from `style.css`\n- Parse unzipped plugin and theme directories\n- Parse plugin and theme zip archives containing (CLI only)\n- Normalize CR and CRLF line endings\n- Apply best-effort encoding fallback before header parsing\n  Heuristics (in order):\n    1. If input is already valid UTF-8, return it (strip UTF-8 BOM if present)\n    2. Check for UTF-32 BOMs (BE/LE) and decode when present\n    3. Check for UTF-16 BOMs (BE/LE) and decode when present\n    4. Try Windows-1252\n    5. Try ISO-8859-1\n\n## Library Usage\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/typisttech/wpry.svg)](https://pkg.go.dev/github.com/typisttech/wpry)\n\nRefer to [Go Reference on pkg.go.dev](https://pkg.go.dev/github.com/typisttech/wpry#section-documentation)\n\n## CLI Usage\n\n```bash\nUSAGE:\n  wpry [\u003cflags\u003e...] \u003cpath\u003e\n\nFLAGS:\n  -parallel n\n    \trun n workers simultaneously.\n    \tIf n is 0 or less, GOMAXPROCS is used. Setting -parallel to values higher\n    \t than GOMAXPROCS may cause degraded performance due to CPU contention.\n    \t(default GOMAXPROCS)\n  -timeout d\n    \tIf the parser runs longer than duration d, abort. (default 1m0s)\n  -v\tPrint version\n  -version\n    \tPrint version\n\nEXAMPLES:\n  # Parse a plugin main file\n  $ wpry /path/to/index.php\n\n  # Parse a theme main stylesheet\n  $ wpry /path/to/style.css\n\n  # Parse an unzipped plugin\n  $ wpry /path/to/wp-content/plugins/woocommerce\n\n  # Parse an unzipped theme\n  $ wpry /path/to/wp-content/themes/twentytwentynine\n\n  # Parse a plugin zip\n  $ wpry /path/to/woocommerce.zip\n\n  # Parse a theme zip\n  $ wpry /path/to/twentytwentynine.zip\n```\n\n\u003e [!TIP]\n\u003e **Hire Tang Rufus!**\n\u003e\n\u003e There is no need to understand any of these quirks.\n\u003e Let me handle them for you.\n\u003e I am seeking my next job, freelance or full-time.\n\u003e\n\u003e If you are hiring PHP / Ruby / Go developers,\n\u003e contact me at https://typist.tech/contact/\n\n### Examples\n\nParse a plugin file:\n\n```bash\nwpry /path/to/index.php\n```\n\n```json\n{\n  \"file\": \"index.php\",\n  \"plugin\": {\n    \"name\": \"Full Plugin\",\n    \"uri\": \"https://example.com/full-plugin\",\n    \"description\": \"A fully specified plugin.\",\n    \"version\": \"2.0.0\",\n    \"requires_wp\": \"6.0\",\n    \"requires_php\": \"8.0\",\n    \"author\": \"Full Author\",\n    \"author_uri\": \"https://example.com/author\",\n    \"license\": \"GPL-2.0-or-later\",\n    \"license_uri\": \"https://www.gnu.org/licenses/gpl-2.0.html\",\n    \"update_uri\": \"https://example.com/update\",\n    \"text_domain\": \"full-plugin\",\n    \"domain_path\": \"/lang\",\n    \"requires_plugins\": \"woocommerce, akismet\",\n    \"network\": \"true\"\n  }\n}\n```\n\nParse a theme main stylesheet:\n\n```bash\nwpry /path/to/style.css\n```\n\n```json\n{\n  \"file\": \"style.css\",\n  \"theme\": {\n    \"name\": \"Full Theme\",\n    \"uri\": \"https://example.com/full-theme\",\n    \"author\": \"Full Author\",\n    \"author_uri\": \"https://example.com/author\",\n    \"description\": \"A fully specified theme.\",\n    \"version\": \"3.0.0\",\n    \"requires_wp\": \"6.0\",\n    \"tested_up_to\": \"6.5\",\n    \"requires_php\": \"8.0\",\n    \"license\": \"GPL-2.0-or-later\",\n    \"license_uri\": \"https://www.gnu.org/licenses/gpl-2.0.html\",\n    \"text_domain\": \"full-theme\",\n    \"domain_path\": \"/lang\",\n    \"tags\": \"custom-background, custom-logo\",\n    \"template\": \"twentytwentyfive\"\n  }\n}\n```\n\nParse a directory:\n\n```bash\nwpry /path/to/wp-content/plugins/woocommerce\nwpry /path/to/wp-content/themes/twentytwentynine\n```\n\nParse a zip archive:\n\n```bash\nwpry /path/to/woocommerce.zip\nwpry /path/to/twentytwentynine.zip\n```\n\nError result:\n\n```json\n{\n  \"error\": \"no header found\"\n}\n```\n\n### CLI Installation\n\n#### Homebrew (macOS / Linux) (Recommended)\n\n```bash\nbrew install typisttech/tap/wpry\n```\n\n#### Build from Source\n\n```bash\ngo install github.com/typisttech/wpry/cmd/wpry@latest\n```\n\n#### Linux (Debian \u0026 Alpine)\n\nFollow the instructions on https://broadcasts.cloudsmith.com/typisttech/oss\n\n![Cloudsmith](https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith\u0026style=flat-square\u0026link=https%3A%2F%2Fcloudsmith.com)\n\nPackage repository hosting is graciously provided by [Cloudsmith](https://cloudsmith.com).\nCloudsmith is the only fully hosted, cloud-native, universal package management solution, that\nenables your organization to create, store and share packages in any format, to any place, with total\nconfidence.\n\n## Credits\n\n[WPry](https://github.com/typisttech/wpry) is a [Typist Tech](https://typist.tech) project and maintained by [Tang Rufus](https://x.com/TangRufus), freelance developer for [hire](https://typist.tech/contact/).\n\nFull list of contributors can be found [here](https://github.com/typisttech/wpry/graphs/contributors).\n\n## Copyright and License\n\nThis project is a [free software](https://www.gnu.org/philosophy/free-sw.en.html) distributed under the terms of the MIT license. For the full license, see [LICENSE](./LICENSE).\n\n## Contribute\n\nFeedbacks / bug reports / pull requests are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypisttech%2Fwpry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypisttech%2Fwpry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypisttech%2Fwpry/lists"}