@bkm016/basalt 0.1.4 → 0.1.6

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 (288) hide show
  1. package/README.md +61 -11
  2. package/{chunk-y648fzx0.js → chunk-0039s4jt.js} +3 -3
  3. package/{chunk-rmj5b73e.js → chunk-053vb71h.js} +1 -1
  4. package/{chunk-whvj83b7.js → chunk-063vbmtp.js} +2 -2
  5. package/{chunk-7tbya5b5.js → chunk-0javrjcm.js} +22 -22
  6. package/{chunk-y7nma9rk.js → chunk-10p3mb40.js} +2 -2
  7. package/{chunk-jk25nt60.js → chunk-39vwrg8n.js} +2 -2
  8. package/chunk-3k627vf2.js +3 -0
  9. package/{chunk-q7t30zz2.js → chunk-6kdgk70p.js} +5 -5
  10. package/{chunk-3x94302m.js → chunk-6ptv4g5e.js} +3 -3
  11. package/chunk-75434aay.js +2 -0
  12. package/{chunk-2zp1mv3q.js → chunk-7hr6zw2m.js} +1 -1
  13. package/{chunk-g2t6t8fk.js → chunk-7jezts2n.js} +2 -2
  14. package/{chunk-y58ygzn9.js → chunk-818nd6s1.js} +3 -3
  15. package/{chunk-k23t7vhs.js → chunk-8gw5bvh3.js} +5 -5
  16. package/{chunk-vv7fp27r.js → chunk-8mezk0cb.js} +2 -2
  17. package/{chunk-zggzfa7j.js → chunk-8saewt61.js} +2 -2
  18. package/{chunk-362g64pd.js → chunk-8wj32837.js} +1 -1
  19. package/{chunk-fjtvjrkg.js → chunk-8wv5t0w6.js} +5 -5
  20. package/{chunk-vk1gxk1t.js → chunk-8x21n7y9.js} +1 -1
  21. package/chunk-a0c989ky.js +2 -0
  22. package/{chunk-4w17tzp5.js → chunk-a5apjjcn.js} +12 -12
  23. package/chunk-a81p46j7.js +2 -0
  24. package/chunk-agsfy9w7.js +2 -0
  25. package/{chunk-fw2bpqmw.js → chunk-arcqjt91.js} +1 -1
  26. package/chunk-bdy4jksd.js +2 -0
  27. package/{chunk-qe0teyn1.js → chunk-benrzwea.js} +1 -1
  28. package/{chunk-0y7ne3d0.js → chunk-bwawt15q.js} +2 -2
  29. package/{chunk-pxsrqrd0.js → chunk-c4qr1f41.js} +2 -2
  30. package/{chunk-981f9dw8.js → chunk-c7rcw9fb.js} +6 -6
  31. package/{chunk-cjc90f84.js → chunk-ca982n62.js} +3 -3
  32. package/chunk-d20p02ny.js +2 -0
  33. package/{chunk-97rzj7f6.js → chunk-d6p2hgxh.js} +1 -1
  34. package/{chunk-k6w6y71k.js → chunk-dnx91jrd.js} +2 -2
  35. package/{chunk-8d46jtbj.js → chunk-dpz4hwqb.js} +2 -2
  36. package/{chunk-aky4tztg.js → chunk-ebpyvs1d.js} +2 -2
  37. package/{chunk-m40gxwq4.js → chunk-ecf896fz.js} +3 -3
  38. package/{chunk-pjyn2s97.js → chunk-ejsneb6f.js} +1 -1
  39. package/{chunk-pbcy6zdt.js → chunk-ey15ye2h.js} +1 -1
  40. package/{chunk-kp22kaez.js → chunk-f156y565.js} +2 -2
  41. package/{chunk-9rmqgc3c.js → chunk-f544p9rh.js} +15 -15
  42. package/chunk-fmq3zwzk.js +2 -0
  43. package/{chunk-em187cy3.js → chunk-fx7f4m3c.js} +2 -2
  44. package/{chunk-r7fpkb49.js → chunk-g0t9c3gv.js} +1 -1
  45. package/{chunk-mvfsxdx6.js → chunk-gv7wqkey.js} +10 -10
  46. package/chunk-hksqjts3.js +3884 -0
  47. package/{chunk-ztsjgssj.js → chunk-j7yvh0ae.js} +1 -1
  48. package/chunk-kns4kv7b.js +3 -0
  49. package/{chunk-nmca5h6m.js → chunk-n85qs7cs.js} +1 -1
  50. package/{chunk-8wc8qdx8.js → chunk-n981vx1t.js} +6 -6
  51. package/{chunk-3ct2tkr8.js → chunk-npez1492.js} +2 -2
  52. package/{chunk-t6zs4kw0.js → chunk-peja51xv.js} +2 -2
  53. package/{chunk-r0scgfwx.js → chunk-pg5nkf1y.js} +2 -2
  54. package/{chunk-7afmgncg.js → chunk-prgm07j4.js} +1 -1
  55. package/{chunk-jwdb0ccj.js → chunk-q9dd6fhj.js} +3 -3
  56. package/{chunk-ykens1hy.js → chunk-r8vvcp6c.js} +1 -1
  57. package/chunk-rfb85nj7.js +2 -0
  58. package/{chunk-ev6yvy5y.js → chunk-rfdt992v.js} +15 -15
  59. package/{chunk-xfvvh1s5.js → chunk-s6dejhfj.js} +1 -1
  60. package/{chunk-xh3vr5vz.js → chunk-s7skpgm2.js} +1 -1
  61. package/chunk-tgfbtehh.js +480 -0
  62. package/{chunk-m8vkwdgr.js → chunk-w67dvqtb.js} +4 -4
  63. package/{chunk-f3xadvab.js → chunk-whj87h4r.js} +2 -2
  64. package/{chunk-2hbfk5xd.js → chunk-wnzvnskb.js} +2 -2
  65. package/{chunk-vexrrw1b.js → chunk-xtq1xpq0.js} +2 -2
  66. package/{chunk-1vd0f74z.js → chunk-y8dkfpmj.js} +5 -5
  67. package/{chunk-shadcb9z.js → chunk-z02sj1je.js} +2 -2
  68. package/{chunk-akr0a8nc.js → chunk-zxkq9m8e.js} +1 -1
  69. package/compiled.js +12 -12
  70. package/package.json +1 -1
  71. package/ui-test-worker.js +32 -32
  72. package/web/{chunk-t4c8xavd.js → chunk-03dmzvaq.js} +7 -7
  73. package/web/{chunk-n8sky2q6.js → chunk-07agqp8h.js} +1 -1
  74. package/web/chunk-0fgaepwm.js +3 -0
  75. package/web/chunk-0gg00f86.js +292 -0
  76. package/web/chunk-0pecj6d7.js +1 -0
  77. package/web/{chunk-ts7zrf5b.js → chunk-0whceqes.js} +2 -2
  78. package/web/chunk-0wt1dgny.js +1 -0
  79. package/web/{chunk-sfg2wkhe.js → chunk-12xxh71x.js} +6 -6
  80. package/web/chunk-1ves7sq5.js +1 -0
  81. package/web/chunk-1yj79b48.js +1 -0
  82. package/web/chunk-296hgy6k.js +370 -0
  83. package/web/{chunk-f4tacm06.js → chunk-2bmq1whf.js} +1 -1
  84. package/web/chunk-2wqxhqr9.js +1 -0
  85. package/web/{chunk-2j4m0bh1.js → chunk-30b33r2w.js} +2 -2
  86. package/web/{chunk-sspfxp5e.js → chunk-30zfw7zg.js} +1 -1
  87. package/web/chunk-39ng8zwx.css +1 -0
  88. package/web/chunk-3de552rg.js +70 -0
  89. package/web/chunk-3nbzj48p.js +36 -0
  90. package/web/{chunk-0z0y25zf.js → chunk-3zebd9fq.js} +3 -3
  91. package/web/chunk-4r1n98zx.js +2 -0
  92. package/web/chunk-59678wmg.js +1 -0
  93. package/web/{chunk-ds7srg4p.js → chunk-5nda24gv.js} +1 -1
  94. package/web/chunk-5v44qv67.js +303 -0
  95. package/web/chunk-5wdk97mk.js +4 -0
  96. package/web/chunk-64rafq66.js +78 -0
  97. package/web/chunk-6bwgdvf6.js +1 -0
  98. package/web/chunk-6kkw9ptc.js +1 -0
  99. package/web/chunk-718mr5gc.js +2 -0
  100. package/web/chunk-7hs57qdr.js +1 -0
  101. package/web/chunk-7kp237t3.js +106 -0
  102. package/web/chunk-86p42kym.js +1 -0
  103. package/web/chunk-8n79cqyd.js +1 -0
  104. package/web/chunk-8r0s8tx7.js +1 -0
  105. package/web/chunk-96v2avmw.js +40 -0
  106. package/web/chunk-9an6wcnr.js +1 -0
  107. package/web/{chunk-5z4jcqct.js → chunk-9c1yt2ex.js} +20 -20
  108. package/web/chunk-9w5tf22s.js +1 -0
  109. package/web/{chunk-pws2seas.js → chunk-a7gtb4kg.js} +19 -19
  110. package/web/chunk-ahztazsg.js +1 -0
  111. package/web/chunk-b985y17w.js +2 -0
  112. package/web/chunk-bz2v64xe.js +1 -0
  113. package/web/{chunk-n1dmrz44.js → chunk-c01176kn.js} +2 -2
  114. package/web/chunk-c3nn0vvc.js +1 -0
  115. package/web/chunk-cb2rxtq9.js +2 -0
  116. package/web/{chunk-b1bgzz66.js → chunk-ck8rr0sr.js} +1 -1
  117. package/web/{chunk-aqfpnhmt.js → chunk-cktmyc13.js} +19 -19
  118. package/web/{chunk-rvrf0f3h.js → chunk-cm92fyr3.js} +2 -2
  119. package/web/chunk-cwtn2kdm.js +1 -0
  120. package/web/chunk-czq1yz51.js +99 -0
  121. package/web/chunk-d22wq71s.js +1 -0
  122. package/web/{chunk-pjkdrgm0.js → chunk-d4z2rgpx.js} +1 -1
  123. package/web/{chunk-hvw3gn2a.js → chunk-d6tbw8br.js} +20 -20
  124. package/web/{chunk-cg3jterp.js → chunk-d9wdsjkk.js} +2 -2
  125. package/web/{chunk-ttg6tbwx.js → chunk-da7m1kva.js} +2 -2
  126. package/web/chunk-dpkyygej.js +1 -0
  127. package/web/{chunk-0b47eyrf.js → chunk-dwajwrpk.js} +1 -1
  128. package/web/chunk-et5ess72.js +1 -0
  129. package/web/chunk-ez8b6neq.js +1 -0
  130. package/web/{chunk-bhsaj6qq.js → chunk-f5txt81n.js} +1 -1
  131. package/web/chunk-fd1kqwe3.js +1 -0
  132. package/web/chunk-fmthkpff.js +1 -0
  133. package/web/chunk-fp48zz2e.js +2 -0
  134. package/web/{chunk-n90cqdvg.js → chunk-fv6vm14n.js} +2 -2
  135. package/web/chunk-fx0n2g22.js +89 -0
  136. package/web/{chunk-9cx1be43.js → chunk-fxs4nb93.js} +16 -16
  137. package/web/chunk-g6k9z8zt.js +1 -0
  138. package/web/{chunk-42e3b9hv.js → chunk-g81h1e6n.js} +19 -19
  139. package/web/{chunk-pz9ps2jm.js → chunk-gsh80797.js} +12 -12
  140. package/web/{chunk-54thej0t.js → chunk-gyp6v7jd.js} +2 -2
  141. package/web/chunk-h0c42zy3.js +1 -0
  142. package/web/{chunk-6m69hczt.js → chunk-h6k1x096.js} +2 -2
  143. package/web/chunk-hs5x78fb.js +1 -0
  144. package/web/{chunk-zx8zec24.js → chunk-ht1dzftc.js} +56 -56
  145. package/web/{chunk-d11v5s7w.js → chunk-hy4m34qp.js} +6 -6
  146. package/web/chunk-hyd5hzpa.js +1 -0
  147. package/web/chunk-hyt1nkaw.js +1 -0
  148. package/web/{chunk-24mfx6w1.js → chunk-j1bw5v1g.js} +2 -2
  149. package/web/chunk-j6a4z530.js +1139 -0
  150. package/web/{chunk-0pbjgdgp.js → chunk-ja7w629n.js} +2 -2
  151. package/web/{chunk-zbj1trar.js → chunk-jam45rqg.js} +2 -2
  152. package/web/chunk-jfvxxp5c.js +1 -0
  153. package/web/{chunk-kmr7r9xj.js → chunk-jve1zc80.js} +2 -2
  154. package/web/chunk-kegv14sg.js +2 -0
  155. package/web/chunk-kw9emsqw.js +1 -0
  156. package/web/{chunk-df5zx17h.js → chunk-kyawkpv2.js} +1 -1
  157. package/web/chunk-m2prjwk3.js +4 -0
  158. package/web/chunk-m9bzz9m0.js +19 -0
  159. package/web/chunk-mqsyzzgt.js +30 -0
  160. package/web/chunk-mz9b5bsa.js +1 -0
  161. package/web/chunk-n1jpg57t.js +169 -0
  162. package/web/{chunk-ybrf9mhz.js → chunk-nyn9tghz.js} +4 -4
  163. package/web/{chunk-1eg9sbbt.js → chunk-nywdeb4m.js} +2 -2
  164. package/web/chunk-prvh9syp.js +324 -0
  165. package/web/chunk-pxkhm40r.js +2 -0
  166. package/web/{chunk-6cnek1xh.js → chunk-q9ekgjh6.js} +1 -1
  167. package/web/{chunk-xzp7jf7e.js → chunk-qcge7d6s.js} +2 -2
  168. package/web/chunk-r3mj50zs.js +1 -0
  169. package/web/{chunk-wnskxerq.js → chunk-rf9dt6bg.js} +5 -5
  170. package/web/{chunk-nvhmq4z5.js → chunk-s2920f21.js} +6 -6
  171. package/web/chunk-sc0ghp25.js +24 -0
  172. package/web/{chunk-ydtrc1ay.js → chunk-sd3cdqcm.js} +2 -2
  173. package/web/{chunk-rykfak98.js → chunk-sf101c23.js} +2 -2
  174. package/web/{chunk-4gavbw65.js → chunk-sy7e4dmq.js} +1 -1
  175. package/web/chunk-t74r2n8h.js +1 -0
  176. package/web/{chunk-0h0vb6gt.js → chunk-t851gdjh.js} +4 -4
  177. package/web/{chunk-a408enpy.js → chunk-t9mvsgt9.js} +1 -1
  178. package/web/chunk-thbqwq6b.js +1 -0
  179. package/web/{chunk-v5cnt7c8.js → chunk-twdy2f67.js} +1 -1
  180. package/web/chunk-v4yqrx5y.js +140 -0
  181. package/web/{chunk-b53bfkys.js → chunk-vf4vkcf9.js} +1 -1
  182. package/web/chunk-vnt34mkb.js +1 -0
  183. package/web/chunk-vtxw9rmr.js +1 -0
  184. package/web/{chunk-92ssjk2y.js → chunk-vw1pbv1x.js} +40 -40
  185. package/web/chunk-x19v2sxv.js +1 -0
  186. package/web/{chunk-3re8y26v.js → chunk-x5s7zr5f.js} +7 -7
  187. package/web/chunk-xc2sq3t5.js +2 -0
  188. package/web/chunk-xce8n339.js +1 -0
  189. package/web/chunk-xtss82z2.js +1 -0
  190. package/web/chunk-xvcfp1zh.js +2 -0
  191. package/web/chunk-y21zy3eh.js +1 -0
  192. package/web/chunk-ya3ghn3n.js +2 -0
  193. package/web/chunk-yd74yxzt.js +8 -0
  194. package/web/{chunk-74j07k8k.js → chunk-z1geewdf.js} +2 -2
  195. package/web/chunk-z4ha8181.js +1 -0
  196. package/web/chunk-z8rarqe6.js +1 -0
  197. package/web/{chunk-kwccs9f6.js → chunk-zp3qrrkb.js} +11 -11
  198. package/web/chunk-zsxw5fj7.js +39 -0
  199. package/web/index.html +1 -1
  200. package/worker.js +1 -1
  201. package/chunk-06hdzq5n.js +0 -2
  202. package/chunk-5dfbezv9.js +0 -2
  203. package/chunk-5x1sankd.js +0 -3753
  204. package/chunk-71h08f4g.js +0 -2
  205. package/chunk-7nzhdrv9.js +0 -2
  206. package/chunk-7q51n619.js +0 -2
  207. package/chunk-9mmz6wt3.js +0 -2
  208. package/chunk-fvn32nzj.js +0 -478
  209. package/chunk-n6e43rvk.js +0 -3
  210. package/chunk-ry0z4ev6.js +0 -2
  211. package/chunk-vkpvcxjr.js +0 -2
  212. package/web/chunk-0rmkpsgp.js +0 -1
  213. package/web/chunk-0s80zw00.js +0 -1
  214. package/web/chunk-0xkyryrq.js +0 -1
  215. package/web/chunk-1gbd61z0.js +0 -2
  216. package/web/chunk-2s0bmrkv.js +0 -39
  217. package/web/chunk-2z1rwr28.js +0 -2
  218. package/web/chunk-344bq59c.js +0 -89
  219. package/web/chunk-3t0211rw.js +0 -1
  220. package/web/chunk-44rmrmcn.js +0 -1
  221. package/web/chunk-4bzqrwr0.js +0 -1139
  222. package/web/chunk-4d3a7xs2.js +0 -1
  223. package/web/chunk-4jmazh6x.js +0 -370
  224. package/web/chunk-4re74xwm.js +0 -140
  225. package/web/chunk-4rm1vy7w.js +0 -1
  226. package/web/chunk-59kqahb3.js +0 -1
  227. package/web/chunk-5qtyq3ce.js +0 -292
  228. package/web/chunk-5z6x2n5h.js +0 -1
  229. package/web/chunk-6beqrmtq.js +0 -1
  230. package/web/chunk-6f5ke0x9.js +0 -1
  231. package/web/chunk-6xaqxcq8.js +0 -1
  232. package/web/chunk-7q6wvv2x.js +0 -1
  233. package/web/chunk-7qsa4p8h.js +0 -1
  234. package/web/chunk-8nja0ygy.js +0 -1
  235. package/web/chunk-8y64fkpz.js +0 -24
  236. package/web/chunk-9ad7v7bm.js +0 -8
  237. package/web/chunk-9dzxv335.js +0 -4
  238. package/web/chunk-9t5dnjaz.js +0 -19
  239. package/web/chunk-a497tykb.js +0 -70
  240. package/web/chunk-b6k9w215.js +0 -2
  241. package/web/chunk-cjfssg3m.js +0 -2
  242. package/web/chunk-cqp1d4p0.js +0 -1
  243. package/web/chunk-dy2gm1fs.js +0 -1
  244. package/web/chunk-e0zre35a.js +0 -1
  245. package/web/chunk-e9twvs9n.js +0 -3
  246. package/web/chunk-f2kgtyfp.js +0 -1
  247. package/web/chunk-f8bn5tzf.js +0 -1
  248. package/web/chunk-f91wzwtk.js +0 -1
  249. package/web/chunk-fdp9bsj7.js +0 -1
  250. package/web/chunk-fh2vj0wv.js +0 -2
  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-yqbnps3a.js +0 -1
  283. package/web/chunk-z1h20s8c.js +0 -78
  284. package/web/chunk-zj4q9jth.js +0 -36
  285. package/web/chunk-zj5k94dk.js +0 -40
  286. package/web/chunk-zqch0sc8.js +0 -30
  287. package/web/install.ps1 +0 -91
  288. package/web/install.sh +0 -177
