summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 0d63cef914f6bd9780f395654bd773b92941e658 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# Maintainer ArjixWasTaken <me@arjix.dev>

# shellcheck shell=bash
# shellcheck disable=SC2034,SC2154,SC2155,SC2164

pkgname=equicord-openasar
_pkgname=equicord
pkgver=1.0.137.r7648g1e353f3bd.r863g5a05f49
pkgrel=1
pkgdesc='The other cutest Discord client mod (with OpenAsar)'
arch=('x86_64')
url='https://equicord.org/'
license=('custom')
options=('!debug' '!strip')
depends=('libnotify' 'libxss' 'nspr' 'nss' 'gtk3' 'hicolor-icon-theme')
optdepends=('libpulse: PulseAudio support'
            'libappindicator-gtk3: Systray indicator support'
            'xdg-utils: For opening URLs and files')
makedepends=('git' 'nvm' 'pnpm' 'wget' 'asar')
provides=("$_pkgname")
conflicts=("$_pkgname")
source=(
    'equicord-source::git+https://github.com/Equicord/Equicord.git'
    'openasar-source::git+https://github.com/GooseMod/OpenAsar.git'
    'discord-pkgbuild::https://gitlab.archlinux.org/archlinux/packaging/packages/discord/-/raw/main/PKGBUILD'
    'equicord.desktop'
    'equicord.png'
    'equicord.sh'
)
sha512sums=('SKIP'
            'SKIP'
            'SKIP'
            '25c3e3cbef8c981a42ba059f589ffc9ebe8c81406fa6cd6b000ed7b4e3c7b95ae96108df2a29096a8c527153b3becf98b1769b2af75d5f6cf0fe69edd2b3da3a'
            '94f091c05c365986d556616404e00344a1d8e4ba93ad1875c0d3d96b1d0a643a799343fe6b84dcf7013ea3f9d47a3380540d8212bbf3fb6f5ddf39840ffe38d5'
            '0fa583c0ea3645298afd34d598a9745095e44eac04ee4327d6e484ebeeeebb942cd6267ef7b706c40408419b560537bde6413c9b046c8d262028a79bef843d70')

pkgver() {
    local discord_ver=$(grep -oE '^pkgver=(.*?)$' discord-pkgbuild)
    local equicord_ver
    {
        local commits sha

        pushd equicord-source
            commits=$(git rev-list --count HEAD)
            sha=$(git rev-parse --short HEAD)
        popd

        equicord_ver="r${commits}g${sha}"
    } > /dev/null

    local openasar_ver
    {
        local commits sha

        pushd openasar-source
            commits=$(git rev-list --count HEAD)
            sha=$(git rev-parse --short HEAD)
        popd

        openasar_ver="r${commits}g${sha}"
    } > /dev/null

    echo "${discord_ver#pkgver=}.${equicord_ver}.${openasar_ver}"
}

_ensure_local_nvm() {
  # let's be sure we are starting clean
  which nvm >/dev/null 2>&1 && nvm deactivate && nvm unload
  export NVM_DIR="${srcdir}/.nvm"

  # The init script returns 3 if version specified
  # in ./.nvmrc is not (yet) installed in $NVM_DIR
  # but nvm itself still gets loaded ok
  # shellcheck source=/dev/null
  source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
}

prepare() {
    export PNPM_HOME="$srcdir/pnpm-home"
    pushd equicord-source
        _ensure_local_nvm
        nvm install --lts
        pnpm install --frozen-lockfile

        sed -i \
            -e '#async function fetchUpdates\(\) {#a return false;' \
            -e '#async function applyUpdates\(\) {#a return false;' \
            src/main/updater/http.ts
    popd

    pushd openasar-source
        sed -i -e "s|nightly|nightly-$(git rev-parse HEAD | cut -c 1-7)|" src/index.js
        sed -i -e "/config.setup = true/a\  config.autoupdate = false;" src/config/index.js
        sed -i -e "s|^Exec=\${exec}$|Exec=/usr/bin/${_pkgname}|" \
        		-e "s|^Name=\${basename(exec)}$|Name=${_pkgname^}|" src/autoStart.js
        node scripts/strip.js
        asar pack src openasar.asar
    popd
}

build() {
    export PNPM_HOME="$srcdir/pnpm-home"
    local discord_ver="${pkgver%%.r*}"
    
    echo "Downloading discord: v$discord_ver"
    wget "https://dl.discordapp.net/apps/linux/$discord_ver/discord-$discord_ver.tar.gz" \
        -O "discord-$discord_ver.tar.gz" \
        --continue

    rm -rf "discord-$discord_ver"; mkdir "discord-$discord_ver"
    tar -xzvf "discord-$discord_ver.tar.gz" -C "discord-$discord_ver" --strip-components=1

    pushd equicord-source
        _ensure_local_nvm
        EQUICORD_REMOTE="Equicord/Equicord" pnpm buildStandalone

        pushd dist
            mkdir app
            echo '{"name": "discord", "main": "index.js"}' > app/package.json
            echo 'require(require("path").resolve(require("electron").app.getAppPath(), "..", "equicord.asar"));' > app/index.js
            asar pack app app.asar
            rm -rf app
        popd
    popd

    local entry_hash="$(sha256sum equicord-source/dist/app.asar | awk '{print $1}')"
    local openasar_hash="$(sha256sum openasar-source/openasar.asar | awk '{print $1}')"
    local equicord_hash="$(sha256sum equicord-source/dist/desktop.asar | awk '{print $1}')"

    sed -i \
        -e 's/INSERT_ENTRYPOINT_HASH_HERE/'"$entry_hash"'/' \
        -e 's/INSERT_OPENASAR_HASH_HERE/'"$openasar_hash"'/' \
        -e 's/INSERT_EQUICORD_HASH_HERE/'"$equicord_hash"'/' \
        equicord.sh
}

package() {
  local discord="$(pwd)/discord-${pkgver%%.r*}"
  local equicord="$(pwd)/equicord-source"
  local openasar="$(pwd)/openasar-source"

  install -Dm755 $_pkgname.sh "$pkgdir"/usr/bin/$_pkgname
  install -Dm644 $_pkgname.desktop "$pkgdir"/usr/share/applications/$_pkgname.desktop
  install -Dm644 $_pkgname.png "$pkgdir"/usr/share/icons/hicolor/256x256/apps/$_pkgname.png

  cd "$discord"
  install -Dm755 updater_bootstrap "$pkgdir"/usr/share/$_pkgname/updater_bootstrap


  cd "$equicord"
  install -Dm644 dist/app.asar "$pkgdir"/usr/share/$_pkgname/app.asar
  install -Dm644 dist/desktop.asar "$pkgdir"/usr/share/$_pkgname/equicord.asar

  cd "$openasar"
  install -Dm644 openasar.asar "$pkgdir"/usr/share/$_pkgname/openasar.asar
}