@bkm016/basalt 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -5
- package/{chunk-y648fzx0.js → chunk-0039s4jt.js} +3 -3
- package/{chunk-m40gxwq4.js → chunk-00gwse5r.js} +3 -3
- package/{chunk-t6zs4kw0.js → chunk-0fwdxd45.js} +2 -2
- package/{chunk-nmca5h6m.js → chunk-0j0qggej.js} +1 -1
- package/chunk-0n99m9m4.js +2 -0
- package/{chunk-pjyn2s97.js → chunk-0stvywr8.js} +1 -1
- package/{chunk-ztsjgssj.js → chunk-1xa7d5mh.js} +1 -1
- package/chunk-2nb3d92s.js +2 -0
- package/chunk-2nkfxhef.js +3868 -0
- package/chunk-2pa1z37c.js +2 -0
- package/{chunk-fw2bpqmw.js → chunk-2qcpq99g.js} +1 -1
- package/{chunk-981f9dw8.js → chunk-36cqq0ga.js} +6 -6
- package/{chunk-whvj83b7.js → chunk-3c330qna.js} +2 -2
- package/chunk-3k627vf2.js +3 -0
- package/{chunk-r7fpkb49.js → chunk-3k7ejpkc.js} +1 -1
- package/chunk-4g5f43ea.js +3 -0
- package/{chunk-fjtvjrkg.js → chunk-539ekagy.js} +4 -4
- package/{chunk-97rzj7f6.js → chunk-5v4g21rw.js} +1 -1
- package/{chunk-r0scgfwx.js → chunk-6dsq0fns.js} +2 -2
- package/{chunk-pbcy6zdt.js → chunk-7as47pcw.js} +1 -1
- package/{chunk-g2t6t8fk.js → chunk-7jezts2n.js} +2 -2
- package/{chunk-8wc8qdx8.js → chunk-7qq99360.js} +6 -6
- package/{chunk-9rmqgc3c.js → chunk-7tgqhveh.js} +15 -15
- package/{chunk-mvfsxdx6.js → chunk-7w0mefgk.js} +10 -10
- package/{chunk-y58ygzn9.js → chunk-818nd6s1.js} +3 -3
- package/{chunk-vv7fp27r.js → chunk-8mezk0cb.js} +2 -2
- package/{chunk-q7t30zz2.js → chunk-8xb636vr.js} +5 -5
- package/{chunk-ev6yvy5y.js → chunk-980drajf.js} +15 -15
- package/{chunk-3x94302m.js → chunk-9z7sdh5e.js} +3 -3
- package/{chunk-zggzfa7j.js → chunk-a4b75ekk.js} +2 -2
- package/{chunk-2zp1mv3q.js → chunk-ar3dbfp9.js} +1 -1
- package/{chunk-vk1gxk1t.js → chunk-aw65h276.js} +1 -1
- package/{chunk-f3xadvab.js → chunk-b9fqretv.js} +2 -2
- package/{chunk-7tbya5b5.js → chunk-bgkegf0k.js} +22 -22
- package/{chunk-0y7ne3d0.js → chunk-bwawt15q.js} +2 -2
- package/{chunk-pxsrqrd0.js → chunk-c4qr1f41.js} +2 -2
- package/chunk-dddsrff6.js +478 -0
- package/{chunk-xfvvh1s5.js → chunk-e63c1186.js} +1 -1
- package/{chunk-em187cy3.js → chunk-ebzkckyw.js} +2 -2
- package/chunk-eegztdzb.js +2 -0
- package/{chunk-rmj5b73e.js → chunk-gw05p4g3.js} +1 -1
- package/{chunk-k23t7vhs.js → chunk-h1rypb99.js} +5 -5
- package/{chunk-akr0a8nc.js → chunk-hq5ke1yp.js} +1 -1
- package/{chunk-jwdb0ccj.js → chunk-jvwg4rn1.js} +3 -3
- package/{chunk-7afmgncg.js → chunk-jyrwk08p.js} +1 -1
- package/chunk-kns4kv7b.js +3 -0
- package/{chunk-8d46jtbj.js → chunk-mat08ab1.js} +2 -2
- package/{chunk-jk25nt60.js → chunk-mkp28k1x.js} +2 -2
- package/{chunk-3ct2tkr8.js → chunk-npez1492.js} +2 -2
- package/{chunk-shadcb9z.js → chunk-nx3jnbv8.js} +2 -2
- package/{chunk-ykens1hy.js → chunk-nxkmd29x.js} +1 -1
- package/{chunk-y7nma9rk.js → chunk-pjr91g6k.js} +2 -2
- package/{chunk-m8vkwdgr.js → chunk-r0jc8e7t.js} +4 -4
- package/chunk-rxj6tct8.js +2 -0
- package/{chunk-362g64pd.js → chunk-sqaam5ak.js} +1 -1
- package/{chunk-4w17tzp5.js → chunk-srjgvdvs.js} +12 -12
- package/{chunk-r9aatvwm.js → chunk-stj493dn.js} +2 -2
- package/{chunk-k6w6y71k.js → chunk-t7sc0wwc.js} +2 -2
- package/{chunk-kp22kaez.js → chunk-v4k3qmdm.js} +2 -2
- package/{chunk-1vd0f74z.js → chunk-vt1anydc.js} +4 -4
- package/chunk-wd3z74av.js +2 -0
- package/{chunk-xh3vr5vz.js → chunk-wfyrfvfn.js} +1 -1
- package/{chunk-2hbfk5xd.js → chunk-wnzvnskb.js} +2 -2
- package/{chunk-cjc90f84.js → chunk-x89em726.js} +3 -3
- package/{chunk-vexrrw1b.js → chunk-xtq1xpq0.js} +2 -2
- package/chunk-yna8bwqc.js +2 -0
- package/{chunk-aky4tztg.js → chunk-zn0g0859.js} +2 -2
- package/{chunk-qe0teyn1.js → chunk-zrkh5dw7.js} +1 -1
- package/chunk-zzwjt7fp.js +2 -0
- package/compiled.js +12 -12
- package/package.json +1 -1
- package/ui-test-worker.js +20 -20
- package/web/chunk-01hcjafh.js +2 -0
- package/web/{chunk-n8sky2q6.js → chunk-07agqp8h.js} +1 -1
- package/web/{chunk-hvw3gn2a.js → chunk-0k9aec1s.js} +20 -20
- package/web/{chunk-74j07k8k.js → chunk-0p1nmj5n.js} +2 -2
- package/web/chunk-0qr891eq.js +70 -0
- package/web/{chunk-ts7zrf5b.js → chunk-0whceqes.js} +2 -2
- package/web/chunk-0ytga215.js +1 -0
- package/web/{chunk-0z0y25zf.js → chunk-12z7d0hp.js} +3 -3
- package/web/chunk-14bad871.js +2 -0
- package/web/chunk-1amzv4ha.js +1 -0
- package/web/chunk-1cfh0e2e.js +324 -0
- package/web/chunk-1pasbxwh.js +89 -0
- package/web/{chunk-4d3a7xs2.js → chunk-1s2hp6h1.js} +1 -1
- package/web/chunk-26bwh1sb.js +169 -0
- package/web/{chunk-wnskxerq.js → chunk-2nht58dc.js} +5 -5
- package/web/chunk-2y0rc1fe.js +1 -0
- package/web/chunk-3hkgdw6f.js +36 -0
- package/web/chunk-4a4j030b.js +1 -0
- package/web/{chunk-nvhmq4z5.js → chunk-4m3zdd41.js} +6 -6
- package/web/chunk-4w298aqs.js +1 -0
- package/web/{chunk-t4c8xavd.js → chunk-56krfj3b.js} +7 -7
- package/web/{chunk-ds7srg4p.js → chunk-5nda24gv.js} +1 -1
- package/web/{chunk-42e3b9hv.js → chunk-5shygfgb.js} +19 -19
- package/web/chunk-65nwc4cf.js +1 -0
- package/web/chunk-6bwgdvf6.js +1 -0
- package/web/chunk-6enn8p66.js +1 -0
- package/web/chunk-6stt9d18.js +1 -0
- package/web/{chunk-4gavbw65.js → chunk-7a3c137d.js} +1 -1
- package/web/chunk-7e47b1sn.js +1 -0
- package/web/chunk-7pypx5h8.js +2 -0
- package/web/chunk-7znyd1mj.js +39 -0
- package/web/{chunk-3re8y26v.js → chunk-892nf39p.js} +7 -7
- package/web/chunk-8r0s8tx7.js +1 -0
- package/web/chunk-9dy7z3ej.js +2 -0
- package/web/chunk-9mq2cdtq.js +1 -0
- package/web/chunk-9w5tf22s.js +1 -0
- package/web/{chunk-bhsaj6qq.js → chunk-9xgspn75.js} +2 -2
- package/web/{chunk-zx8zec24.js → chunk-abhad4zj.js} +56 -56
- package/web/chunk-advfpyb9.js +140 -0
- package/web/chunk-affear07.js +3 -0
- package/web/chunk-ahztazsg.js +1 -0
- package/web/chunk-aqt7kc3s.js +106 -0
- package/web/chunk-b5hah4mf.js +1 -0
- package/web/chunk-b8tfetd8.js +1 -0
- package/web/{chunk-9cx1be43.js → chunk-bnb9xhgw.js} +15 -15
- package/web/{chunk-n1dmrz44.js → chunk-c01176kn.js} +2 -2
- package/web/chunk-c3nn0vvc.js +1 -0
- package/web/chunk-c53xmf48.js +30 -0
- package/web/chunk-ckgpy4r4.js +1 -0
- package/web/chunk-crzseqbx.js +24 -0
- package/web/chunk-d22wq71s.js +1 -0
- package/web/{chunk-pws2seas.js → chunk-d60dpf69.js} +19 -19
- package/web/{chunk-6cnek1xh.js → chunk-d6ddkh6e.js} +1 -1
- package/web/{chunk-cg3jterp.js → chunk-d9wdsjkk.js} +2 -2
- package/web/{chunk-ttg6tbwx.js → chunk-da7m1kva.js} +2 -2
- package/web/chunk-dbnrfxt1.js +8 -0
- package/web/chunk-ddxf8e84.js +1 -0
- package/web/chunk-dzg1pv80.js +200 -0
- package/web/{chunk-yqbnps3a.js → chunk-e8h45nyr.js} +1 -1
- package/web/chunk-ej9vb61c.js +1 -0
- package/web/chunk-f9k3xrwb.js +2 -0
- package/web/{chunk-fh2vj0wv.js → chunk-fjag6yg8.js} +2 -2
- package/web/chunk-fnnrrzqa.js +78 -0
- package/web/{chunk-n90cqdvg.js → chunk-fv6vm14n.js} +2 -2
- package/web/{chunk-b1bgzz66.js → chunk-g5jxwkdh.js} +1 -1
- package/web/{chunk-sspfxp5e.js → chunk-g8kkc6vz.js} +1 -1
- package/web/chunk-g9sqbafw.js +2 -0
- package/web/{chunk-0h0vb6gt.js → chunk-gcv91974.js} +4 -4
- package/web/{chunk-sfg2wkhe.js → chunk-gxqaa4sv.js} +7 -7
- package/web/chunk-gxsb5tx3.js +1 -0
- package/web/{chunk-54thej0t.js → chunk-gyp6v7jd.js} +2 -2
- package/web/chunk-h0c42zy3.js +1 -0
- package/web/chunk-h2ag4kvz.js +2 -0
- package/web/{chunk-kmr7r9xj.js → chunk-h6gh63xj.js} +2 -2
- package/web/{chunk-6m69hczt.js → chunk-h6k1x096.js} +2 -2
- package/web/{chunk-24mfx6w1.js → chunk-j1bw5v1g.js} +2 -2
- package/web/chunk-j34q5jn6.js +1 -0
- package/web/{chunk-0pbjgdgp.js → chunk-ja7w629n.js} +2 -2
- package/web/{chunk-zbj1trar.js → chunk-jam45rqg.js} +2 -2
- package/web/{chunk-f4tacm06.js → chunk-jcdw85mv.js} +1 -1
- package/web/chunk-jfvxxp5c.js +1 -0
- package/web/chunk-jg6fmz2d.js +1 -0
- package/web/{chunk-92ssjk2y.js → chunk-k67v6dyg.js} +40 -40
- package/web/chunk-ka7c5rhx.js +99 -0
- package/web/{chunk-df5zx17h.js → chunk-kza0t0gj.js} +1 -1
- package/web/{chunk-0b47eyrf.js → chunk-m8knte9z.js} +1 -1
- package/web/{chunk-v5cnt7c8.js → chunk-mnzramhc.js} +1 -1
- package/web/{chunk-a408enpy.js → chunk-mpfgr049.js} +1 -1
- package/web/chunk-mz1dabxh.js +1 -0
- package/web/chunk-mz9b5bsa.js +1 -0
- package/web/chunk-p53n0hwr.js +1 -0
- package/web/chunk-paywgcf7.js +40 -0
- package/web/chunk-pfcnr9tw.js +1 -0
- package/web/chunk-pyg1mr80.js +303 -0
- package/web/chunk-q7xkscc5.js +1 -0
- package/web/{chunk-xzp7jf7e.js → chunk-qcge7d6s.js} +2 -2
- package/web/chunk-qmbgb79a.js +1139 -0
- package/web/{chunk-pjkdrgm0.js → chunk-qq5gh5zr.js} +1 -1
- package/web/chunk-qrdh9j62.js +1 -0
- package/web/{chunk-9t5dnjaz.js → chunk-s24qs1bn.js} +9 -9
- package/web/chunk-sd22cnjy.js +1 -0
- package/web/{chunk-ydtrc1ay.js → chunk-sd3cdqcm.js} +2 -2
- package/web/{chunk-rykfak98.js → chunk-sf101c23.js} +2 -2
- package/web/{chunk-1gbd61z0.js → chunk-sfq6cw45.js} +2 -2
- package/web/chunk-svqj4az8.js +1 -0
- package/web/chunk-t7jwyvvr.js +1 -0
- package/web/{chunk-rvrf0f3h.js → chunk-tcp77cp2.js} +2 -2
- package/web/chunk-tf18d2dk.css +1 -0
- package/web/chunk-thbqwq6b.js +1 -0
- package/web/chunk-v0g4cqc1.js +4 -0
- package/web/chunk-vhzys0rr.js +292 -0
- package/web/chunk-vnt34mkb.js +1 -0
- package/web/chunk-vqfz99ff.js +1 -0
- package/web/chunk-vttgyb5v.js +2 -0
- package/web/chunk-x7sb3bwf.js +370 -0
- package/web/chunk-xce8n339.js +1 -0
- package/web/{chunk-kwccs9f6.js → chunk-xk1t58c4.js} +12 -12
- package/web/chunk-xsrvw7dt.js +4 -0
- package/web/chunk-xtss82z2.js +1 -0
- package/web/{chunk-2j4m0bh1.js → chunk-y7jq61nv.js} +2 -2
- package/web/{chunk-1eg9sbbt.js → chunk-ybw6vgf6.js} +2 -2
- package/web/{chunk-ybrf9mhz.js → chunk-yvgs6bm3.js} +4 -4
- package/web/{chunk-b53bfkys.js → chunk-z4aj066q.js} +1 -1
- package/web/chunk-zazs8p6c.js +1 -0
- package/web/{chunk-aqfpnhmt.js → chunk-zc1mk10n.js} +19 -19
- package/web/{chunk-d11v5s7w.js → chunk-zqht0jzx.js} +6 -6
- package/web/{chunk-pz9ps2jm.js → chunk-zz397b0v.js} +12 -12
- package/web/index.html +1 -1
- package/worker.js +1 -1
- package/chunk-06hdzq5n.js +0 -2
- package/chunk-5dfbezv9.js +0 -2
- package/chunk-5x1sankd.js +0 -3753
- package/chunk-71h08f4g.js +0 -2
- package/chunk-7nzhdrv9.js +0 -2
- package/chunk-7q51n619.js +0 -2
- package/chunk-9mmz6wt3.js +0 -2
- package/chunk-bpw6q7g0.js +0 -3
- package/chunk-fvn32nzj.js +0 -478
- package/chunk-n6e43rvk.js +0 -3
- package/chunk-ry0z4ev6.js +0 -2
- package/chunk-vkpvcxjr.js +0 -2
- package/web/chunk-0rmkpsgp.js +0 -1
- package/web/chunk-0s80zw00.js +0 -1
- package/web/chunk-0xkyryrq.js +0 -1
- package/web/chunk-2s0bmrkv.js +0 -39
- package/web/chunk-2z1rwr28.js +0 -2
- package/web/chunk-344bq59c.js +0 -89
- package/web/chunk-3t0211rw.js +0 -1
- package/web/chunk-44rmrmcn.js +0 -1
- package/web/chunk-4bzqrwr0.js +0 -1139
- package/web/chunk-4jmazh6x.js +0 -370
- package/web/chunk-4re74xwm.js +0 -140
- package/web/chunk-4rm1vy7w.js +0 -1
- package/web/chunk-59kqahb3.js +0 -1
- package/web/chunk-5qtyq3ce.js +0 -292
- package/web/chunk-5z4jcqct.js +0 -200
- package/web/chunk-5z6x2n5h.js +0 -1
- package/web/chunk-6beqrmtq.js +0 -1
- package/web/chunk-6f5ke0x9.js +0 -1
- package/web/chunk-6xaqxcq8.js +0 -1
- package/web/chunk-7q6wvv2x.js +0 -1
- package/web/chunk-7qsa4p8h.js +0 -1
- package/web/chunk-8nja0ygy.js +0 -1
- package/web/chunk-8y64fkpz.js +0 -24
- package/web/chunk-9ad7v7bm.js +0 -8
- package/web/chunk-9dzxv335.js +0 -4
- package/web/chunk-a497tykb.js +0 -70
- package/web/chunk-b6k9w215.js +0 -2
- package/web/chunk-cjfssg3m.js +0 -2
- package/web/chunk-cqp1d4p0.js +0 -1
- package/web/chunk-dy2gm1fs.js +0 -1
- package/web/chunk-e0zre35a.js +0 -1
- package/web/chunk-e9twvs9n.js +0 -3
- package/web/chunk-f2kgtyfp.js +0 -1
- package/web/chunk-f8bn5tzf.js +0 -1
- package/web/chunk-f91wzwtk.js +0 -1
- package/web/chunk-fdp9bsj7.js +0 -1
- package/web/chunk-g1ev11wx.js +0 -1
- package/web/chunk-gmzqdm7v.js +0 -1
- package/web/chunk-hfaffkrh.js +0 -1
- package/web/chunk-j2vt8c8v.js +0 -1
- package/web/chunk-ka3q31t1.js +0 -1
- package/web/chunk-khxcn8tt.js +0 -106
- package/web/chunk-kqqmp1am.js +0 -1
- package/web/chunk-m2d1sp30.js +0 -1
- package/web/chunk-nbgqbxcy.js +0 -1
- package/web/chunk-ncpnpe9w.js +0 -99
- package/web/chunk-ne0v8mfb.js +0 -2
- package/web/chunk-ngx2cp8x.js +0 -2
- package/web/chunk-nxcgf7ec.js +0 -1
- package/web/chunk-p0kvmf28.js +0 -2
- package/web/chunk-p3k7m5nr.js +0 -1
- package/web/chunk-pggaffrh.js +0 -169
- package/web/chunk-pxe3vna4.js +0 -1
- package/web/chunk-qh15dxav.css +0 -1
- package/web/chunk-qpmbxhh6.js +0 -1
- package/web/chunk-r0rctnxz.js +0 -1
- package/web/chunk-rn3dnqm8.js +0 -1
- package/web/chunk-rtf2zzzv.js +0 -1
- package/web/chunk-srrfphes.js +0 -1
- package/web/chunk-tdr6x2xc.js +0 -1
- package/web/chunk-tncvg1nn.js +0 -1
- package/web/chunk-vyp0ns1f.js +0 -2
- package/web/chunk-wvdehm9y.js +0 -303
- package/web/chunk-x7ahcpj7.js +0 -1
- package/web/chunk-y38bf0wm.js +0 -1
- package/web/chunk-y56aaba5.js +0 -2
- package/web/chunk-ye58t45p.js +0 -4
- package/web/chunk-z1h20s8c.js +0 -78
- package/web/chunk-zj4q9jth.js +0 -36
- package/web/chunk-zj5k94dk.js +0 -40
- package/web/chunk-zqch0sc8.js +0 -30
- package/web/install.ps1 +0 -91
- package/web/install.sh +0 -177
package/web/install.sh
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Basalt 一键安装(Linux / macOS):
|
|
3
|
-
# curl -fsSL https://basalt.work/install.sh | sh
|
|
4
|
-
#
|
|
5
|
-
# 可选环境变量:
|
|
6
|
-
# BASALT_VERSION=0.2.0 安装指定版本(默认最新)
|
|
7
|
-
# BASALT_INSTALL_DIR=<目录> 安装位置(默认 ~/.basalt/bin)
|
|
8
|
-
# BASALT_AUTOSTART=1 登录后自动启动(macOS LaunchAgent / Linux systemd 用户服务)
|
|
9
|
-
# BASALT_NO_START=1 装完不启动
|
|
10
|
-
# BASALT_NO_MODIFY_PATH=1 不改 shell 配置文件
|
|
11
|
-
# BASALT_DOWNLOAD_URL=<地址> 从镜像下载(目录里要有发布产物和 SHA256SUMS)
|
|
12
|
-
set -eu
|
|
13
|
-
|
|
14
|
-
REPO="Bkm016/Basalt"
|
|
15
|
-
INSTALL_DIR="${BASALT_INSTALL_DIR:-$HOME/.basalt/bin}"
|
|
16
|
-
LOG_DIR="$HOME/.basalt"
|
|
17
|
-
|
|
18
|
-
info() { printf '%s\n' "$*"; }
|
|
19
|
-
fail() {
|
|
20
|
-
printf '错误:%s\n' "$*" >&2
|
|
21
|
-
exit 1
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
case "$(uname -s)" in
|
|
25
|
-
Linux) os=linux ;;
|
|
26
|
-
Darwin) os=darwin ;;
|
|
27
|
-
MINGW* | MSYS* | CYGWIN*) fail "Windows 请在 PowerShell 里运行:irm https://basalt.work/install.ps1 | iex" ;;
|
|
28
|
-
*) fail "不支持的系统:$(uname -s)" ;;
|
|
29
|
-
esac
|
|
30
|
-
case "$(uname -m)" in
|
|
31
|
-
x86_64 | amd64) arch=x64 ;;
|
|
32
|
-
arm64 | aarch64) arch=arm64 ;;
|
|
33
|
-
*) fail "不支持的架构:$(uname -m)" ;;
|
|
34
|
-
esac
|
|
35
|
-
# Rosetta 下的终端会报告 x86_64,Apple Silicon 应该装原生版
|
|
36
|
-
if [ "$os" = darwin ] && [ "$arch" = x64 ] && [ "$(sysctl -n sysctl.proc_translated 2> /dev/null || echo 0)" = 1 ]; then
|
|
37
|
-
arch=arm64
|
|
38
|
-
fi
|
|
39
|
-
|
|
40
|
-
asset="basalt-$os-$arch.tar.gz"
|
|
41
|
-
if [ -n "${BASALT_DOWNLOAD_URL:-}" ]; then
|
|
42
|
-
base="${BASALT_DOWNLOAD_URL%/}"
|
|
43
|
-
elif [ -n "${BASALT_VERSION:-}" ]; then
|
|
44
|
-
base="https://github.com/$REPO/releases/download/v${BASALT_VERSION#v}"
|
|
45
|
-
else
|
|
46
|
-
base="https://github.com/$REPO/releases/latest/download"
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
download() {
|
|
50
|
-
if command -v curl > /dev/null 2>&1; then
|
|
51
|
-
curl -fL --progress-bar -o "$2" "$1"
|
|
52
|
-
elif command -v wget > /dev/null 2>&1; then
|
|
53
|
-
wget -q --show-progress -O "$2" "$1"
|
|
54
|
-
else
|
|
55
|
-
fail "需要 curl 或 wget"
|
|
56
|
-
fi
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
tmp=$(mktemp -d)
|
|
60
|
-
trap 'rm -rf "$tmp"' EXIT
|
|
61
|
-
|
|
62
|
-
info "下载 $asset …"
|
|
63
|
-
download "$base/$asset" "$tmp/$asset" || fail "下载失败:$base/$asset"
|
|
64
|
-
download "$base/SHA256SUMS" "$tmp/SHA256SUMS" || fail "下载校验文件失败"
|
|
65
|
-
|
|
66
|
-
expected=$(awk -v name="$asset" '$2 == name || $2 == "*" name { print $1 }' "$tmp/SHA256SUMS")
|
|
67
|
-
if command -v sha256sum > /dev/null 2>&1; then
|
|
68
|
-
actual=$(sha256sum "$tmp/$asset" | awk '{ print $1 }')
|
|
69
|
-
else
|
|
70
|
-
actual=$(shasum -a 256 "$tmp/$asset" | awk '{ print $1 }')
|
|
71
|
-
fi
|
|
72
|
-
[ -n "$expected" ] && [ "$expected" = "$actual" ] || fail "$asset 校验失败,已停止安装"
|
|
73
|
-
|
|
74
|
-
tar -xzf "$tmp/$asset" -C "$tmp"
|
|
75
|
-
mkdir -p "$INSTALL_DIR"
|
|
76
|
-
# 先放到同一目录再改名:覆盖正在运行的旧版本也不会损坏它
|
|
77
|
-
mv "$tmp/basalt" "$INSTALL_DIR/.basalt.new"
|
|
78
|
-
chmod 755 "$INSTALL_DIR/.basalt.new"
|
|
79
|
-
mv "$INSTALL_DIR/.basalt.new" "$INSTALL_DIR/basalt"
|
|
80
|
-
bin="$INSTALL_DIR/basalt"
|
|
81
|
-
info "已安装 Basalt $("$bin" --version) 到 $bin"
|
|
82
|
-
|
|
83
|
-
# ---------- PATH ----------
|
|
84
|
-
|
|
85
|
-
if [ -z "${BASALT_NO_MODIFY_PATH:-}" ]; then
|
|
86
|
-
case ":$PATH:" in
|
|
87
|
-
*":$INSTALL_DIR:"*) ;;
|
|
88
|
-
*)
|
|
89
|
-
line="export PATH=\"$INSTALL_DIR:\$PATH\""
|
|
90
|
-
case "$(basename "${SHELL:-sh}")" in
|
|
91
|
-
zsh) rc="${ZDOTDIR:-$HOME}/.zshrc" ;;
|
|
92
|
-
bash) [ "$os" = darwin ] && rc="$HOME/.bash_profile" || rc="$HOME/.bashrc" ;;
|
|
93
|
-
fish)
|
|
94
|
-
rc="$HOME/.config/fish/conf.d/basalt.fish"
|
|
95
|
-
line="fish_add_path \"$INSTALL_DIR\""
|
|
96
|
-
mkdir -p "$(dirname "$rc")"
|
|
97
|
-
;;
|
|
98
|
-
*) rc="$HOME/.profile" ;;
|
|
99
|
-
esac
|
|
100
|
-
if ! grep -qsF "$line" "$rc"; then
|
|
101
|
-
printf '\n# Basalt\n%s\n' "$line" >> "$rc"
|
|
102
|
-
info "已把 $INSTALL_DIR 加入 PATH($rc),新开终端后可直接运行 basalt"
|
|
103
|
-
fi
|
|
104
|
-
;;
|
|
105
|
-
esac
|
|
106
|
-
fi
|
|
107
|
-
|
|
108
|
-
# ---------- 开机自启 ----------
|
|
109
|
-
|
|
110
|
-
if [ -n "${BASALT_AUTOSTART:-}" ]; then
|
|
111
|
-
mkdir -p "$LOG_DIR"
|
|
112
|
-
if [ "$os" = darwin ]; then
|
|
113
|
-
plist="$HOME/Library/LaunchAgents/work.basalt.plist"
|
|
114
|
-
mkdir -p "$(dirname "$plist")"
|
|
115
|
-
cat > "$plist" << EOF
|
|
116
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
117
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
118
|
-
<plist version="1.0">
|
|
119
|
-
<dict>
|
|
120
|
-
<key>Label</key><string>work.basalt</string>
|
|
121
|
-
<key>ProgramArguments</key><array><string>$bin</string></array>
|
|
122
|
-
<key>RunAtLoad</key><true/>
|
|
123
|
-
<key>StandardOutPath</key><string>$LOG_DIR/basalt.log</string>
|
|
124
|
-
<key>StandardErrorPath</key><string>$LOG_DIR/basalt.log</string>
|
|
125
|
-
</dict>
|
|
126
|
-
</plist>
|
|
127
|
-
EOF
|
|
128
|
-
info "已设置登录后自动启动($plist)"
|
|
129
|
-
elif command -v systemctl > /dev/null 2>&1; then
|
|
130
|
-
unit="$HOME/.config/systemd/user/basalt.service"
|
|
131
|
-
mkdir -p "$(dirname "$unit")"
|
|
132
|
-
cat > "$unit" << EOF
|
|
133
|
-
[Unit]
|
|
134
|
-
Description=Basalt
|
|
135
|
-
|
|
136
|
-
[Service]
|
|
137
|
-
ExecStart=$bin
|
|
138
|
-
Restart=on-failure
|
|
139
|
-
|
|
140
|
-
[Install]
|
|
141
|
-
WantedBy=default.target
|
|
142
|
-
EOF
|
|
143
|
-
# 只 enable 不 --now:这次由下面直接启动并打开浏览器,下次登录再由 systemd 接手
|
|
144
|
-
systemctl --user daemon-reload && systemctl --user enable basalt.service > /dev/null 2>&1 &&
|
|
145
|
-
info "已设置登录后自动启动(systemd 用户服务 basalt)" ||
|
|
146
|
-
info "设置 systemd 自启失败,可以稍后手动运行 basalt"
|
|
147
|
-
else
|
|
148
|
-
info "没有 systemd,跳过自动启动设置"
|
|
149
|
-
fi
|
|
150
|
-
fi
|
|
151
|
-
|
|
152
|
-
# ---------- 启动 ----------
|
|
153
|
-
|
|
154
|
-
if [ -n "${BASALT_NO_START:-}" ]; then
|
|
155
|
-
info "运行 basalt --open 启动并打开工作台"
|
|
156
|
-
exit 0
|
|
157
|
-
fi
|
|
158
|
-
|
|
159
|
-
mkdir -p "$LOG_DIR"
|
|
160
|
-
log="$LOG_DIR/basalt.log"
|
|
161
|
-
: > "$log"
|
|
162
|
-
# --replace:升级时接替旧版本进程;--open:打开带配对链接的工作台
|
|
163
|
-
nohup "$bin" --open --replace > "$log" 2>&1 < /dev/null &
|
|
164
|
-
info "正在启动 Basalt …"
|
|
165
|
-
# 没有图形界面(如 SSH)时浏览器打不开,把配对信息打印出来
|
|
166
|
-
i=0
|
|
167
|
-
while [ $i -lt 50 ] && ! grep -qE '配对码|认证已关闭|已在运行' "$log" 2> /dev/null; do
|
|
168
|
-
sleep 0.2
|
|
169
|
-
i=$((i + 1))
|
|
170
|
-
done
|
|
171
|
-
if grep -q '配对码' "$log"; then
|
|
172
|
-
sed -n '/配对码/,$p' "$log"
|
|
173
|
-
info "已在浏览器打开工作台;打不开时访问上面的链接,或在工作台里输入配对码。"
|
|
174
|
-
else
|
|
175
|
-
cat "$log"
|
|
176
|
-
fi
|
|
177
|
-
info "日志:$log"
|