@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.
- package/README.md +61 -11
- package/{chunk-y648fzx0.js → chunk-0039s4jt.js} +3 -3
- package/{chunk-rmj5b73e.js → chunk-053vb71h.js} +1 -1
- package/{chunk-whvj83b7.js → chunk-063vbmtp.js} +2 -2
- package/{chunk-7tbya5b5.js → chunk-0javrjcm.js} +22 -22
- package/{chunk-y7nma9rk.js → chunk-10p3mb40.js} +2 -2
- package/{chunk-jk25nt60.js → chunk-39vwrg8n.js} +2 -2
- package/chunk-3k627vf2.js +3 -0
- package/{chunk-q7t30zz2.js → chunk-6kdgk70p.js} +5 -5
- package/{chunk-3x94302m.js → chunk-6ptv4g5e.js} +3 -3
- package/chunk-75434aay.js +2 -0
- package/{chunk-2zp1mv3q.js → chunk-7hr6zw2m.js} +1 -1
- package/{chunk-g2t6t8fk.js → chunk-7jezts2n.js} +2 -2
- package/{chunk-y58ygzn9.js → chunk-818nd6s1.js} +3 -3
- package/{chunk-k23t7vhs.js → chunk-8gw5bvh3.js} +5 -5
- package/{chunk-vv7fp27r.js → chunk-8mezk0cb.js} +2 -2
- package/{chunk-zggzfa7j.js → chunk-8saewt61.js} +2 -2
- package/{chunk-362g64pd.js → chunk-8wj32837.js} +1 -1
- package/{chunk-fjtvjrkg.js → chunk-8wv5t0w6.js} +5 -5
- package/{chunk-vk1gxk1t.js → chunk-8x21n7y9.js} +1 -1
- package/chunk-a0c989ky.js +2 -0
- package/{chunk-4w17tzp5.js → chunk-a5apjjcn.js} +12 -12
- package/chunk-a81p46j7.js +2 -0
- package/chunk-agsfy9w7.js +2 -0
- package/{chunk-fw2bpqmw.js → chunk-arcqjt91.js} +1 -1
- package/chunk-bdy4jksd.js +2 -0
- package/{chunk-qe0teyn1.js → chunk-benrzwea.js} +1 -1
- package/{chunk-0y7ne3d0.js → chunk-bwawt15q.js} +2 -2
- package/{chunk-pxsrqrd0.js → chunk-c4qr1f41.js} +2 -2
- package/{chunk-981f9dw8.js → chunk-c7rcw9fb.js} +6 -6
- package/{chunk-cjc90f84.js → chunk-ca982n62.js} +3 -3
- package/chunk-d20p02ny.js +2 -0
- package/{chunk-97rzj7f6.js → chunk-d6p2hgxh.js} +1 -1
- package/{chunk-k6w6y71k.js → chunk-dnx91jrd.js} +2 -2
- package/{chunk-8d46jtbj.js → chunk-dpz4hwqb.js} +2 -2
- package/{chunk-aky4tztg.js → chunk-ebpyvs1d.js} +2 -2
- package/{chunk-m40gxwq4.js → chunk-ecf896fz.js} +3 -3
- package/{chunk-pjyn2s97.js → chunk-ejsneb6f.js} +1 -1
- package/{chunk-pbcy6zdt.js → chunk-ey15ye2h.js} +1 -1
- package/{chunk-kp22kaez.js → chunk-f156y565.js} +2 -2
- package/{chunk-9rmqgc3c.js → chunk-f544p9rh.js} +15 -15
- package/chunk-fmq3zwzk.js +2 -0
- package/{chunk-em187cy3.js → chunk-fx7f4m3c.js} +2 -2
- package/{chunk-r7fpkb49.js → chunk-g0t9c3gv.js} +1 -1
- package/{chunk-mvfsxdx6.js → chunk-gv7wqkey.js} +10 -10
- package/chunk-hksqjts3.js +3884 -0
- package/{chunk-ztsjgssj.js → chunk-j7yvh0ae.js} +1 -1
- package/chunk-kns4kv7b.js +3 -0
- package/{chunk-nmca5h6m.js → chunk-n85qs7cs.js} +1 -1
- package/{chunk-8wc8qdx8.js → chunk-n981vx1t.js} +6 -6
- package/{chunk-3ct2tkr8.js → chunk-npez1492.js} +2 -2
- package/{chunk-t6zs4kw0.js → chunk-peja51xv.js} +2 -2
- package/{chunk-r0scgfwx.js → chunk-pg5nkf1y.js} +2 -2
- package/{chunk-7afmgncg.js → chunk-prgm07j4.js} +1 -1
- package/{chunk-jwdb0ccj.js → chunk-q9dd6fhj.js} +3 -3
- package/{chunk-ykens1hy.js → chunk-r8vvcp6c.js} +1 -1
- package/chunk-rfb85nj7.js +2 -0
- package/{chunk-ev6yvy5y.js → chunk-rfdt992v.js} +15 -15
- package/{chunk-xfvvh1s5.js → chunk-s6dejhfj.js} +1 -1
- package/{chunk-xh3vr5vz.js → chunk-s7skpgm2.js} +1 -1
- package/chunk-tgfbtehh.js +480 -0
- package/{chunk-m8vkwdgr.js → chunk-w67dvqtb.js} +4 -4
- package/{chunk-f3xadvab.js → chunk-whj87h4r.js} +2 -2
- package/{chunk-2hbfk5xd.js → chunk-wnzvnskb.js} +2 -2
- package/{chunk-vexrrw1b.js → chunk-xtq1xpq0.js} +2 -2
- package/{chunk-1vd0f74z.js → chunk-y8dkfpmj.js} +5 -5
- package/{chunk-shadcb9z.js → chunk-z02sj1je.js} +2 -2
- package/{chunk-akr0a8nc.js → chunk-zxkq9m8e.js} +1 -1
- package/compiled.js +12 -12
- package/package.json +1 -1
- package/ui-test-worker.js +32 -32
- package/web/{chunk-t4c8xavd.js → chunk-03dmzvaq.js} +7 -7
- package/web/{chunk-n8sky2q6.js → chunk-07agqp8h.js} +1 -1
- package/web/chunk-0fgaepwm.js +3 -0
- package/web/chunk-0gg00f86.js +292 -0
- package/web/chunk-0pecj6d7.js +1 -0
- package/web/{chunk-ts7zrf5b.js → chunk-0whceqes.js} +2 -2
- package/web/chunk-0wt1dgny.js +1 -0
- package/web/{chunk-sfg2wkhe.js → chunk-12xxh71x.js} +6 -6
- package/web/chunk-1ves7sq5.js +1 -0
- package/web/chunk-1yj79b48.js +1 -0
- package/web/chunk-296hgy6k.js +370 -0
- package/web/{chunk-f4tacm06.js → chunk-2bmq1whf.js} +1 -1
- package/web/chunk-2wqxhqr9.js +1 -0
- package/web/{chunk-2j4m0bh1.js → chunk-30b33r2w.js} +2 -2
- package/web/{chunk-sspfxp5e.js → chunk-30zfw7zg.js} +1 -1
- package/web/chunk-39ng8zwx.css +1 -0
- package/web/chunk-3de552rg.js +70 -0
- package/web/chunk-3nbzj48p.js +36 -0
- package/web/{chunk-0z0y25zf.js → chunk-3zebd9fq.js} +3 -3
- package/web/chunk-4r1n98zx.js +2 -0
- package/web/chunk-59678wmg.js +1 -0
- package/web/{chunk-ds7srg4p.js → chunk-5nda24gv.js} +1 -1
- package/web/chunk-5v44qv67.js +303 -0
- package/web/chunk-5wdk97mk.js +4 -0
- package/web/chunk-64rafq66.js +78 -0
- package/web/chunk-6bwgdvf6.js +1 -0
- package/web/chunk-6kkw9ptc.js +1 -0
- package/web/chunk-718mr5gc.js +2 -0
- package/web/chunk-7hs57qdr.js +1 -0
- package/web/chunk-7kp237t3.js +106 -0
- package/web/chunk-86p42kym.js +1 -0
- package/web/chunk-8n79cqyd.js +1 -0
- package/web/chunk-8r0s8tx7.js +1 -0
- package/web/chunk-96v2avmw.js +40 -0
- package/web/chunk-9an6wcnr.js +1 -0
- package/web/{chunk-5z4jcqct.js → chunk-9c1yt2ex.js} +20 -20
- package/web/chunk-9w5tf22s.js +1 -0
- package/web/{chunk-pws2seas.js → chunk-a7gtb4kg.js} +19 -19
- package/web/chunk-ahztazsg.js +1 -0
- package/web/chunk-b985y17w.js +2 -0
- package/web/chunk-bz2v64xe.js +1 -0
- package/web/{chunk-n1dmrz44.js → chunk-c01176kn.js} +2 -2
- package/web/chunk-c3nn0vvc.js +1 -0
- package/web/chunk-cb2rxtq9.js +2 -0
- package/web/{chunk-b1bgzz66.js → chunk-ck8rr0sr.js} +1 -1
- package/web/{chunk-aqfpnhmt.js → chunk-cktmyc13.js} +19 -19
- package/web/{chunk-rvrf0f3h.js → chunk-cm92fyr3.js} +2 -2
- package/web/chunk-cwtn2kdm.js +1 -0
- package/web/chunk-czq1yz51.js +99 -0
- package/web/chunk-d22wq71s.js +1 -0
- package/web/{chunk-pjkdrgm0.js → chunk-d4z2rgpx.js} +1 -1
- package/web/{chunk-hvw3gn2a.js → chunk-d6tbw8br.js} +20 -20
- package/web/{chunk-cg3jterp.js → chunk-d9wdsjkk.js} +2 -2
- package/web/{chunk-ttg6tbwx.js → chunk-da7m1kva.js} +2 -2
- package/web/chunk-dpkyygej.js +1 -0
- package/web/{chunk-0b47eyrf.js → chunk-dwajwrpk.js} +1 -1
- package/web/chunk-et5ess72.js +1 -0
- package/web/chunk-ez8b6neq.js +1 -0
- package/web/{chunk-bhsaj6qq.js → chunk-f5txt81n.js} +1 -1
- package/web/chunk-fd1kqwe3.js +1 -0
- package/web/chunk-fmthkpff.js +1 -0
- package/web/chunk-fp48zz2e.js +2 -0
- package/web/{chunk-n90cqdvg.js → chunk-fv6vm14n.js} +2 -2
- package/web/chunk-fx0n2g22.js +89 -0
- package/web/{chunk-9cx1be43.js → chunk-fxs4nb93.js} +16 -16
- package/web/chunk-g6k9z8zt.js +1 -0
- package/web/{chunk-42e3b9hv.js → chunk-g81h1e6n.js} +19 -19
- package/web/{chunk-pz9ps2jm.js → chunk-gsh80797.js} +12 -12
- package/web/{chunk-54thej0t.js → chunk-gyp6v7jd.js} +2 -2
- package/web/chunk-h0c42zy3.js +1 -0
- package/web/{chunk-6m69hczt.js → chunk-h6k1x096.js} +2 -2
- package/web/chunk-hs5x78fb.js +1 -0
- package/web/{chunk-zx8zec24.js → chunk-ht1dzftc.js} +56 -56
- package/web/{chunk-d11v5s7w.js → chunk-hy4m34qp.js} +6 -6
- package/web/chunk-hyd5hzpa.js +1 -0
- package/web/chunk-hyt1nkaw.js +1 -0
- package/web/{chunk-24mfx6w1.js → chunk-j1bw5v1g.js} +2 -2
- package/web/chunk-j6a4z530.js +1139 -0
- package/web/{chunk-0pbjgdgp.js → chunk-ja7w629n.js} +2 -2
- package/web/{chunk-zbj1trar.js → chunk-jam45rqg.js} +2 -2
- package/web/chunk-jfvxxp5c.js +1 -0
- package/web/{chunk-kmr7r9xj.js → chunk-jve1zc80.js} +2 -2
- package/web/chunk-kegv14sg.js +2 -0
- package/web/chunk-kw9emsqw.js +1 -0
- package/web/{chunk-df5zx17h.js → chunk-kyawkpv2.js} +1 -1
- package/web/chunk-m2prjwk3.js +4 -0
- package/web/chunk-m9bzz9m0.js +19 -0
- package/web/chunk-mqsyzzgt.js +30 -0
- package/web/chunk-mz9b5bsa.js +1 -0
- package/web/chunk-n1jpg57t.js +169 -0
- package/web/{chunk-ybrf9mhz.js → chunk-nyn9tghz.js} +4 -4
- package/web/{chunk-1eg9sbbt.js → chunk-nywdeb4m.js} +2 -2
- package/web/chunk-prvh9syp.js +324 -0
- package/web/chunk-pxkhm40r.js +2 -0
- package/web/{chunk-6cnek1xh.js → chunk-q9ekgjh6.js} +1 -1
- package/web/{chunk-xzp7jf7e.js → chunk-qcge7d6s.js} +2 -2
- package/web/chunk-r3mj50zs.js +1 -0
- package/web/{chunk-wnskxerq.js → chunk-rf9dt6bg.js} +5 -5
- package/web/{chunk-nvhmq4z5.js → chunk-s2920f21.js} +6 -6
- package/web/chunk-sc0ghp25.js +24 -0
- package/web/{chunk-ydtrc1ay.js → chunk-sd3cdqcm.js} +2 -2
- package/web/{chunk-rykfak98.js → chunk-sf101c23.js} +2 -2
- package/web/{chunk-4gavbw65.js → chunk-sy7e4dmq.js} +1 -1
- package/web/chunk-t74r2n8h.js +1 -0
- package/web/{chunk-0h0vb6gt.js → chunk-t851gdjh.js} +4 -4
- package/web/{chunk-a408enpy.js → chunk-t9mvsgt9.js} +1 -1
- package/web/chunk-thbqwq6b.js +1 -0
- package/web/{chunk-v5cnt7c8.js → chunk-twdy2f67.js} +1 -1
- package/web/chunk-v4yqrx5y.js +140 -0
- package/web/{chunk-b53bfkys.js → chunk-vf4vkcf9.js} +1 -1
- package/web/chunk-vnt34mkb.js +1 -0
- package/web/chunk-vtxw9rmr.js +1 -0
- package/web/{chunk-92ssjk2y.js → chunk-vw1pbv1x.js} +40 -40
- package/web/chunk-x19v2sxv.js +1 -0
- package/web/{chunk-3re8y26v.js → chunk-x5s7zr5f.js} +7 -7
- package/web/chunk-xc2sq3t5.js +2 -0
- package/web/chunk-xce8n339.js +1 -0
- package/web/chunk-xtss82z2.js +1 -0
- package/web/chunk-xvcfp1zh.js +2 -0
- package/web/chunk-y21zy3eh.js +1 -0
- package/web/chunk-ya3ghn3n.js +2 -0
- package/web/chunk-yd74yxzt.js +8 -0
- package/web/{chunk-74j07k8k.js → chunk-z1geewdf.js} +2 -2
- package/web/chunk-z4ha8181.js +1 -0
- package/web/chunk-z8rarqe6.js +1 -0
- package/web/{chunk-kwccs9f6.js → chunk-zp3qrrkb.js} +11 -11
- package/web/chunk-zsxw5fj7.js +39 -0
- 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-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-1gbd61z0.js +0 -2
- 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-4d3a7xs2.js +0 -1
- 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-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-9t5dnjaz.js +0 -19
- 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-fh2vj0wv.js +0 -2
- 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-yqbnps3a.js +0 -1
- 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.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"
|