Skip to content

Commit 9da0b16

Browse files
committed
Fix logs
1 parent 20f373a commit 9da0b16

File tree

1 file changed

+46
-16
lines changed

1 file changed

+46
-16
lines changed

pkg/cmd/logs.go

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ package cmd
33
import (
44
"context"
55
"fmt"
6+
"io"
7+
"net/http"
8+
"net/url"
9+
"os"
610

711
"github.com/onkernel/hypeman-go"
8-
"github.com/onkernel/hypeman-go/option"
912
"github.com/urfave/cli/v3"
1013
)
1114

@@ -43,27 +46,54 @@ func handleLogs(ctx context.Context, cmd *cli.Command) error {
4346
return err
4447
}
4548

46-
params := hypeman.InstanceStreamLogsParams{}
47-
if cmd.IsSet("follow") {
48-
params.Follow = hypeman.Opt(cmd.Bool("follow"))
49+
// Build URL for logs endpoint
50+
baseURL := cmd.Root().String("base-url")
51+
if baseURL == "" {
52+
baseURL = os.Getenv("HYPEMAN_BASE_URL")
4953
}
50-
if cmd.IsSet("tail") {
51-
params.Tail = hypeman.Opt(int64(cmd.Int("tail")))
54+
if baseURL == "" {
55+
baseURL = "http://localhost:8080"
5256
}
5357

54-
stream := client.Instances.StreamLogsStreaming(
55-
ctx,
56-
instanceID,
57-
params,
58-
option.WithMiddleware(debugMiddleware(cmd.Root().Bool("debug"))),
59-
)
60-
defer stream.Close()
58+
u, err := url.Parse(baseURL)
59+
if err != nil {
60+
return fmt.Errorf("invalid base URL: %w", err)
61+
}
62+
u.Path = fmt.Sprintf("/instances/%s/logs", instanceID)
63+
64+
// Add query parameters
65+
q := u.Query()
66+
q.Set("tail", fmt.Sprintf("%d", cmd.Int("tail")))
67+
if cmd.Bool("follow") {
68+
q.Set("follow", "true")
69+
}
70+
u.RawQuery = q.Encode()
71+
72+
// Make HTTP request
73+
req, err := http.NewRequestWithContext(ctx, "GET", u.String(), nil)
74+
if err != nil {
75+
return fmt.Errorf("failed to create request: %w", err)
76+
}
77+
78+
apiKey := os.Getenv("HYPEMAN_API_KEY")
79+
if apiKey != "" {
80+
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
81+
}
82+
83+
resp, err := http.DefaultClient.Do(req)
84+
if err != nil {
85+
return fmt.Errorf("failed to fetch logs: %w", err)
86+
}
87+
defer resp.Body.Close()
6188

62-
for stream.Next() {
63-
fmt.Printf("%s\n", stream.Current())
89+
if resp.StatusCode != http.StatusOK {
90+
body, _ := io.ReadAll(resp.Body)
91+
return fmt.Errorf("failed to fetch logs (HTTP %d): %s", resp.StatusCode, string(body))
6492
}
6593

66-
return stream.Err()
94+
// Stream the response to stdout
95+
_, err = io.Copy(os.Stdout, resp.Body)
96+
return err
6797
}
6898

6999

0 commit comments

Comments
 (0)