{"id":18402080,"url":"https://github.com/khrj/get-release-url","last_synced_at":"2025-12-11T21:07:45.289Z","repository":{"id":51169459,"uuid":"342331925","full_name":"khrj/get-release-url","owner":"khrj","description":"Deno package + CLI for fetching GitHub/BitBucket/Custom provider release + asset links with pattern matching","archived":false,"fork":false,"pushed_at":"2021-07-12T10:23:52.000Z","size":88,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-28T12:15:57.214Z","etag":null,"topics":["asset","cli","deno","fetch","github","module","pattern-matching","release","url"],"latest_commit_sha":null,"homepage":"https://deno.land/x/get_release_url","language":"TypeScript","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/khrj.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":"2021-02-25T17:55:01.000Z","updated_at":"2024-01-16T16:26:58.000Z","dependencies_parsed_at":"2022-09-01T22:12:02.527Z","dependency_job_id":null,"html_url":"https://github.com/khrj/get-release-url","commit_stats":null,"previous_names":["khushrajrathod/getreleaseurl"],"tags_count":1,"template":false,"template_full_name":"khrj/blueprint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khrj%2Fget-release-url","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khrj%2Fget-release-url/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khrj%2Fget-release-url/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khrj%2Fget-release-url/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khrj","download_url":"https://codeload.github.com/khrj/get-release-url/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223274980,"owners_count":17118094,"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":["asset","cli","deno","fetch","github","module","pattern-matching","release","url"],"created_at":"2024-11-06T02:41:04.751Z","updated_at":"2025-12-11T21:07:40.244Z","avatar_url":"https://github.com/khrj.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"assets/logo.svg\" width=\"400\" height=\"400\" alt=\"cloud download to man holding cup illustration\"\u003e\n    \u003ch1\u003eGet Release URL\u003c/h1\u003e\n    \u003cp\u003e\n        \u003cb\u003eGet the latest release URL from any hosting provider. Supports pattern matching\u003c/b\u003e\n    \u003c/p\u003e\n    \u003cp\u003e\n        \u003cimg alt=\"build status\" src=\"https://img.shields.io/github/workflow/status/khrj/get-release-url/Deno?label=checks\" \u003e\n        \u003cimg alt=\"language\" src=\"https://img.shields.io/github/languages/top/khrj/get-release-url\" \u003e\n        \u003cimg alt=\"code size\" src=\"https://img.shields.io/github/languages/code-size/khrj/get-release-url\"\u003e\n        \u003cimg alt=\"issues\" src=\"https://img.shields.io/github/issues/khrj/get-release-url\" \u003e\n        \u003cimg alt=\"license\" src=\"https://img.shields.io/github/license/khrj/get-release-url\"\u003e\n        \u003cimg alt=\"version\" src=\"https://img.shields.io/github/v/release/khrj/get-release-url\"\u003e\n    \u003c/p\u003e\n    \u003cp\u003e\n        \u003cb\u003e\u003ca href=\"https://deno.land/x/get_release_url\"\u003eView on deno.land\u003c/a\u003e\u003c/b\u003e\n    \u003c/p\u003e\n    \u003cbr\u003e\n    \u003cbr\u003e\n    \u003cbr\u003e\n\u003c/div\u003e\n\n## Table of Contents\n\n- [Usage](#usage)\n  - [Custom Provider Methods](#custom-provider-methods)\n  - [API](#api)\n- [CLI](#cli)\n  - [Quickstart](#quickstart)\n  - [Installation](#installation)\n  - [Running](#running)\n\n## Usage\n\n```ts\nimport getReleaseURL from \"https://deno.land/x/get_release_url@1.0.0/mod.ts\"\n\nconst urls = await getReleaseURL({\n    provider: \"github\",\n    user: \"phhusson\",\n    repo: \"treble_experimentations\",\n    part: \"arm64-ab-gapps\",\n})\n\nfor (const url of urls) {\n    console.log(url)\n}\n```\n\n### Custom provider methods\n\nDefault supported providers are [GitHub](https://github.com) and [BitBucket](https://bitbucket.org). You can add custom provider functions using `addProviderMethod` (PRs for more defaults are welcome!)\n\n```ts\nimport getReleaseURL, {\n    addProviderMethod,\n} from \"https://deno.land/x/get_release_url@1.0.0/mod.ts\"\n\nconst customGithubProvider = async (\n    { user, repo, part = \"\" }: { user: string; repo: string; part?: string },\n) =\u003e {\n    const response = await fetch(\n        `https://api.github.com/repos/${user}/${repo}/releases/latest`,\n    )\n    const json = await response.json()\n\n    if (json.message === \"Not Found\") throw new Error(\"Invalid repository\")\n    if (!(\"assets\" in json)) throw new Error(\"Rate limit exceeded\")\n\n    let browser_download_urls: string[] = json.assets.map((\n        asset: { browser_download_url: string },\n    ) =\u003e asset.browser_download_url)\n    return browser_download_urls.filter((url) =\u003e url.includes(part))\n}\n\naddProviderMethod(\"github\", customGithubProvider)\n\nawait getReleaseURL({\n    provider: \"github\",\n    user: \"phhusson\",\n    repo: \"treble_experimentations\",\n    part: \"arm64-ab-gapps\",\n}) // Uses custom method\n```\n\n### API\n\nSee [generated documentation](https://doc.deno.land/https/deno.land/x/get_release_url@1.0.0/mod.ts)\n\n## CLI\n\n### Quickstart\n\n```bash\ndeno run --allow-net https://deno.land/x/get_release_url@1.0.0/get-release-url.ts github phhusson treble_experimentations arm64-aonly\n```\n\n### Installation\n\n```bash\ndeno install --allow-net https://deno.land/x/get_release_url@1.0.0/get-release-url.ts\n```\n\n### Running\n\n```bash\nget-release github phhusson treble_experimentations arm64-aonly\n```\n\n### Usage\n\n```\nUsage: get-release (github|bitbucket) user repo [partofreleasefile]\n   Ex: get-release github phhusson treble_experimentations\n       get-release github phhusson treble_experimentations arm64-ab-gapps\n       get-release bitbucket JesusFreke smali\n       get-release bitbucket JesusFreke smali baksmali\n```\n\n## Supporters\n\n[![Stargazers repo roster for @khrj/get-release-url](https://reporoster.com/stars/khrj/get-release-url)](https://github.com/khrj/get-release-url/stargazers)\n\n[![Forkers repo roster for @khrj/get-release-url](https://reporoster.com/forks/khrj/get-release-url)](https://github.com/khrj/get-release-url/network/members)\n\n## Related\n\n- [Deno modules](https://github.com/khrj/deno-modules)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhrj%2Fget-release-url","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhrj%2Fget-release-url","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhrj%2Fget-release-url/lists"}