{"id":16259707,"url":"https://github.com/package-url/packageurl-go","last_synced_at":"2026-03-07T09:12:26.296Z","repository":{"id":27165958,"uuid":"110981081","full_name":"package-url/packageurl-go","owner":"package-url","description":"Go implementation of the package url spec","archived":false,"fork":false,"pushed_at":"2025-03-02T01:45:29.000Z","size":103,"stargazers_count":61,"open_issues_count":10,"forks_count":51,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-12T19:00:06.686Z","etag":null,"topics":["go","go-library","golang","golang-library","library","package-url","purl"],"latest_commit_sha":null,"homepage":null,"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/package-url.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}},"created_at":"2017-11-16T14:26:14.000Z","updated_at":"2025-04-09T10:23:57.000Z","dependencies_parsed_at":"2023-10-02T02:44:35.646Z","dependency_job_id":"c55835ce-f941-4dc2-a54a-7179a36762e2","html_url":"https://github.com/package-url/packageurl-go","commit_stats":{"total_commits":57,"total_committers":18,"mean_commits":"3.1666666666666665","dds":0.7543859649122807,"last_synced_commit":"7cb81af9593b9512bb946c55c85609948c48aab9"},"previous_names":["package-url/purl-go"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/package-url%2Fpackageurl-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/package-url%2Fpackageurl-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/package-url%2Fpackageurl-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/package-url%2Fpackageurl-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/package-url","download_url":"https://codeload.github.com/package-url/packageurl-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249197,"owners_count":22039029,"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","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":["go","go-library","golang","golang-library","library","package-url","purl"],"created_at":"2024-10-10T16:04:24.911Z","updated_at":"2026-03-07T09:12:21.256Z","avatar_url":"https://github.com/package-url.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# packageurl-go\n\n[![build](https://github.com/package-url/packageurl-go/workflows/test/badge.svg)](https://github.com/package-url/packageurl-go/actions?query=workflow%3Atest) [![Coverage Status](https://coveralls.io/repos/github/package-url/packageurl-go/badge.svg)](https://coveralls.io/github/package-url/packageurl-go) [![PkgGoDev](https://pkg.go.dev/badge/github.com/package-url/packageurl-go)](https://pkg.go.dev/github.com/package-url/packageurl-go) [![Go Report Card](https://goreportcard.com/badge/github.com/package-url/packageurl-go)](https://goreportcard.com/report/github.com/package-url/packageurl-go)\n\nGo implementation of the package url spec.\n\n\n## Install\n```\ngo get -u github.com/package-url/packageurl-go\n```\n\n## Versioning\n\nThe versions will follow the spec. So if the spec is released at ``1.0``. Then all versions in the ``1.x.y`` will follow the ``1.x`` spec.\n\n\n## Usage\n\n### Create from parts\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/package-url/packageurl-go\"\n)\n\nfunc main() {\n\tinstance := packageurl.NewPackageURL(\"test\", \"ok\", \"name\", \"version\", nil, \"\")\n\tfmt.Printf(\"%s\", instance.ToString())\n}\n```\n\n### Parse from string\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/package-url/packageurl-go\"\n)\n\nfunc main() {\n\tinstance, err := packageurl.FromString(\"test:ok/name@version\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"%#v\", instance)\n}\n\n```\n\n\n## Test\nTesting using the normal ``go test`` command. Using ``make test`` will pull the test fixtures shared between all package-url projects and then execute the tests.\n\n```\ncurl -Ls https://raw.githubusercontent.com/package-url/purl-spec/master/test-suite-data.json -o testdata/test-suite-data.json\ngo test -v -cover ./...\n=== RUN   TestFromStringExamples\n--- PASS: TestFromStringExamples (0.00s)\n=== RUN   TestToStringExamples\n--- PASS: TestToStringExamples (0.00s)\n=== RUN   TestStringer\n--- PASS: TestStringer (0.00s)\n=== RUN   TestQualifiersMapConversion\n--- PASS: TestQualifiersMapConversion (0.00s)\nPASS\n        github.com/package-url/packageurl-go    coverage: 90.7% of statements\nok      github.com/package-url/packageurl-go    0.004s  coverage: 90.7% of statements\n```\n\n## Fuzzing\n\nFuzzing is done with standard [Go fuzzing](https://go.dev/doc/fuzz/), introduced in Go 1.18.\n\nFuzz tests check for inputs that cause `FromString` to panic.\n\nUsing `make fuzz` will run fuzz tests for one minute.\n\nTo run fuzz tests longer:\n\n```\ngo test -fuzztime=60m -fuzz .\n```\n\nOr omit `-fuzztime` entirely to run indefinitely.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpackage-url%2Fpackageurl-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpackage-url%2Fpackageurl-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpackage-url%2Fpackageurl-go/lists"}