Browse Source
this will cause it to show up as a link from incoming pull requests, and also make the documentation and its change history a little more first-class with respect to the rest of the project. big ups to @mkouhia, @passcod, @mwarkentin, and @vincecima for their work on this document!
phinze
12 years ago
1 changed files with 151 additions and 0 deletions
@ -0,0 +1,151 @@ |
|||
# How to Contribute |
|||
|
|||
So you want to contribute to the project. THIS IS GREAT NEWS! |
|||
|
|||
Seriously. We're all pretty happy about this. |
|||
|
|||
## Getting set up to contribute |
|||
|
|||
Fork the homebrew-cask repository as per instructions in the |
|||
[GitHub help pages](https://help.github.com/articles/fork-a-repo): |
|||
|
|||
1. Fork the repository in GitHub with the 'Fork' button |
|||
2. Clone your GitHub fork into your computer |
|||
3. Configure upstream remote to point at |
|||
[phinze/homebrew-cask](https://github.com/phinze/homebrew-cask.git). |
|||
|
|||
## Adding a Cask |
|||
|
|||
Making a Cask is easy: a Cask is a Ruby file that is only seven lines long. |
|||
See the Cask for Alfred.app for an example: |
|||
|
|||
```ruby |
|||
class Alfred < Cask |
|||
url 'http://cachefly.alfredapp.com/alfred_1.3.2_265.zip' |
|||
homepage 'http://www.alfredapp.com/' |
|||
version '1.3.2_265' |
|||
sha1 'e10f15a0ae758cae2a22557f14890fa5989260ce' |
|||
end |
|||
``` |
|||
|
|||
### Preliminary steps |
|||
|
|||
1. Go to the folder in which you cloned `phinze/homebrew-cask` (assuming |
|||
`~/homebrew-cask`) |
|||
```bash |
|||
$ cd ~/homebrew-cask |
|||
``` |
|||
2. If you have forked a longer while ago, there might be upstream changes. |
|||
Pull those in (assuming upstream branch is called `upstream`): |
|||
```bash |
|||
$ git fetch upstream |
|||
# Fetches any new changes from the original repo |
|||
$ git checkout master |
|||
# Check out branch "master" (just to make sure) |
|||
$ git merge upstream/master |
|||
# Merges any changes fetched into your working files |
|||
``` |
|||
3. Make a topic branch for your work |
|||
```bash |
|||
$ git checkout -b my-branch |
|||
# Create a new branch called "my-branch" and make it active |
|||
``` |
|||
|
|||
### Write the Cask file |
|||
|
|||
1. Copy a template cask to help writing the new one |
|||
```bash |
|||
$ cp test/support/Casks/basic-cask.rb Casks/my-app.rb |
|||
``` |
|||
2. Edit the Cask with your preferred editor |
|||
```bash |
|||
$ emacs Casks/my-app.rb |
|||
``` |
|||
Include the following fields in your Cask: |
|||
* URL to the `.dmg`/`.zip` file that contains the application (currently |
|||
only `.app` files are supported) |
|||
* Application homepage |
|||
* Application version |
|||
* Checksum of the file |
|||
|
|||
In order to find out the checksum for the file, you need to download the file |
|||
and then: |
|||
|
|||
``` bash |
|||
$ curl -OL http://example-server.com/path/to/file/my-app.dmg |
|||
# Download the file that contains the application |
|||
$ shasum my-app.dmg |
|||
# Calculate SHA-1 sum for the downloaded file |
|||
``` |
|||
|
|||
Some developers (like Mozilla) and hosts (like Sourceforge) provide checksums, |
|||
so you can use those directly, without needing to download the file separately. |
|||
|
|||
In addition to `sha1` you can provide the checksum with `md5`, `sha256`, or `sha512` |
|||
in the same manner. Use commands `md5 my-app.dmg` or `shasum -a 256 my-app.dmg` |
|||
to obtain these checksums. |
|||
|
|||
If the application does not have versioned downloads, you can provide option |
|||
`no_checksum`, which takes no arguments. |
|||
|
|||
This is all you need to do to write a Cask! |
|||
|
|||
## Testing your new Cask |
|||
|
|||
When Casks are installed, they are searched in `/usr/local/Library/Taps`. You |
|||
can replace the files in folder `phinze-cask` but you are recommended to make |
|||
your own folder in which you place the tested Casks. |
|||
|
|||
```bash |
|||
$ mkdir -p /usr/local/Library/Taps/my-casks/Casks |
|||
# Create directory in which the tested Casks are placed |
|||
$ ln -s ~/homebrew-cask/Casks/my-app.rb /usr/local/Library/Taps/my-casks/Casks |
|||
# Create a symbolic link to the Cask you created |
|||
``` |
|||
|
|||
Now you can either audit your Cask with `brew cask audit my-app` or try to |
|||
install it: `brew cask install my-app`. |
|||
|
|||
Did it install? If yes, you can continue with submitting a pull request. If |
|||
something went wrong, `brew cask uninstall my-app` and edit your Cask in |
|||
`~/homebrew-cask/Casks/my-app.rb` or whereever you placed it. Since you |
|||
created a symbolic link in `/usr/local/Library/Taps/my-casks/Casks`, changes |
|||
are automatically reflected in there, so you can directly try installing after |
|||
those changes. |
|||
|
|||
If your application and homebrew-cask do not work well together, feel free to |
|||
[file an issue](https://github.com/phinze/homebrew-cask/issues) after checking |
|||
out open issues. |
|||
|
|||
## Submitting your Cask |
|||
|
|||
Now that you have your Cask ready and you have verified it works correctly, you |
|||
can commit your changes and submit a |
|||
[pull request](https://help.github.com/articles/using-pull-requests). |
|||
|
|||
### Committing your changes |
|||
|
|||
Go back to the folder in which you cloned homebrew-cask. Use `git status` to |
|||
verify that you are on the right branch and that you have changed the right |
|||
files. |
|||
|
|||
1. Stage your Cask with `git add Casks/my-app.rb`. You can view the changes |
|||
that are to be committed with `git diff --cached`. |
|||
2. Commit your changes with `git commit`. Write your commit message with |
|||
* the first line being commit summary, 50 characters or less, |
|||
* followed by an empty line |
|||
* and an explanation of the commit, wrapped to 72 characters. |
|||
See |
|||
[a note about git commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) |
|||
for a more thorough explanation. |
|||
3. Push your changes to your GitHub account: `git push origin my-branch`. |
|||
|
|||
### Filing a pull request on GitHub |
|||
|
|||
Now go to *your* GitHub repository at |
|||
https://github.com/your-github-username/homebrew-cask, switch branch to your |
|||
topic branch and click on 'Pull Request' button. You can then add further |
|||
comments to your pull request. |
|||
|
|||
You are done now, and your Cask should be pulled in or otherwise noticed in a |
|||
while. |
Loading…
Reference in new issue