aws-runtime-bridge 1.9.91 → 1.9.92
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{spawnSync as
|
|
2
|
-
`)}function
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function
|
|
5
|
-
`)}function
|
|
6
|
-
npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function we(e){const r=e.windowsServiceManager;if(!r&&!Z())return be(e.stderr);const n=e.windowsServiceLogPath||B,s=o.dirname(e.executablePath),a=S.homedir();try{await(r||X()).install({name:H,description:"awsb runtime bridge",script:e.executablePath,workingDirectory:s,env:[{name:"AWS_BRIDGE_SKIP_SETUP",value:"true"},{name:"AWS_RUNTIME_HOME_DIR",value:a}],logpath:F})}catch(i){const h=i instanceof Error?i:new Error(String(i));return e.stderr(`[runtime-bridge] \u5B89\u88C5 Windows \u670D\u52A1\u5931\u8D25: ${h.message}`),{handled:!0,exitCode:1}}const t=e.runCommand("sc.exe",["start",x]);return d(t)?(e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${n}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}function Ce(e){const r=s=>e.runCommand("sc.exe",s);r(["stop",x]);const n=r(["delete",x]);return d(n)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u5378\u8F7D Windows \u670D\u52A1\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}`),{handled:!0,exitCode:n.status??1})}function xe(e){const r=s=>e.runCommand("sc.exe",s);r(["stop",x]);const n=r(["start",x]);return d(n)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u91CD\u542F Windows \u670D\u52A1\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}`),{handled:!0,exitCode:n.status??1})}function Pe(e){const r=e.runCommand("sc.exe",["start",x]);return d(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function Se(e){const r=e.runCommand("sc.exe",["stop",x]);return d(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u505C\u6B62 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function ve(){return`gui/${process.getuid?.()??0}`}function R(e){return e.launchdDomainTarget||ve()}function L(e){return`${e}/${T}`}function D(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Claunchctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function ye(e){if(!k(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_,n=e.launchdLogPath||W,s=ce(e.executablePath,{userHomeDir:S.homedir(),logPath:n});try{p(o.dirname(r),{recursive:!0}),p(o.dirname(n),{recursive:!0}),N(r,s,{encoding:"utf-8",mode:420})}catch(i){const h=i instanceof Error?i:new Error(String(i));return e.stderr(`[runtime-bridge] \u5199\u5165 launchd plist \u5931\u8D25: ${h.message}`),{handled:!0,exitCode:1}}const a=R(e);e.runCommand("launchctl",["bootout",L(a)]);const t=e.runCommand("launchctl",["bootstrap",a,r]);return d(t)?(e.stdout(`[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${n}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(D("\u5B89\u88C5 awsb \u670D\u52A1",t)),{handled:!0,exitCode:t.status??1})}function $e(e){if(!k(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_,n=R(e),s=L(n),a=e.runCommand("launchctl",["bootout",s]);if(a.error)return e.stderr(D("\u5378\u8F7D awsb \u670D\u52A1",a)),{handled:!0,exitCode:1};if(l(r))try{M(r)}catch(t){const i=t instanceof Error?t:new Error(String(t));return e.stderr(`[runtime-bridge] \u5220\u9664 launchd plist \u5931\u8D25: ${i.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb launchd plist \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}}function Ee(e){if(!k(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_;if(!l(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const n=R(e),s=L(n),a=e.runCommand("launchctl",["kickstart",s]);if(d(a))return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0};const t=e.runCommand("launchctl",["bootstrap",n,r]);return d(t)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u542F\u52A8 awsb \u670D\u52A1",t)),{handled:!0,exitCode:t.status??1})}function ke(e){if(!k(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=R(e),n=e.runCommand("launchctl",["bootout",L(r)]);return d(n)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u505C\u6B62 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function Re(e){if(!k(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_;if(!l(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const n=R(e);e.runCommand("launchctl",["bootout",L(n)]);const s=e.runCommand("launchctl",["bootstrap",n,r]);return d(s)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u91CD\u542F awsb \u670D\u52A1",s)),{handled:!0,exitCode:s.status??1})}async function Le(e,r,n,s){const a=e[1];if(!a||a==="-h"||a==="--help"||a==="help")return G(n),{handled:!0,exitCode:a?0:1};const t={stdout:n,stderr:s,runCommand:r.runCommand||I,platform:r.platform||process.platform,serviceUnitPath:r.serviceUnitPath||j,executablePath:r.executablePath||de(),windowsServiceManager:r.windowsServiceManager,launchdPlistPath:r.launchdPlistPath,launchdLogPath:r.launchdLogPath,launchdDomainTarget:r.launchdDomainTarget};return t.platform!=="linux"&&t.platform!=="win32"&&t.platform!=="darwin"?(s("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}):a==="install"?t.platform==="win32"?await we(t):t.platform==="darwin"?ye(t):le(t):a==="uninstall"?t.platform==="win32"?Ce(t):t.platform==="darwin"?$e(t):me(t):a==="restart"?t.platform==="win32"?xe(t):t.platform==="darwin"?Re(t):fe(t):a==="start"?t.platform==="win32"?Pe(t):t.platform==="darwin"?Ee(t):ge(t):a==="stop"?t.platform==="win32"?Se(t):t.platform==="darwin"?ke(t):he(t):(s(`[runtime-bridge] \u672A\u77E5 service \u5B50\u547D\u4EE4: ${a}`),G(n),{handled:!0,exitCode:1})}function V(e){return e?e.split(/\r?\n/).map(r=>r.trim()).filter(r=>/^\d+$/.test(r)).map(Number):[]}function De(e){try{if(e==="win32"){const n=P("powershell",["-NoProfile","-Command",`Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -like '*aws-runtime-bridge*' -and $_.ProcessId -ne ${process.pid} } | ForEach-Object { $_.ProcessId }`],{encoding:"utf-8"});return V(n.stdout)}const r=P("pgrep",["-f","aws-runtime-bridge"],{encoding:"utf-8"});return V(r.stdout).filter(n=>n!==process.pid)}catch{return[]}}function _e(e,r){if(r==="win32"){P("taskkill",["/PID",String(e),"/F","/T"],{stdio:"ignore"});return}P("kill",["-9",String(e)],{stdio:"ignore"})}function pe(e){if(!process.stdin.isTTY)return Promise.resolve("n");const r=q({input:process.stdin,output:process.stdout});return r.question(e).finally(()=>r.close())}async function Te(e,r,n){const s=e.runCommand||I,a=e.platform||process.platform,t=e.findRunningBridgeProcesses||De,i=e.prompt||pe,h=e.killBridgeProcess||_e,u=e.globalModulePath||ne;r("[runtime-bridge] \u6B63\u5728\u66F4\u65B0 aws-runtime-bridge \u5230\u6700\u65B0\u7248\u672C...");const c=t(a).filter(w=>w!==process.pid);let b=!1;if(c.length>0){r(`[runtime-bridge] \u68C0\u6D4B\u5230 aws-runtime-bridge \u6B63\u5728\u8FD0\u884C (PID: ${c.join(", ")})\uFF0C\u66F4\u65B0\u65F6\u8FD9\u4E9B\u8FDB\u7A0B\u53EF\u80FD\u5360\u7528\u6587\u4EF6\u5BFC\u81F4\u8986\u76D6\u5931\u8D25\u3002`);const w=(await i("\u662F\u5426\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0? (y/N) ")).trim().toLowerCase();if(w==="y"||w==="yes")for(const C of c)try{h(C,a),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${C}`)}catch($){const K=$ instanceof Error?$:new Error(String($));n(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${C} \u5931\u8D25: ${K.message}`)}else b=!0,r("[runtime-bridge] \u5DF2\u9009\u62E9\u4E0D\u5173\u95ED\u8FDB\u7A0B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5F3A\u5236\u5B89\u88C5\uFF08\u82E5\u6587\u4EF6\u4ECD\u88AB\u5360\u7528\u53EF\u80FD\u4F1A\u6709\u8B66\u544A\uFF09\u3002")}const U=u();if(U){const w=o.join(U,"aws-runtime-bridge");if(l(w)){r("[runtime-bridge] \u6E05\u7406\u65E7\u7248\u672C\u6B8B\u7559\u76EE\u5F55...");try{J(w,{recursive:!0,force:!0})}catch(C){const $=C instanceof Error?C:new Error(String(C));n(`[runtime-bridge] \u6E05\u7406\u6B8B\u7559\u76EE\u5F55\u5931\u8D25\uFF08\u5C06\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09: ${$.message}`)}}}const A=["install","-g","aws-runtime-bridge@latest","--omit=optional"];b&&A.push("--force");const y=s("npm",A);return y.error?(n(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25: ${y.error.message}`),{handled:!0,exitCode:1}):y.status!==0?(n(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25\uFF0Cnpm \u9000\u51FA\u7801: ${y.status??"unknown"}`),{handled:!0,exitCode:y.status??1}):(r("[runtime-bridge] \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u8FD0\u884C awsb -v \u67E5\u770B\u5F53\u524D\u7248\u672C\u3002"),{handled:!0,exitCode:0})}function We(e,r,n){const a=(e.argv||process.argv.slice(2)).slice(1).some(u=>u==="--follow"||u==="-f"),t=e.platform||process.platform,i=e.runCommand||I,h=e.serviceUnitPath||j;if(t==="linux"){if(!l(h))return n("[runtime-bridge] awsb \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF08awsb service install\uFF09\uFF0C\u65E0\u65E5\u5FD7\u53EF\u67E5\u770B\u3002"),{handled:!0,exitCode:1};const u=["-u",m];a?u.push("-f"):u.push("-n","200","--no-pager");const c=i("journalctl",u);return c.error?(n(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${c.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:c.status??0}}if(t==="win32"){const u=e.windowsServiceLogPath||B;if(!l(u))return n(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const c=`Get-Content -Encoding UTF8 -Tail 200 "${u}"`+(a?" -Wait":""),b=i("powershell",["-NoProfile","-Command",c]);return b.error?(n(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${b.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:b.status??0}}if(t==="darwin"){const u=e.launchdLogPath||W;if(!l(u))return n(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const b=i("tail",a?["-f",u]:["-n","200",u]);return b.error?(n(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${b.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:b.status??0}}return n("[runtime-bridge] awsb log \u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}}async function Fe(e={}){const r=e.argv||process.argv.slice(2),n=r[0],s=e.stdout||ae,a=e.stderr||se;if(ie(n))return s(`aws-runtime-bridge ${te(e.packageRoot)}`),{handled:!0,exitCode:0};if(n==="update")return await Te(e,s,a);if(n==="config"){const t=r[1];if(t==="example"||t==="minimal"||t==="--minimal"||t==="-m")return{handled:!0,exitCode:await(e.configureExample||Q)()==="created"?0:1};const h=await(e.configure||z)();return{handled:!0,exitCode:h==="configured"||h==="created"?0:1}}return n==="service"?await Le(r,e,s,a):n==="log"?We(e,s,a):{handled:!1,exitCode:0}}export{ce as createLaunchdPlistContent,oe as createSystemdUnitContent,Fe as handleCliCommand,te as readPackageVersion};
|
|
1
|
+
import{spawnSync as v}from"node:child_process";import{createInterface as J}from"node:readline/promises";import{existsSync as m,mkdirSync as p,readFileSync as z,rmSync as Q,unlinkSync as N,writeFileSync as O}from"node:fs";import c from"node:path";import P from"node:os";import{fileURLToPath as j}from"node:url";import{configureStartupConfig as X,printConfigExampleCommand as Z}from"./startup-config-wizard.js";import{createWindowsServiceManager as ee,isNodeWindowsAvailable as re}from"./windows-service-manager.js";const f="awsb.service",T=`/etc/systemd/system/${f}`,H="awsb",C=`${H}.exe`,F=c.join(P.homedir(),".aws-bridge","log"),B=c.join(F,"awsb.out.log"),I="com.agentsworkstudio.awsb",D=c.join(P.homedir(),"Library","LaunchAgents",`${I}.plist`),te=c.join(P.homedir(),".aws-bridge","log"),U=c.join(te,"awsb.out.log");function ne(){const e=j(import.meta.url);return c.resolve(c.dirname(e),"..","..")}function ae(e=ne()){const r=c.join(e,"package.json");return JSON.parse(z(r,"utf-8")).version||"unknown"}function _(e,r){const t=v(e,r,{shell:process.platform==="win32",stdio:"inherit"});return{status:t.status,error:t.error}}function ie(){try{const e=v("npm",["root","-g"],{shell:process.platform==="win32",encoding:"utf-8",stdio:["ignore","pipe","ignore"]});if(e.status===0&&e.stdout){const r=e.stdout.trim();if(r)return r}}catch{}return null}function se(e){process.stdout.write(`${e}
|
|
2
|
+
`)}function ue(e){process.stderr.write(`${e}
|
|
3
|
+
`)}function de(e){return e==="-v"||e==="--version"||e==="version"}function oe(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function G(){return process.argv[1]?c.resolve(process.argv[1]):j(import.meta.url)}function ce(e){return["[Unit]","Description=AgentsWorkStudio Runtime Bridge","After=network-online.target","Wants=network-online.target","","[Service]","Type=simple","Environment=AWS_BRIDGE_SKIP_SETUP=true",`ExecStart=${[process.execPath,e].map(t=>oe(t)).join(" ")}`,"Restart=on-failure","RestartSec=5s","","[Install]","WantedBy=multi-user.target",""].join(`
|
|
4
|
+
`)}function S(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function le(e,r={}){const t=r.userHomeDir??P.homedir(),i=r.logPath??U,a=i.replace(/\.out\.log$/,".err.log");return['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>"," <key>Label</key>",` <string>${S(I)}</string>`," <key>ProgramArguments</key>"," <array>",` <string>${S(process.execPath)}</string>`,` <string>${S(e)}</string>`," </array>"," <key>EnvironmentVariables</key>"," <dict>"," <key>AWS_BRIDGE_SKIP_SETUP</key>"," <string>true</string>"," <key>AWS_RUNTIME_HOME_DIR</key>",` <string>${S(t)}</string>`," </dict>"," <key>RunAtLoad</key>"," <true/>"," <key>KeepAlive</key>"," <true/>"," <key>StandardOutPath</key>",` <string>${S(i)}</string>`," <key>StandardErrorPath</key>",` <string>${S(a)}</string>`,"</dict>","</plist>",""].join(`
|
|
5
|
+
`)}function g(e,r){return e("systemctl",r)}function h(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function d(e){return!e.error&&e.status===0}function E(e,r){return e==="linux"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd \u73AF\u5883\u3002"),!1)}function R(e,r){return e==="darwin"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 macOS launchd \u73AF\u5883\u3002"),!1)}function V(e){e("Usage: awsb service <install|uninstall|start|stop|restart>")}function me(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=ce(e.executablePath);try{p(c.dirname(e.serviceUnitPath),{recursive:!0}),O(e.serviceUnitPath,r,{encoding:"utf-8",mode:420})}catch(n){const s=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5199\u5165 systemd unit \u5931\u8D25: ${s.message}`),{handled:!0,exitCode:1}}const t=g(e.runCommand,["daemon-reload"]);if(!d(t))return e.stderr(h("\u91CD\u8F7D systemd",t)),{handled:!0,exitCode:t.status??1};const i=g(e.runCommand,["enable",f]);if(!d(i))return e.stderr(h("\u542F\u7528 awsb \u5F00\u673A\u81EA\u542F",i)),{handled:!0,exitCode:i.status??1};const a=g(e.runCommand,["is-active","--quiet",f]);if(a.error)return e.stderr(h("\u68C0\u67E5 awsb \u670D\u52A1\u72B6\u6001",a)),{handled:!0,exitCode:1};if(a.status!==0){const n=g(e.runCommand,["start",f]);return d(n)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5B89\u88C5\u3001\u5DF2\u542F\u7528\u5F00\u673A\u81EA\u542F\u5E76\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(h("\u542F\u52A8 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}return e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u7528\u5F00\u673A\u81EA\u542F\uFF1B\u670D\u52A1\u5DF2\u5728\u8FD0\u884C\u3002"),{handled:!0,exitCode:0}}function fe(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=m(e.serviceUnitPath),t=g(e.runCommand,["is-active","--quiet",f]);if(t.error)return e.stderr(h("\u68C0\u67E5 awsb \u670D\u52A1\u72B6\u6001",t)),{handled:!0,exitCode:1};if(t.status===0){const n=g(e.runCommand,["stop",f]);if(!d(n))return e.stderr(h("\u505C\u6B62 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1}}const i=g(e.runCommand,["disable",f]);if(i.error||i.status!==0&&r)return e.stderr(h("\u7981\u7528 awsb \u5F00\u673A\u81EA\u542F",i)),{handled:!0,exitCode:i.status??1};if(r)try{N(e.serviceUnitPath)}catch(n){const s=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5220\u9664 systemd unit \u5931\u8D25: ${s.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb systemd unit \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");const a=g(e.runCommand,["daemon-reload"]);return d(a)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(h("\u91CD\u8F7D systemd",a)),{handled:!0,exitCode:a.status??1})}function ge(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!m(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=g(e.runCommand,["restart",f]);return d(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(h("\u91CD\u542F awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function he(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!m(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=g(e.runCommand,["start",f]);return d(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(h("\u542F\u52A8 awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function we(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!m(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=g(e.runCommand,["stop",f]);return d(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(h("\u505C\u6B62 awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function be(e){return e(`[runtime-bridge] \u672A\u68C0\u6D4B\u5230 node-windows \u6A21\u5757\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 aws-runtime-bridge\uFF1A
|
|
6
|
+
npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function q(e){const r=e.windowsServiceManager;if(!r&&!re())return be(e.stderr);const t=e.windowsServiceLogPath||B,i=c.dirname(e.executablePath),a=P.homedir();try{await(r||ee()).install({name:H,description:"awsb runtime bridge",script:e.executablePath,workingDirectory:i,env:[{name:"AWS_BRIDGE_SKIP_SETUP",value:"true"},{name:"AWS_RUNTIME_HOME_DIR",value:a}],logpath:F})}catch(s){const o=s instanceof Error?s:new Error(String(s));return e.stderr(`[runtime-bridge] \u5B89\u88C5 Windows \u670D\u52A1\u5931\u8D25: ${o.message}`),{handled:!0,exitCode:1}}const n=e.runCommand("sc.exe",["start",C]);return d(n)?(e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}`),{handled:!0,exitCode:n.status??1})}function Ce(e){const r=i=>e.runCommand("sc.exe",i);r(["stop",C]);const t=r(["delete",C]);return d(t)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u5378\u8F7D Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}function xe(e){const r=i=>e.runCommand("sc.exe",i);r(["stop",C]);const t=r(["start",C]);return d(t)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u91CD\u542F Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}function ve(e){const r=e.runCommand("sc.exe",["start",C]);return d(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function Pe(e){const r=e.runCommand("sc.exe",["stop",C]);return d(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u505C\u6B62 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function Se(){return`gui/${process.getuid?.()??0}`}function k(e){return e.launchdDomainTarget||Se()}function W(e){return`${e}/${I}`}function L(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Claunchctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function ye(e){if(!R(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||D,t=e.launchdLogPath||U,i=le(e.executablePath,{userHomeDir:P.homedir(),logPath:t});try{p(c.dirname(r),{recursive:!0}),p(c.dirname(t),{recursive:!0}),O(r,i,{encoding:"utf-8",mode:420})}catch(s){const o=s instanceof Error?s:new Error(String(s));return e.stderr(`[runtime-bridge] \u5199\u5165 launchd plist \u5931\u8D25: ${o.message}`),{handled:!0,exitCode:1}}const a=k(e);e.runCommand("launchctl",["bootout",W(a)]);const n=e.runCommand("launchctl",["bootstrap",a,r]);return d(n)?(e.stdout(`[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(L("\u5B89\u88C5 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function $e(e){if(!R(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||D,t=k(e),i=W(t),a=e.runCommand("launchctl",["bootout",i]);if(a.error)return e.stderr(L("\u5378\u8F7D awsb \u670D\u52A1",a)),{handled:!0,exitCode:1};if(m(r))try{N(r)}catch(n){const s=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5220\u9664 launchd plist \u5931\u8D25: ${s.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb launchd plist \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}}function Ee(e){if(!R(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||D;if(!m(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const t=k(e),i=W(t),a=e.runCommand("launchctl",["kickstart",i]);if(d(a))return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0};const n=e.runCommand("launchctl",["bootstrap",t,r]);return d(n)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(L("\u542F\u52A8 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function Re(e){if(!R(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=k(e),t=e.runCommand("launchctl",["bootout",W(r)]);return d(t)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(L("\u505C\u6B62 awsb \u670D\u52A1",t)),{handled:!0,exitCode:t.status??1})}function ke(e){if(!R(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||D;if(!m(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const t=k(e);e.runCommand("launchctl",["bootout",W(t)]);const i=e.runCommand("launchctl",["bootstrap",t,r]);return d(i)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(L("\u91CD\u542F awsb \u670D\u52A1",i)),{handled:!0,exitCode:i.status??1})}async function We(e,r,t,i){const a=e[1];if(!a||a==="-h"||a==="--help"||a==="help")return V(t),{handled:!0,exitCode:a?0:1};const n={stdout:t,stderr:i,runCommand:r.runCommand||_,platform:r.platform||process.platform,serviceUnitPath:r.serviceUnitPath||T,executablePath:r.executablePath||G(),windowsServiceManager:r.windowsServiceManager,launchdPlistPath:r.launchdPlistPath,launchdLogPath:r.launchdLogPath,launchdDomainTarget:r.launchdDomainTarget};return n.platform!=="linux"&&n.platform!=="win32"&&n.platform!=="darwin"?(i("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}):a==="install"?n.platform==="win32"?await q(n):n.platform==="darwin"?ye(n):me(n):a==="uninstall"?n.platform==="win32"?Ce(n):n.platform==="darwin"?$e(n):fe(n):a==="restart"?n.platform==="win32"?xe(n):n.platform==="darwin"?ke(n):ge(n):a==="start"?n.platform==="win32"?ve(n):n.platform==="darwin"?Ee(n):he(n):a==="stop"?n.platform==="win32"?Pe(n):n.platform==="darwin"?Re(n):we(n):(i(`[runtime-bridge] \u672A\u77E5 service \u5B50\u547D\u4EE4: ${a}`),V(t),{handled:!0,exitCode:1})}function K(e){return e?e.split(/\r?\n/).map(r=>r.trim()).filter(r=>/^\d+$/.test(r)).map(Number):[]}function Le(e){try{if(e==="win32"){const t=v("powershell",["-NoProfile","-Command",`Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -like '*aws-runtime-bridge*' -and $_.ProcessId -ne ${process.pid} } | ForEach-Object { $_.ProcessId }`],{encoding:"utf-8"});return K(t.stdout)}const r=v("pgrep",["-f","aws-runtime-bridge"],{encoding:"utf-8"});return K(r.stdout).filter(t=>t!==process.pid)}catch{return[]}}function De(e,r){if(r==="win32"){v("taskkill",["/PID",String(e),"/F","/T"],{stdio:"ignore"});return}v("kill",["-9",String(e)],{stdio:"ignore"})}function _e(e){if(!process.stdin.isTTY)return Promise.resolve("n");const r=J({input:process.stdin,output:process.stdout});return r.question(e).finally(()=>r.close())}async function pe(e,r,t){const i=e.runCommand||_,a=e.platform||process.platform,n=e.findRunningBridgeProcesses||Le,s=e.prompt||_e,o=e.killBridgeProcess||De,u=e.globalModulePath||ie;r("[runtime-bridge] \u6B63\u5728\u66F4\u65B0 aws-runtime-bridge \u5230\u6700\u65B0\u7248\u672C...");const l=n(a).filter(b=>b!==process.pid);let w=!1;if(l.length>0){r(`[runtime-bridge] \u68C0\u6D4B\u5230 aws-runtime-bridge \u6B63\u5728\u8FD0\u884C (PID: ${l.join(", ")})\uFF0C\u66F4\u65B0\u65F6\u8FD9\u4E9B\u8FDB\u7A0B\u53EF\u80FD\u5360\u7528\u6587\u4EF6\u5BFC\u81F4\u8986\u76D6\u5931\u8D25\u3002`);const b=(await s("\u662F\u5426\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0? (y/N) ")).trim().toLowerCase();if(b==="y"||b==="yes")for(const x of l)try{o(x,a),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${x}`)}catch($){const Y=$ instanceof Error?$:new Error(String($));t(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${x} \u5931\u8D25: ${Y.message}`)}else w=!0,r("[runtime-bridge] \u5DF2\u9009\u62E9\u4E0D\u5173\u95ED\u8FDB\u7A0B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5F3A\u5236\u5B89\u88C5\uFF08\u82E5\u6587\u4EF6\u4ECD\u88AB\u5360\u7528\u53EF\u80FD\u4F1A\u6709\u8B66\u544A\uFF09\u3002")}const A=u();if(A){const b=c.join(A,"aws-runtime-bridge");if(m(b)){r("[runtime-bridge] \u6E05\u7406\u65E7\u7248\u672C\u6B8B\u7559\u76EE\u5F55...");try{Q(b,{recursive:!0,force:!0})}catch(x){const $=x instanceof Error?x:new Error(String(x));t(`[runtime-bridge] \u6E05\u7406\u6B8B\u7559\u76EE\u5F55\u5931\u8D25\uFF08\u5C06\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09: ${$.message}`)}}}const M=["install","-g","aws-runtime-bridge@latest","--omit=optional"];w&&M.push("--force");const y=i("npm",M);if(y.error)return t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25: ${y.error.message}`),{handled:!0,exitCode:1};if(y.status!==0)return t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25\uFF0Cnpm \u9000\u51FA\u7801: ${y.status??"unknown"}`),{handled:!0,exitCode:y.status??1};if(a==="win32"){const b=await Te(e,r,t);if(b.exitCode!==0)return b}return r("[runtime-bridge] \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u8FD0\u884C awsb -v \u67E5\u770B\u5F53\u524D\u7248\u672C\u3002"),{handled:!0,exitCode:0}}async function Te(e,r,t){const i=e.runCommand||_,a=i("sc.exe",["query",C]);if(!d(a))return{handled:!0,exitCode:0};r("[runtime-bridge] \u68C0\u6D4B\u5230 Windows \u670D\u52A1\u5DF2\u6CE8\u518C\uFF0C\u6B63\u5728\u91CD\u5EFA\u670D\u52A1\u6587\u4EF6\uFF08daemon/winsw.exe\uFF09..."),i("sc.exe",["stop",C]);const n=i("sc.exe",["delete",C]);d(n)||t(`[runtime-bridge] \u5220\u9664\u65E7 SCM \u8BB0\u5F55\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}\uFF08\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09`);const s={stdout:r,stderr:t,runCommand:i,platform:"win32",serviceUnitPath:e.serviceUnitPath||T,executablePath:e.executablePath||G(),windowsServiceManager:e.windowsServiceManager};try{return(await q(s)).exitCode!==0?(t("[runtime-bridge] \u91CD\u5EFA Windows \u670D\u52A1\u6587\u4EF6\u5931\u8D25\u3002\u5305\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u624B\u52A8\u6267\u884C `awsb service uninstall && awsb service install` \u4FEE\u590D\u670D\u52A1\u3002"),{handled:!0,exitCode:0}):(r("[runtime-bridge] Windows \u670D\u52A1\u6587\u4EF6\u5DF2\u91CD\u5EFA\u3002"),{handled:!0,exitCode:0})}catch(o){const u=o instanceof Error?o:new Error(String(o));return t(`[runtime-bridge] \u91CD\u5EFA Windows \u670D\u52A1\u6587\u4EF6\u5F02\u5E38: ${u.message}\u3002\u5305\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u670D\u52A1\u3002`),{handled:!0,exitCode:0}}}function Ie(e,r,t){const a=(e.argv||process.argv.slice(2)).slice(1).some(u=>u==="--follow"||u==="-f"),n=e.platform||process.platform,s=e.runCommand||_,o=e.serviceUnitPath||T;if(n==="linux"){if(!m(o))return t("[runtime-bridge] awsb \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF08awsb service install\uFF09\uFF0C\u65E0\u65E5\u5FD7\u53EF\u67E5\u770B\u3002"),{handled:!0,exitCode:1};const u=["-u",f];a?u.push("-f"):u.push("-n","200","--no-pager");const l=s("journalctl",u);return l.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${l.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:l.status??0}}if(n==="win32"){const u=e.windowsServiceLogPath||B;if(!m(u))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const l=`Get-Content -Encoding UTF8 -Tail 200 "${u}"`+(a?" -Wait":""),w=s("powershell",["-NoProfile","-Command",l]);return w.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${w.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:w.status??0}}if(n==="darwin"){const u=e.launchdLogPath||U;if(!m(u))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const w=s("tail",a?["-f",u]:["-n","200",u]);return w.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${w.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:w.status??0}}return t("[runtime-bridge] awsb log \u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}}async function Be(e={}){const r=e.argv||process.argv.slice(2),t=r[0],i=e.stdout||se,a=e.stderr||ue;if(de(t))return i(`aws-runtime-bridge ${ae(e.packageRoot)}`),{handled:!0,exitCode:0};if(t==="update")return await pe(e,i,a);if(t==="config"){const n=r[1];if(n==="example"||n==="minimal"||n==="--minimal"||n==="-m")return{handled:!0,exitCode:await(e.configureExample||Z)()==="created"?0:1};const o=await(e.configure||X)();return{handled:!0,exitCode:o==="configured"||o==="created"?0:1}}return t==="service"?await We(r,e,i,a):t==="log"?Ie(e,i,a):{handled:!1,exitCode:0}}export{le as createLaunchdPlistContent,ce as createSystemdUnitContent,Be as handleCliCommand,ae as readPackageVersion};
|
|
7
7
|
|