@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.
Files changed (287) hide show
  1. package/README.md +53 -5
  2. package/{chunk-y648fzx0.js → chunk-0039s4jt.js} +3 -3
  3. package/{chunk-m40gxwq4.js → chunk-00gwse5r.js} +3 -3
  4. package/{chunk-t6zs4kw0.js → chunk-0fwdxd45.js} +2 -2
  5. package/{chunk-nmca5h6m.js → chunk-0j0qggej.js} +1 -1
  6. package/chunk-0n99m9m4.js +2 -0
  7. package/{chunk-pjyn2s97.js → chunk-0stvywr8.js} +1 -1
  8. package/{chunk-ztsjgssj.js → chunk-1xa7d5mh.js} +1 -1
  9. package/chunk-2nb3d92s.js +2 -0
  10. package/chunk-2nkfxhef.js +3868 -0
  11. package/chunk-2pa1z37c.js +2 -0
  12. package/{chunk-fw2bpqmw.js → chunk-2qcpq99g.js} +1 -1
  13. package/{chunk-981f9dw8.js → chunk-36cqq0ga.js} +6 -6
  14. package/{chunk-whvj83b7.js → chunk-3c330qna.js} +2 -2
  15. package/chunk-3k627vf2.js +3 -0
  16. package/{chunk-r7fpkb49.js → chunk-3k7ejpkc.js} +1 -1
  17. package/chunk-4g5f43ea.js +3 -0
  18. package/{chunk-fjtvjrkg.js → chunk-539ekagy.js} +4 -4
  19. package/{chunk-97rzj7f6.js → chunk-5v4g21rw.js} +1 -1
  20. package/{chunk-r0scgfwx.js → chunk-6dsq0fns.js} +2 -2
  21. package/{chunk-pbcy6zdt.js → chunk-7as47pcw.js} +1 -1
  22. package/{chunk-g2t6t8fk.js → chunk-7jezts2n.js} +2 -2
  23. package/{chunk-8wc8qdx8.js → chunk-7qq99360.js} +6 -6
  24. package/{chunk-9rmqgc3c.js → chunk-7tgqhveh.js} +15 -15
  25. package/{chunk-mvfsxdx6.js → chunk-7w0mefgk.js} +10 -10
  26. package/{chunk-y58ygzn9.js → chunk-818nd6s1.js} +3 -3
  27. package/{chunk-vv7fp27r.js → chunk-8mezk0cb.js} +2 -2
  28. package/{chunk-q7t30zz2.js → chunk-8xb636vr.js} +5 -5
  29. package/{chunk-ev6yvy5y.js → chunk-980drajf.js} +15 -15
  30. package/{chunk-3x94302m.js → chunk-9z7sdh5e.js} +3 -3
  31. package/{chunk-zggzfa7j.js → chunk-a4b75ekk.js} +2 -2
  32. package/{chunk-2zp1mv3q.js → chunk-ar3dbfp9.js} +1 -1
  33. package/{chunk-vk1gxk1t.js → chunk-aw65h276.js} +1 -1
  34. package/{chunk-f3xadvab.js → chunk-b9fqretv.js} +2 -2
  35. package/{chunk-7tbya5b5.js → chunk-bgkegf0k.js} +22 -22
  36. package/{chunk-0y7ne3d0.js → chunk-bwawt15q.js} +2 -2
  37. package/{chunk-pxsrqrd0.js → chunk-c4qr1f41.js} +2 -2
  38. package/chunk-dddsrff6.js +478 -0
  39. package/{chunk-xfvvh1s5.js → chunk-e63c1186.js} +1 -1
  40. package/{chunk-em187cy3.js → chunk-ebzkckyw.js} +2 -2
  41. package/chunk-eegztdzb.js +2 -0
  42. package/{chunk-rmj5b73e.js → chunk-gw05p4g3.js} +1 -1
  43. package/{chunk-k23t7vhs.js → chunk-h1rypb99.js} +5 -5
  44. package/{chunk-akr0a8nc.js → chunk-hq5ke1yp.js} +1 -1
  45. package/{chunk-jwdb0ccj.js → chunk-jvwg4rn1.js} +3 -3
  46. package/{chunk-7afmgncg.js → chunk-jyrwk08p.js} +1 -1
  47. package/chunk-kns4kv7b.js +3 -0
  48. package/{chunk-8d46jtbj.js → chunk-mat08ab1.js} +2 -2
  49. package/{chunk-jk25nt60.js → chunk-mkp28k1x.js} +2 -2
  50. package/{chunk-3ct2tkr8.js → chunk-npez1492.js} +2 -2
  51. package/{chunk-shadcb9z.js → chunk-nx3jnbv8.js} +2 -2
  52. package/{chunk-ykens1hy.js → chunk-nxkmd29x.js} +1 -1
  53. package/{chunk-y7nma9rk.js → chunk-pjr91g6k.js} +2 -2
  54. package/{chunk-m8vkwdgr.js → chunk-r0jc8e7t.js} +4 -4
  55. package/chunk-rxj6tct8.js +2 -0
  56. package/{chunk-362g64pd.js → chunk-sqaam5ak.js} +1 -1
  57. package/{chunk-4w17tzp5.js → chunk-srjgvdvs.js} +12 -12
  58. package/{chunk-r9aatvwm.js → chunk-stj493dn.js} +2 -2
  59. package/{chunk-k6w6y71k.js → chunk-t7sc0wwc.js} +2 -2
  60. package/{chunk-kp22kaez.js → chunk-v4k3qmdm.js} +2 -2
  61. package/{chunk-1vd0f74z.js → chunk-vt1anydc.js} +4 -4
  62. package/chunk-wd3z74av.js +2 -0
  63. package/{chunk-xh3vr5vz.js → chunk-wfyrfvfn.js} +1 -1
  64. package/{chunk-2hbfk5xd.js → chunk-wnzvnskb.js} +2 -2
  65. package/{chunk-cjc90f84.js → chunk-x89em726.js} +3 -3
  66. package/{chunk-vexrrw1b.js → chunk-xtq1xpq0.js} +2 -2
  67. package/chunk-yna8bwqc.js +2 -0
  68. package/{chunk-aky4tztg.js → chunk-zn0g0859.js} +2 -2
  69. package/{chunk-qe0teyn1.js → chunk-zrkh5dw7.js} +1 -1
  70. package/chunk-zzwjt7fp.js +2 -0
  71. package/compiled.js +12 -12
  72. package/package.json +1 -1
  73. package/ui-test-worker.js +20 -20
  74. package/web/chunk-01hcjafh.js +2 -0
  75. package/web/{chunk-n8sky2q6.js → chunk-07agqp8h.js} +1 -1
  76. package/web/{chunk-hvw3gn2a.js → chunk-0k9aec1s.js} +20 -20
  77. package/web/{chunk-74j07k8k.js → chunk-0p1nmj5n.js} +2 -2
  78. package/web/chunk-0qr891eq.js +70 -0
  79. package/web/{chunk-ts7zrf5b.js → chunk-0whceqes.js} +2 -2
  80. package/web/chunk-0ytga215.js +1 -0
  81. package/web/{chunk-0z0y25zf.js → chunk-12z7d0hp.js} +3 -3
  82. package/web/chunk-14bad871.js +2 -0
  83. package/web/chunk-1amzv4ha.js +1 -0
  84. package/web/chunk-1cfh0e2e.js +324 -0
  85. package/web/chunk-1pasbxwh.js +89 -0
  86. package/web/{chunk-4d3a7xs2.js → chunk-1s2hp6h1.js} +1 -1
  87. package/web/chunk-26bwh1sb.js +169 -0
  88. package/web/{chunk-wnskxerq.js → chunk-2nht58dc.js} +5 -5
  89. package/web/chunk-2y0rc1fe.js +1 -0
  90. package/web/chunk-3hkgdw6f.js +36 -0
  91. package/web/chunk-4a4j030b.js +1 -0
  92. package/web/{chunk-nvhmq4z5.js → chunk-4m3zdd41.js} +6 -6
  93. package/web/chunk-4w298aqs.js +1 -0
  94. package/web/{chunk-t4c8xavd.js → chunk-56krfj3b.js} +7 -7
  95. package/web/{chunk-ds7srg4p.js → chunk-5nda24gv.js} +1 -1
  96. package/web/{chunk-42e3b9hv.js → chunk-5shygfgb.js} +19 -19
  97. package/web/chunk-65nwc4cf.js +1 -0
  98. package/web/chunk-6bwgdvf6.js +1 -0
  99. package/web/chunk-6enn8p66.js +1 -0
  100. package/web/chunk-6stt9d18.js +1 -0
  101. package/web/{chunk-4gavbw65.js → chunk-7a3c137d.js} +1 -1
  102. package/web/chunk-7e47b1sn.js +1 -0
  103. package/web/chunk-7pypx5h8.js +2 -0
  104. package/web/chunk-7znyd1mj.js +39 -0
  105. package/web/{chunk-3re8y26v.js → chunk-892nf39p.js} +7 -7
  106. package/web/chunk-8r0s8tx7.js +1 -0
  107. package/web/chunk-9dy7z3ej.js +2 -0
  108. package/web/chunk-9mq2cdtq.js +1 -0
  109. package/web/chunk-9w5tf22s.js +1 -0
  110. package/web/{chunk-bhsaj6qq.js → chunk-9xgspn75.js} +2 -2
  111. package/web/{chunk-zx8zec24.js → chunk-abhad4zj.js} +56 -56
  112. package/web/chunk-advfpyb9.js +140 -0
  113. package/web/chunk-affear07.js +3 -0
  114. package/web/chunk-ahztazsg.js +1 -0
  115. package/web/chunk-aqt7kc3s.js +106 -0
  116. package/web/chunk-b5hah4mf.js +1 -0
  117. package/web/chunk-b8tfetd8.js +1 -0
  118. package/web/{chunk-9cx1be43.js → chunk-bnb9xhgw.js} +15 -15
  119. package/web/{chunk-n1dmrz44.js → chunk-c01176kn.js} +2 -2
  120. package/web/chunk-c3nn0vvc.js +1 -0
  121. package/web/chunk-c53xmf48.js +30 -0
  122. package/web/chunk-ckgpy4r4.js +1 -0
  123. package/web/chunk-crzseqbx.js +24 -0
  124. package/web/chunk-d22wq71s.js +1 -0
  125. package/web/{chunk-pws2seas.js → chunk-d60dpf69.js} +19 -19
  126. package/web/{chunk-6cnek1xh.js → chunk-d6ddkh6e.js} +1 -1
  127. package/web/{chunk-cg3jterp.js → chunk-d9wdsjkk.js} +2 -2
  128. package/web/{chunk-ttg6tbwx.js → chunk-da7m1kva.js} +2 -2
  129. package/web/chunk-dbnrfxt1.js +8 -0
  130. package/web/chunk-ddxf8e84.js +1 -0
  131. package/web/chunk-dzg1pv80.js +200 -0
  132. package/web/{chunk-yqbnps3a.js → chunk-e8h45nyr.js} +1 -1
  133. package/web/chunk-ej9vb61c.js +1 -0
  134. package/web/chunk-f9k3xrwb.js +2 -0
  135. package/web/{chunk-fh2vj0wv.js → chunk-fjag6yg8.js} +2 -2
  136. package/web/chunk-fnnrrzqa.js +78 -0
  137. package/web/{chunk-n90cqdvg.js → chunk-fv6vm14n.js} +2 -2
  138. package/web/{chunk-b1bgzz66.js → chunk-g5jxwkdh.js} +1 -1
  139. package/web/{chunk-sspfxp5e.js → chunk-g8kkc6vz.js} +1 -1
  140. package/web/chunk-g9sqbafw.js +2 -0
  141. package/web/{chunk-0h0vb6gt.js → chunk-gcv91974.js} +4 -4
  142. package/web/{chunk-sfg2wkhe.js → chunk-gxqaa4sv.js} +7 -7
  143. package/web/chunk-gxsb5tx3.js +1 -0
  144. package/web/{chunk-54thej0t.js → chunk-gyp6v7jd.js} +2 -2
  145. package/web/chunk-h0c42zy3.js +1 -0
  146. package/web/chunk-h2ag4kvz.js +2 -0
  147. package/web/{chunk-kmr7r9xj.js → chunk-h6gh63xj.js} +2 -2
  148. package/web/{chunk-6m69hczt.js → chunk-h6k1x096.js} +2 -2
  149. package/web/{chunk-24mfx6w1.js → chunk-j1bw5v1g.js} +2 -2
  150. package/web/chunk-j34q5jn6.js +1 -0
  151. package/web/{chunk-0pbjgdgp.js → chunk-ja7w629n.js} +2 -2
  152. package/web/{chunk-zbj1trar.js → chunk-jam45rqg.js} +2 -2
  153. package/web/{chunk-f4tacm06.js → chunk-jcdw85mv.js} +1 -1
  154. package/web/chunk-jfvxxp5c.js +1 -0
  155. package/web/chunk-jg6fmz2d.js +1 -0
  156. package/web/{chunk-92ssjk2y.js → chunk-k67v6dyg.js} +40 -40
  157. package/web/chunk-ka7c5rhx.js +99 -0
  158. package/web/{chunk-df5zx17h.js → chunk-kza0t0gj.js} +1 -1
  159. package/web/{chunk-0b47eyrf.js → chunk-m8knte9z.js} +1 -1
  160. package/web/{chunk-v5cnt7c8.js → chunk-mnzramhc.js} +1 -1
  161. package/web/{chunk-a408enpy.js → chunk-mpfgr049.js} +1 -1
  162. package/web/chunk-mz1dabxh.js +1 -0
  163. package/web/chunk-mz9b5bsa.js +1 -0
  164. package/web/chunk-p53n0hwr.js +1 -0
  165. package/web/chunk-paywgcf7.js +40 -0
  166. package/web/chunk-pfcnr9tw.js +1 -0
  167. package/web/chunk-pyg1mr80.js +303 -0
  168. package/web/chunk-q7xkscc5.js +1 -0
  169. package/web/{chunk-xzp7jf7e.js → chunk-qcge7d6s.js} +2 -2
  170. package/web/chunk-qmbgb79a.js +1139 -0
  171. package/web/{chunk-pjkdrgm0.js → chunk-qq5gh5zr.js} +1 -1
  172. package/web/chunk-qrdh9j62.js +1 -0
  173. package/web/{chunk-9t5dnjaz.js → chunk-s24qs1bn.js} +9 -9
  174. package/web/chunk-sd22cnjy.js +1 -0
  175. package/web/{chunk-ydtrc1ay.js → chunk-sd3cdqcm.js} +2 -2
  176. package/web/{chunk-rykfak98.js → chunk-sf101c23.js} +2 -2
  177. package/web/{chunk-1gbd61z0.js → chunk-sfq6cw45.js} +2 -2
  178. package/web/chunk-svqj4az8.js +1 -0
  179. package/web/chunk-t7jwyvvr.js +1 -0
  180. package/web/{chunk-rvrf0f3h.js → chunk-tcp77cp2.js} +2 -2
  181. package/web/chunk-tf18d2dk.css +1 -0
  182. package/web/chunk-thbqwq6b.js +1 -0
  183. package/web/chunk-v0g4cqc1.js +4 -0
  184. package/web/chunk-vhzys0rr.js +292 -0
  185. package/web/chunk-vnt34mkb.js +1 -0
  186. package/web/chunk-vqfz99ff.js +1 -0
  187. package/web/chunk-vttgyb5v.js +2 -0
  188. package/web/chunk-x7sb3bwf.js +370 -0
  189. package/web/chunk-xce8n339.js +1 -0
  190. package/web/{chunk-kwccs9f6.js → chunk-xk1t58c4.js} +12 -12
  191. package/web/chunk-xsrvw7dt.js +4 -0
  192. package/web/chunk-xtss82z2.js +1 -0
  193. package/web/{chunk-2j4m0bh1.js → chunk-y7jq61nv.js} +2 -2
  194. package/web/{chunk-1eg9sbbt.js → chunk-ybw6vgf6.js} +2 -2
  195. package/web/{chunk-ybrf9mhz.js → chunk-yvgs6bm3.js} +4 -4
  196. package/web/{chunk-b53bfkys.js → chunk-z4aj066q.js} +1 -1
  197. package/web/chunk-zazs8p6c.js +1 -0
  198. package/web/{chunk-aqfpnhmt.js → chunk-zc1mk10n.js} +19 -19
  199. package/web/{chunk-d11v5s7w.js → chunk-zqht0jzx.js} +6 -6
  200. package/web/{chunk-pz9ps2jm.js → chunk-zz397b0v.js} +12 -12
  201. package/web/index.html +1 -1
  202. package/worker.js +1 -1
  203. package/chunk-06hdzq5n.js +0 -2
  204. package/chunk-5dfbezv9.js +0 -2
  205. package/chunk-5x1sankd.js +0 -3753
  206. package/chunk-71h08f4g.js +0 -2
  207. package/chunk-7nzhdrv9.js +0 -2
  208. package/chunk-7q51n619.js +0 -2
  209. package/chunk-9mmz6wt3.js +0 -2
  210. package/chunk-bpw6q7g0.js +0 -3
  211. package/chunk-fvn32nzj.js +0 -478
  212. package/chunk-n6e43rvk.js +0 -3
  213. package/chunk-ry0z4ev6.js +0 -2
  214. package/chunk-vkpvcxjr.js +0 -2
  215. package/web/chunk-0rmkpsgp.js +0 -1
  216. package/web/chunk-0s80zw00.js +0 -1
  217. package/web/chunk-0xkyryrq.js +0 -1
  218. package/web/chunk-2s0bmrkv.js +0 -39
  219. package/web/chunk-2z1rwr28.js +0 -2
  220. package/web/chunk-344bq59c.js +0 -89
  221. package/web/chunk-3t0211rw.js +0 -1
  222. package/web/chunk-44rmrmcn.js +0 -1
  223. package/web/chunk-4bzqrwr0.js +0 -1139
  224. package/web/chunk-4jmazh6x.js +0 -370
  225. package/web/chunk-4re74xwm.js +0 -140
  226. package/web/chunk-4rm1vy7w.js +0 -1
  227. package/web/chunk-59kqahb3.js +0 -1
  228. package/web/chunk-5qtyq3ce.js +0 -292
  229. package/web/chunk-5z4jcqct.js +0 -200
  230. package/web/chunk-5z6x2n5h.js +0 -1
  231. package/web/chunk-6beqrmtq.js +0 -1
  232. package/web/chunk-6f5ke0x9.js +0 -1
  233. package/web/chunk-6xaqxcq8.js +0 -1
  234. package/web/chunk-7q6wvv2x.js +0 -1
  235. package/web/chunk-7qsa4p8h.js +0 -1
  236. package/web/chunk-8nja0ygy.js +0 -1
  237. package/web/chunk-8y64fkpz.js +0 -24
  238. package/web/chunk-9ad7v7bm.js +0 -8
  239. package/web/chunk-9dzxv335.js +0 -4
  240. package/web/chunk-a497tykb.js +0 -70
  241. package/web/chunk-b6k9w215.js +0 -2
  242. package/web/chunk-cjfssg3m.js +0 -2
  243. package/web/chunk-cqp1d4p0.js +0 -1
  244. package/web/chunk-dy2gm1fs.js +0 -1
  245. package/web/chunk-e0zre35a.js +0 -1
  246. package/web/chunk-e9twvs9n.js +0 -3
  247. package/web/chunk-f2kgtyfp.js +0 -1
  248. package/web/chunk-f8bn5tzf.js +0 -1
  249. package/web/chunk-f91wzwtk.js +0 -1
  250. package/web/chunk-fdp9bsj7.js +0 -1
  251. package/web/chunk-g1ev11wx.js +0 -1
  252. package/web/chunk-gmzqdm7v.js +0 -1
  253. package/web/chunk-hfaffkrh.js +0 -1
  254. package/web/chunk-j2vt8c8v.js +0 -1
  255. package/web/chunk-ka3q31t1.js +0 -1
  256. package/web/chunk-khxcn8tt.js +0 -106
  257. package/web/chunk-kqqmp1am.js +0 -1
  258. package/web/chunk-m2d1sp30.js +0 -1
  259. package/web/chunk-nbgqbxcy.js +0 -1
  260. package/web/chunk-ncpnpe9w.js +0 -99
  261. package/web/chunk-ne0v8mfb.js +0 -2
  262. package/web/chunk-ngx2cp8x.js +0 -2
  263. package/web/chunk-nxcgf7ec.js +0 -1
  264. package/web/chunk-p0kvmf28.js +0 -2
  265. package/web/chunk-p3k7m5nr.js +0 -1
  266. package/web/chunk-pggaffrh.js +0 -169
  267. package/web/chunk-pxe3vna4.js +0 -1
  268. package/web/chunk-qh15dxav.css +0 -1
  269. package/web/chunk-qpmbxhh6.js +0 -1
  270. package/web/chunk-r0rctnxz.js +0 -1
  271. package/web/chunk-rn3dnqm8.js +0 -1
  272. package/web/chunk-rtf2zzzv.js +0 -1
  273. package/web/chunk-srrfphes.js +0 -1
  274. package/web/chunk-tdr6x2xc.js +0 -1
  275. package/web/chunk-tncvg1nn.js +0 -1
  276. package/web/chunk-vyp0ns1f.js +0 -2
  277. package/web/chunk-wvdehm9y.js +0 -303
  278. package/web/chunk-x7ahcpj7.js +0 -1
  279. package/web/chunk-y38bf0wm.js +0 -1
  280. package/web/chunk-y56aaba5.js +0 -2
  281. package/web/chunk-ye58t45p.js +0 -4
  282. package/web/chunk-z1h20s8c.js +0 -78
  283. package/web/chunk-zj4q9jth.js +0 -36
  284. package/web/chunk-zj5k94dk.js +0 -40
  285. package/web/chunk-zqch0sc8.js +0 -30
  286. package/web/install.ps1 +0 -91
  287. 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"