File: brew-publish

package info (click to toggle)
ruby-build 20140926-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 752 kB
  • ctags: 112
  • sloc: sh: 1,492; makefile: 11
file content (51 lines) | stat: -rwxr-xr-x 1,335 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
# Usage: script/brew-publish <name> <version> [<gh-project>]
#
# Updates the `<name>.rb` Homebrew formula to `<version>` and sends a pull
# request with the change.
set -e

brew_name="${1?}"
version="${2?}"

if ! type -p hub >/dev/null; then
  "ERROR: You have to install hub to proceed." >&2
  exit 1
fi

if [ -n "$3" ]; then
  gh_project="github.com/${3}"
else
  gh_project="$(git remote -v | grep '^origin' | grep -oE 'github.com[:/][^/]+/[^/ ]+' | head -1)"
  gh_project="${gh_project%.git}"
fi

url="https://${gh_project/:/\/}/archive/${version}.tar.gz"

checksum="$(curl -fsSL "$url" | shasum | awk '{print $1}')"

if [ -z "$checksum" ]; then
  echo "ERROR: calculating the checksum failed for $url" >&2
  exit 1
fi

pushd "$(brew --prefix)"

git fetch -q origin master

formula="Library/Formula/${brew_name}.rb"
sed -i.bak -E "
  s!^(  url ).+!\\1\"${url}\"!
  s!^(  sha1 ).+!\\1\"${checksum}\"!
" "$formula"
rm -f "${formula}.bak"

branch="${brew_name}-${version}"
git checkout -q -B "$branch" origin/master
git commit -m "${brew_name} ${version#v}" -- "$formula"
# hackish way of getting the git remote name for user's fork
fork_remote="$(hub fork 2>&1 | grep -oE 'remote:? \S+' | tail -1 | awk '{print $2}')"
git push -u "$fork_remote" "$branch"
hub pull-request -m "${brew_name} ${version#v}"

git checkout -q -