@@ -58,10 +58,21 @@ type tailscaleStatus = {
5858
5959// Cross-platform Tailscale local API status check
6060async function getTailscaleStatus ( ) : Promise < tailscaleStatus > {
61- const { stdout } = await exec . getExecOutput ( cmdTailscale , [
62- "status" ,
63- "--json" ,
64- ] ) ;
61+ const { exitCode, stdout, stderr } = await exec . getExecOutput (
62+ cmdTailscale ,
63+ [ "status" , "--json" ] ,
64+ {
65+ silent : true ,
66+ ignoreReturnCode : true ,
67+ }
68+ ) ;
69+ if ( exitCode !== 0 ) {
70+ process . stderr . write ( stderr ) ;
71+ throw new Error ( `tailscale status failed with exit code ${ exitCode } ` ) ;
72+ }
73+ if ( core . isDebug ( ) ) {
74+ process . stdout . write ( stdout ) ;
75+ }
6576 return JSON . parse ( stdout ) ;
6677}
6778
@@ -574,6 +585,7 @@ async function waitForDaemonReady(): Promise<void> {
574585
575586 core . info ( "Waiting for tailscaled daemon to become ready..." ) ;
576587
588+ var lastErr : any ;
577589 while ( waited < maxWaitMs ) {
578590 try {
579591 const status = await getTailscaleStatus ( ) ;
@@ -586,13 +598,16 @@ async function waitForDaemonReady(): Promise<void> {
586598 }
587599 } catch ( err ) {
588600 // Daemon not ready yet, keep polling
601+ lastErr = err ;
589602 core . debug ( `Waiting for daemon... (${ waited } ms elapsed)` ) ;
590603 }
591604 await sleep ( pollIntervalMs ) ;
592605 waited += pollIntervalMs ;
593606 }
594607
595- throw new Error ( "tailscaled daemon did not become ready within timeout" ) ;
608+ throw new Error (
609+ `tailscaled daemon did not become ready within timeout, last error: ${ lastErr } `
610+ ) ;
596611}
597612
598613async function connectToTailscale (
0 commit comments