summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 34aeb3cd00edd786be920d8fa08cd0474da0fe90 (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
# Maintainer: Xuanwo <xuanwo@archlinuxcn.org>
# Contributor: Bader <Bad3r@pm.me>
# Acknowledgment: @pychuang (logseq-desktop-git) 

_pkgname="logseq-desktop"
pkgname="$_pkgname"
pkgver=0.10.1
pkgrel=1
pkgdesc="Privacy-first, open-source platform for knowledge sharing and management"
arch=("x86_64")
url="https://logseq.com"
license=('AGPL3')

makedepends=(
    "clojure"
    "gendesk"
    "git"
    "nodejs"
    "npm"
    "yarn"
)

install="$pkgname.install"

_pkgsrc="logseq-${pkgver}"
source=(
    "$_pkgname-${pkgver}.zip::https://github.com/logseq/logseq/archive/refs/tags/${pkgver}.zip"
)
sha256sums=(
    'f9a36bf7d23b1eb91a8b06dad0613da84eaa210bdb8ee68ffa887210b2726f2e'
)

prepare() {
    cat <<'EOF' > "$_pkgname.sh"
#!/usr/bin/env sh
set -e

APPDIR="/opt/logseq-desktop"
_ELECTRON="${APPDIR}/Logseq"

_FLAGS_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/logseq-flags.conf"
if [ -r "$_FLAGS_FILE" ]; then
    _USER_FLAGS="$(cat "$_FLAGS_FILE")"
fi

if [[ $EUID -ne 0 ]] || [[ $ELECTRON_RUN_AS_NODE ]]; then
    exec ${_ELECTRON} $_USER_FLAGS "$@"
else
    exec ${_ELECTRON} --no-sandbox $_USER_FLAGS "$@"
fi
EOF

    local _gendesk_options=(
        -q -f -n
        --pkgname="$_pkgname"
        --pkgdesc="$pkgdesc"
        --name="Logseq"
        --exec="logseq %u"
        --icon="logseq"
        --terminal=false
        --categories="Office"
        --mimetypes="x-scheme-handler/logseq"
        --startupnotify=true
        --custom="StartupWMClass=Logseq"
    )
    gendesk "${_gendesk_options[@]}"

    cd "${srcdir}/$_pkgsrc"

    # download required js modules
    yarn install

    # create and sync files to folder `static`
    yarn gulp:build

    # go to folder `static` and download required js modules in static
    cd "${srcdir}/$_pkgsrc/static"
    yarn install

    # go back to the top-level folder and download clojure dependencies
    cd "${srcdir}/$_pkgsrc"
    clojure -P -M:cljs
}

build() {
    cd "${srcdir}/$_pkgsrc"

    # build
    yarn cljs:release

    # packaging javescript files to an executable
    cd "${srcdir}/$_pkgsrc/static"
    yarn electron-forge package
}

package() {
    # important files are under static/out/Logseq-linux-x64
    cd "${srcdir}/$_pkgsrc/static/out/Logseq-linux-x64"

    # create destination folder and copy files
    install -dm755 "${pkgdir}/opt/$_pkgname"
    cp -a -r -u --verbose ./* "${pkgdir}/opt/$_pkgname"

    # User flag aware launcher
    install -Dm755 "${srcdir}/$_pkgname.sh" "${pkgdir}/usr/bin/logseq"

    # create license folder and make soft links to actual license
    install -dm755 "${pkgdir}/usr/share/licenses/$pkgname/"
    ln -s "/opt/$_pkgname/LICENSE" "${pkgdir}/usr/share/licenses/$pkgname/"
    ln -s "/opt/$_pkgname/LICENSES.chromium.html" "${pkgdir}/usr/share/licenses/$pkgname/"

    # install readme and additional license file (the top-level AGPL3)
    cd "${srcdir}/$_pkgsrc"
    install -Dm644 "README.md" -t "${pkgdir}/usr/share/doc/$pkgname/"
    install -Dm644 "LICENSE.md" -t "${pkgdir}/usr/share/licenses/$pkgname/"

    # copy xdg desktop files
    cd "${srcdir}"
    install -dm755 "${pkgdir}/usr/share/applications"
    install -Dm644 "$_pkgname.desktop" -t "${pkgdir}/usr/share/applications"
}