diff --git a/share/doc/homebrew/How-to-Create-and-Maintain-a-Tap.md b/share/doc/homebrew/How-to-Create-and-Maintain-a-Tap.md new file mode 100644 index 0000000000..1cae716f29 --- /dev/null +++ b/share/doc/homebrew/How-to-Create-and-Maintain-a-Tap.md @@ -0,0 +1,56 @@ +# How to Create and Maintain a Tap +Taps are external sources of Homebrew formulae and/or external commands. They +can be created by anyone to provide their own formulae and/or external commands +to any Homebrew user. + +## Creating a tap +A tap is usually a git repository available online, but you can use anything as +long as it’s a protocol that git understands, or even just a directory with +files in it. +If hosted on GitHub, we recommend that the repository’s name start with +`homebrew-`. + +Tap formulae follow the same format as the core’s ones, and can be added at the +repository’s root, or under `Formula` or `HomebrewFormula` subdirectories. We +recommend the latter options because it makes the repository organisation +easier to grasp, and top-level files are not mixed with formulae. + +See [homebrew-tex](https://github.com/Homebrew/homebrew-tex) for an example of +a tap with a `Formula` subdirectory. + +### Installing +If it’s on GitHub, users can install any of your formulae with +`brew install user/repo/formula`. Homebrew will automatically add your +`github.com/user/homebrew-repo` tap before installing the formula. +`user/repo/formula` points to the `github.com/user/homebrew-repo/**/formula.rb` +file here. + +If they want to get your tap without installing any formula at the same time, +users can add it with the [`brew tap` command](brew-tap.md). + +If it’s on GitHub, they can use `brew tap user/repo`, where `user` is your +GitHub username and `homebrew-repo` your repository. + +If it’s hosted outside of GitHub, they have to use `brew tap user/repo `, +where `user` and `repo` will be used to refer to your tap and `` is your +Git clone URL. + +Users can then install your formulae either with `brew install foo` if there’s +no core formula with the same name, or with `brew install user/repo/foo` to +avoid conflicts. + +## Maintaining a tap +A tap is just a git repository so you don’t have to do anything specific when +making modifications apart from committing and pushing your changes. + +### Updating +Once your tap installed, Homebrew will update it each time an user runs +`brew update`. Outdated formulae will be upgraded when an user runs +`brew upgrade`, like core formulae. + +## External commands +You can provide your tap users with custom `brew` commands by adding them in a +`cmd` subdirectory. [Read more on external commands](External-Commands.md). + +See [homebrew-aliases](https://github.com/Homebrew/homebrew-aliases) for an +example of a tap with external commands.