{"id":13609935,"url":"https://github.com/toolmantim/tap-release","last_synced_at":"2025-04-09T14:06:25.271Z","repository":{"id":32713676,"uuid":"133815036","full_name":"toolmantim/tap-release","owner":"toolmantim","description":"Automatically update Homebrew taps when you publish new GitHub releases","archived":false,"fork":false,"pushed_at":"2025-03-27T19:31:29.000Z","size":1228,"stargazers_count":52,"open_issues_count":31,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T12:54:06.558Z","etag":null,"topics":["github-app","probot-app"],"latest_commit_sha":null,"homepage":"https://github.com/apps/tap-release","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toolmantim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2018-05-17T13:09:23.000Z","updated_at":"2024-04-05T19:37:02.000Z","dependencies_parsed_at":"2024-10-26T21:20:57.696Z","dependency_job_id":"c4044459-094a-4fe7-abf3-64b9b76bf169","html_url":"https://github.com/toolmantim/tap-release","commit_stats":{"total_commits":184,"total_committers":4,"mean_commits":46.0,"dds":"0.47282608695652173","last_synced_commit":"4258c16e3484dcacce0e76f26efc44f4cfcd4813"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolmantim%2Ftap-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolmantim%2Ftap-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolmantim%2Ftap-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolmantim%2Ftap-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toolmantim","download_url":"https://codeload.github.com/toolmantim/tap-release/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054227,"owners_count":21039952,"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":["github-app","probot-app"],"created_at":"2024-08-01T19:01:39.439Z","updated_at":"2025-04-09T14:06:25.253Z","avatar_url":"https://github.com/toolmantim.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","others"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"design/logo.svg\" alt=\"Tap Release Logo\" width=\"400\" /\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eAutomatically update \u003ca href=\"https://docs.brew.sh/Taps\"\u003eHomebrew taps\u003c/a\u003e when you publish new releases to GitHub. Built with \u003ca href=\"https://github.com/probot/probot\"\u003eProbot\u003c/a\u003e.\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/apps/tap-release\"\u003e\u003cimg src=\"design/install-button.svg\" alt=\"Install the GitHub App\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n---\n\n[![NPM package](https://img.shields.io/npm/v/tap-release-github-app.svg)](https://www.npmjs.com/package/tap-release-github-app)\n\n## Usage\n\nFirstly, you’ll need to install the [Tap Release GitHub App](https://github.com/apps/tap-release). This listens out for any releases, or any changes to the configuration.\n\nThen, add a `.github/tap-release.yml` configuration file to the GitHub repository where you publish new releases to.\n\nFor example, given the following `.github/tap-release.yml` file in a `my-org/app/app.rb` repository:\n\n```yml\nasset: app.zip\ntap: my-org/homebrew-app/app.rb\ntemplate: |\n  class App \u003c Formula\n    desc     \"$REPO_DESCRIPTION\"\n    homepage \"$REPO_WEBSITE\"\n    version  \"$STABLE_VERSION\"\n    url      \"$STABLE_ASSET_URL\"\n    sha256   \"$STABLE_ASSET_SHA256\"\n\n    def install\n      prefix.install \"app\"\n    end\n  end\n```\n\nWhen a new release is published to `my-org/app` (e.g. `v4.2.0`), containing a `app.zip` asset, Tap Release would push a commit to the tap formula in the `my-org/homebrew-app` repository updating it to:\n\n```rb\nclass App \u003c Formula\n  desc     \"The best app ever\"\n  homepage \"https://github.com/my-org/app\"\n  version  \"v2.4.0\"\n  url      \"https://github.com/my-org/app/releases/download/v4.2.0/app.zip\"\n  sha256   \"f3832d8966dd39f7ae1316195ebb379cf18aece281bc2f7c43dd799130ebf460\"\n\n  def install\n    prefix.install \"app\"\n  end\nend\n```\n\nIf you don't use release assets, you can also just use a URL pattern. For example, given the following template for a [Node style tap](https://docs.brew.sh/Node-for-Formula-Authors):\n\n```yml\nurl: \"https://registry.npmjs.org/app/-/app-$VERSION_NUMBER.tgz\"\ntap: my-org/homebrew-app/app.rb\ntemplate: |\n  class App \u003c Formula\n    desc     \"$REPO_DESCRIPTION\"\n    homepage \"$REPO_WEBSITE\"\n    version  \"$STABLE_VERSION\"\n    url      \"$STABLE_ASSET_URL\"\n    sha256   \"$STABLE_ASSET_SHA256\"\n\n    # ...\n  end\n```\n\nWhen a new release is published (e.g. `v4.2.0`), Tap Release would push a commit to the tap formula in the `my-org/homebrew-app` repository updating it to:\n\n```rb\nclass App \u003c Formula\n  desc     \"The best app ever\"\n  homepage \"https://github.com/my-org/app\"\n  version  \"v4.2.0\"\n  url      \"https://registry.npmjs.org/app/-/app-4.2.0.tgz\"\n  sha256   \"f3832d8966dd39f7ae1316195ebb379cf18aece281bc2f7c43dd799130ebf460\"\n\n  # ...\nend\n```\n\n## Template variables\n\nYou can use any of the following variables in your formula template, and they'll be substituted when the tap is regenerated:\n\n|Variable|Description|\n|-|-|\n|`$REPO_DESCRIPTION`|GitHub repository description.|\n|`$REPO_WEBSITE`|GitHub repository website, or URL if there isn't one.|\n|`$STABLE_VERSION`|Tag name of the latest stable release (e.g. `v1.0.2`).|\n|`$STABLE_VERSION_NUMBER`|Tag name of the latest stable release, without any preceding `v` (e.g. `1.0.2`).|\n|`$STABLE_ASSET_URL`|Download URL of the asset from the latest stable release.|\n|`$STABLE_ASSET_SHA256`|SHA256 of the asset from the latest stable release.|\n|`$DEVEL_VERSION`|Tag name of the latest pre-release (e.g. `v2.0.0-beta.1`).|\n|`$DEVEL_VERSION_NUMBER`|Tag name of the latest pre-release, without any preceding `v` (e.g. `2.0.0-beta.1`).|\n|`$DEVEL_ASSET_URL`|Download URL of the asset from the latest pre-release.|\n|`$DEVEL_ASSET_SHA256`|SHA256 of the asset from the latest pre-release.|\n\n## Asset \u0026 URL variables\n\nYou can use any of the following variables in the `asset` and `url` options, and they'll be substituted for each stable and development release when searching for assets or generating URLs:\n\n|Variable|Description|\n|-|-|\n|`$VERSION`|The version (e.g. `v1.0.2`).|\n|`$VERSION_NUMBER`|The version without the preceding `v` (e.g. `1.0.2`).|\n\n## Configuration options\n\nYou can configure Tap Release using the following key in your `.github/tap-release.yml` file:\n\n|Key|Required|Description|\n|-|-|-|\n|`tap`|Required|The path to the Homebrew tap repository that should be updated.|\n|`template`|Required|The template string to use to generate the tap. Use [variables](#variables) to insert the values from the releases.|\n|`asset`|Optional|Filename of the asset to use from the release.|\n|`url`|Optional|URL pattern to generate the download URLs. Use [URL variables](#url-variables) to insert the values from the release.|\n|`branches`|Optional|A list of branches that trigger the tap to be updated when the `.github/tap-release.yml` file is modified. Useful if you want to test the app on a pull request branch. Default is `\"master\"`.|\n\nTap Release also supports [Probot Config](https://github.com/probot/probot-config), if you want to store your configuration files in a central repository.\n\n## Developing\n\nIf you have Node v8+ installed locally, you can run the tests, and a local app, using the following commands:\n\n```sh\n# Install dependencies\nyarn\n\n# Run the tests\nnpm test\n\n# Run the app locally\nnpm start\n```\n\nIf you don't have Node installed, you can use [Docker Compose](https://docs.docker.com/compose/):\n\n```sh\n# Run the tests\ndocker-compose run --rm app npm test\n```\n\n## Contributing\n\nThird-pary contributions are welcome! 🙏🏼 See [CONTRIBUTING.md](CONTRIBUTING.md) for step-by-step instructions.\n\nIf you need help or have a question, let me know via a GitHub issue.\n\n## Deployment\n\nIf you want to deploy your own copy of Tap Release, follow the [Probot Deployment Guide](https://probot.github.io/docs/deployment/).\n\n## Releasing\n\nRun the following command:\n\n```bash\ngit checkout master \u0026\u0026 git pull \u0026\u0026 npm version [major | minor | patch]\n```\n\nThe command does the following:\n\n* Ensures you’re on master and don't have local, un-commited changes\n* Bumps the version number in [package.json](package.json) based on major, minor or patch\n* Runs the `postversion` npm script in [package.json](package.json), which:\n  * Pushes the tag to GitHub\n  * Publishes the npm release\n  * Opens the GitHub releases page so you can publish the release notes\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoolmantim%2Ftap-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoolmantim%2Ftap-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoolmantim%2Ftap-release/lists"}