@@ -58,10 +58,22 @@ 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+ }
76+ core . debug ( stdout ) ;
6577 return JSON . parse ( stdout ) ;
6678}
6779
@@ -574,6 +586,7 @@ async function waitForDaemonReady(): Promise<void> {
574586
575587 core . info ( "Waiting for tailscaled daemon to become ready..." ) ;
576588
589+ var lastErr : any ;
577590 while ( waited < maxWaitMs ) {
578591 try {
579592 const status = await getTailscaleStatus ( ) ;
@@ -586,13 +599,16 @@ async function waitForDaemonReady(): Promise<void> {
586599 }
587600 } catch ( err ) {
588601 // Daemon not ready yet, keep polling
602+ lastErr = err ;
589603 core . debug ( `Waiting for daemon... (${ waited } ms elapsed)` ) ;
590604 }
591605 await sleep ( pollIntervalMs ) ;
592606 waited += pollIntervalMs ;
593607 }
594608
595- throw new Error ( "tailscaled daemon did not become ready within timeout" ) ;
609+ throw new Error (
610+ `tailscaled daemon did not become ready within timeout, last error: ${ lastErr } `
611+ ) ;
596612}
597613
598614async function connectToTailscale (
0 commit comments