package/web/install.ps1 DELETED
@@ -1,91 +0,0 @@
1
- # Basalt 一键安装(Windows):
2
- # irm https://basalt.work/install.ps1 | iex
3
- #
4
- # 可选环境变量(在同一个 PowerShell 窗口里先设置):
5
- # $env:BASALT_VERSION = "0.2.0" 安装指定版本(默认最新)
6
- # $env:BASALT_INSTALL_DIR = "<目录>" 安装位置(默认 %LOCALAPPDATA%\Programs\Basalt)
7
- # $env:BASALT_AUTOSTART = "1" 登录后自动启动
8
- # $env:BASALT_NO_START = "1" 装完不启动
9
- # $env:BASALT_DOWNLOAD_URL = "<地址>" 从镜像下载(目录里要有发布产物和 SHA256SUMS)
10
- $ErrorActionPreference = "Stop"
11
- $ProgressPreference = "SilentlyContinue" # 进度条会让 Invoke-WebRequest 慢几十倍
12
-
13
- $Repo = "Bkm016/Basalt"
14
- $Asset = "basalt-windows-x64.exe"
15
- $InstallDir = if ($env:BASALT_INSTALL_DIR) { $env:BASALT_INSTALL_DIR } else { Join-Path $env:LOCALAPPDATA "Programs\Basalt" }
16
- $Exe = Join-Path $InstallDir "basalt.exe"
17
-
18
- if (-not [Environment]::Is64BitOperatingSystem) { throw "Basalt 只支持 64 位 Windows" }
19
- # 旧版 PowerShell 默认不启用 TLS 1.2,连不上 GitHub
20
- [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
21
-
22
- $Base = if ($env:BASALT_DOWNLOAD_URL) {
23
- $env:BASALT_DOWNLOAD_URL.TrimEnd('/')
24
- } elseif ($env:BASALT_VERSION) {
25
- "https://github.com/$Repo/releases/download/v$($env:BASALT_VERSION.TrimStart('v'))"
26
- } else {
27
- "https://github.com/$Repo/releases/latest/download"
28
- }
29
-
30
- $Temp = Join-Path ([IO.Path]::GetTempPath()) ("basalt-" + [Guid]::NewGuid())
31
- New-Item -ItemType Directory -Force $Temp | Out-Null
32
- try {
33
- Write-Host "下载 $Asset ..."
34
- Invoke-WebRequest -UseBasicParsing "$Base/$Asset" -OutFile (Join-Path $Temp $Asset)
35
- Invoke-WebRequest -UseBasicParsing "$Base/SHA256SUMS" -OutFile (Join-Path $Temp "SHA256SUMS")
36
-
37
- $Expected = Get-Content (Join-Path $Temp "SHA256SUMS") |
38
- ForEach-Object { $Parts = $_ -split '\s+\*?'; if ($Parts[1] -eq $Asset) { $Parts[0] } } |
39
- Select-Object -First 1
40
- $Actual = (Get-FileHash -Algorithm SHA256 (Join-Path $Temp $Asset)).Hash
41
- if (-not $Expected -or $Expected -ne $Actual.ToLower()) { throw "$Asset 校验失败,已停止安装" }
42
-
43
- New-Item -ItemType Directory -Force $InstallDir | Out-Null
44
- # 正在运行的 exe 不能覆盖但能改名:旧版本挪开,新版本启动后会删掉它
45
- if (Test-Path $Exe) {
46
- $Old = Join-Path $InstallDir "basalt.old.exe"
47
- Remove-Item -Force -ErrorAction SilentlyContinue $Old
48
- Move-Item -Force $Exe $Old
49
- }
50
- Move-Item -Force (Join-Path $Temp $Asset) $Exe
51
- } finally {
52
- Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $Temp
53
- }
54
- Write-Host "已安装 Basalt 到 $Exe"
55
-
56
- # ---------- PATH ----------
57
-
58
- $UserPath = [Environment]::GetEnvironmentVariable("Path", "User")
59
- if (-not (($UserPath -split ';') -contains $InstallDir)) {
60
- [Environment]::SetEnvironmentVariable("Path", (@($UserPath, $InstallDir) | Where-Object { $_ }) -join ';', "User")
61
- $env:Path = "$env:Path;$InstallDir"
62
- Write-Host "已把 $InstallDir 加入用户 PATH,新开终端后可直接运行 basalt"
63
- }
64
-
65
- # ---------- 快捷方式 ----------
66
-
67
- function New-Shortcut($Path) {
68
- $Shell = New-Object -ComObject WScript.Shell
69
- $Link = $Shell.CreateShortcut($Path)
70
- $Link.TargetPath = $Exe
71
- $Link.WorkingDirectory = $InstallDir
72
- $Link.Description = "Basalt"
73
- $Link.Save()
74
- }
75
- $Programs = [Environment]::GetFolderPath("Programs")
76
- New-Shortcut (Join-Path $Programs "Basalt.lnk")
77
- Write-Host "已添加开始菜单快捷方式"
78
- if ($env:BASALT_AUTOSTART) {
79
- New-Shortcut (Join-Path ([Environment]::GetFolderPath("Startup")) "Basalt.lnk")
80
- Write-Host "已设置登录后自动启动"
81
- }
82
-
83
- # ---------- 启动 ----------
84
-
85
- if ($env:BASALT_NO_START) {
86
- Write-Host "从开始菜单打开 Basalt,或运行 basalt --open"
87
- return
88
- }
89
- # --replace:升级时接替旧版本进程;--open:打开带配对链接的工作台。托盘图标常驻右下角
90
- Start-Process -FilePath $Exe -ArgumentList "--open", "--replace" -WorkingDirectory $InstallDir
91
- Write-Host "Basalt 已启动,浏览器会打开工作台;之后可以从托盘图标或开始菜单再次打开。"
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"