summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: b0d787d0e34d49a0780bda7be022f7309d6dcdc0 (plain)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Maintainer: XZS <d.f.fischer at web dot de>
# This PKGBUILD is maintained on GitHub <https://github.com/dffischer/mozilla-extensions>.
# You may find it convenient to file issues and pull requests there.

pkgname=firefox-extension-hide-tab-bar-with-one-tab
pkgver=1.5.1.signed
pkgrel=1
pkgdesc='Hide the tab bar if there is only one tab.'
url='http://forums.mozillazine.org/viewtopic.php?f=48&t=2141579'
license=('MPLv2')
md5sums=('0177f69d998d66a9f181b5744bee21a1')

[ "$arch" ] || arch=('any')

source+=(
  "${pkgname}.zip::https://addons.mozilla.org/firefox/downloads/latest/${pkgname#*-*-}/platform:2/"
  "version::https://services.addons.mozilla.org/en-US/firefox/api/1.5/addon/${pkgname#*-*-}"
)
md5sums+=('SKIP')

prepare() {
  rm ${pkgname}.zip
}

makedepends+=(rasqal)

sparql() {
  roqet -e "PREFIX em: <http://www.mozilla.org/2004/em-rdf#> SELECT ?x WHERE { $1 }" \
    -D "${2:-install.rdf}" -r csv 2>/dev/null | tr -d '\r' | tail -n 1 | head -c -1
}

pkgver() {
  sparql '<urn:mozilla:install-manifest> em:version ?x' | tr - .
}

# Retrieve current compatibility information from addons.mozilla.org API.
query-version() {
  xmllint version --xpath \
    "//application[appID='$2']/$1_version/text()"
}
version-range() {
  local emid=$(emid $1)
  echo "$1>$(version min $emid)" "$1<$(version max $emid)"
}

emid() {
  case $1 in
    firefox)     echo '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}' ;;
    thunderbird) echo '{3550f703-e582-4d05-9a08-453d09bdfdc6}' ;;
    *) return 1 ;;
  esac
}

version() {
  local version="$(query-version $1 $2)"
  if [[ $version =~ ([[:digit:]]+).\* ]]; then
    if [[ $1 = max ]]; then
      echo $(( ${BASH_REMATCH[1]} + 1 ))
    else
      echo "=${BASH_REMATCH[1]}"
    fi
  else
    echo "=$version"
  fi
}

prepare_target() {
  local target=${pkgname%%-*}
  id="$(sparql '<urn:mozilla:install-manifest> em:id ?x')"
  destdir="$pkgdir/usr/lib/${target/firefox/firefox\/browser}/extensions"
  install -d "$destdir"
}

depends=(${pkgname%%-*})

package() {
  compose_dependencies
  prepare_target
  cp --no-preserve=ownership,mode -r . "$destdir/$id"
}

# Hidden from mksrcinfo in silly subfunction.
compose_dependencies() {
  depends=($(version-range ${pkgname%%-*}))
}