summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: a2d0e9d33885ae9e598f819d3991232f47e4adb0 (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
# Maintainer: Gavin Luo <lunt.luo@gmail.com>

pkgbase=rime-wanxiang
pkgname=(rime-wanxiang-base)
pkgver=6.4.5
pkgrel=1
pkgdesc="万象拼音:带声调的拼音词库,万象拼音系列方案基础版,可扩展全拼、双拼、中英混输、语言模型"
arch=(any)
license=('CC-BY-4.0')

url="https://github.com/amzxyz/rime_wanxiang"
source=("${url}/archive/refs/tags/v${pkgver}.tar.gz")
sha256sums=('a9b847f44dd677e02fbb89d44ab3163e9b46803dc28cb709194243f69cd3be6d')

makedepends=("librime" "rime-prelude" "rime-essay" "sed")

prepare() {
    cd "${srcdir}/rime_wanxiang-${pkgver}"

    # 清理文件
    rm squirrel.yaml weasel.yaml *.trime.yaml *.md custom_phrase.txt LICENSE
    rm -r .github custom

    mv default.yaml wanxiang_suggestion.yaml
}

build() {
    cd "${srcdir}/rime_wanxiang-${pkgver}"

    rm -rf build/*

    for _f in $(pacman -Qql rime-prelude rime-essay | grep -v "/$"); do ln -sf "${_f}" .; done

    # 预编译除 wanxiang 主方案外的其他依赖方案
    for _s in *.schema.yaml; do
        [[ $_s == wanxiang.schema.yaml ]] && continue
        rime_deployer --compile "${_s}"
    done

    find . -type l -delete
    rm build/*.txt
}

package_rime-wanxiang-base() {
    pkgdesc="万象拼音基础版基础文件"
    depends=(lua librime "rime-wanxiang-data>=${pkgver}")

    cd "${srcdir}/rime_wanxiang-${pkgver}"

    for _f in *.db *.yaml; do
        [[ $_f == wanxiang.schema.yaml ]] && continue
        [[ $_f == wanxiang_radical.schema.yaml ]] && continue
        [[ $_f == wanxiang_en.schema.yaml ]] && continue

        install -Dm644 "${_f}" -t "${pkgdir}"/usr/share/rime-data
    done

    for _f in build/*; do
        [[ $_f == build/wanxiang.* ]] && continue
        [[ $_f == build/wanxiang_radical.schema.yaml ]] && continue
        [[ $_f == build/wanxiang_en.schema.yaml ]] && continue

        install -Dm644 "${_f}" -t "${pkgdir}"/usr/share/rime-data/build
    done

    for _d in en_dicts jm_dicts lua opencc; do
        find $_d -type f -exec install -Dm664 {} "${pkgdir}"/usr/share/rime-data/{} \;
    done
}

_schemas=('pinyin  全拼'
          'zrm     自然码'
          # 'zrlong  自然龙'
          # 'abc     智能ABC'
          'flypy   小鹤双拼'
          'sogou   搜狗双拼'
          # 'ziguang 紫光双拼'
          'mspy    微软双拼')

_conflicts=()
for _line in "${_schemas[@]}"; do
    _schema=${_line%% *}
    _conflicts+=(${pkgbase}-${_schema,,})
done

for _line in "${_schemas[@]}"; do
    _schema=${_line%% *}
    _pkgname=${pkgbase}-${_schema,,}

    _pkgconflicts=()
    for _c in "${_conflicts[@]}"; do
        [[ $_c != "$_pkgname" ]] && _pkgconflicts+=("${_c}")
    done

    pkgname+=("${_pkgname}")
    _name=${_line##* }
    eval "package_$_pkgname() {
        depends=('rime-wanxiang-base')
        pkgdesc='万象拼音基础版("${_name}"方案)'
        conflicts=("${_pkgconflicts[@]}")

        _package $_line
    }"
done

_rime_deploy() {
    for _f in $(pacman -Qql rime-prelude rime-essay | grep -v "/$"); do ln -sf "${_f}" .; done

    for _s in "$@"; do rime_deployer --compile "${_s}"; done

    find . -type l -delete
    rm build/*.txt
}

_package() {
    local _schema=$1
    local _name=$2

    cd "${srcdir}/rime_wanxiang-${pkgver}"

    local _cn_en_user_dict=en_dicts/"${_schema}"
    sed -Ei \
        -e "/^set_shuru_schema:/,/^[^[:space:]]/ { s|^(\s+__include:\s*)\S+(\s*.*)|\1${_name}\2| }" \
        -e "/^set_cn_en:/,/^[^[:space:]]/ { s|^(\s+user_dict:\s*)\S+(\s*.*)|\1${_cn_en_user_dict}\2| }" \
        "wanxiang.schema.yaml"

    for _s in wanxiang_{radical,en}.schema.yaml; do
        sed -Ei \
            -e "/^set_shuru_schema:/,/^[^[:space:]]/ { s|^(\s+__include:\s*)\S+(\s*.*)|\1${_name}\2| }" \
            "${_s}"
    done

    _rime_deploy {wanxiang,wanxiang_radical,wanxiang_en}.schema.yaml

    for _f in {wanxiang,wanxiang_radical,wanxiang_en}.schema.yaml; do
        install -Dm664 "${_f}"       -t "${pkgdir}"/usr/share/rime-data
        install -Dm664 "build/${_f}" -t "${pkgdir}"/usr/share/rime-data/build
    done
}