Expand logging, and daemonless command support.

This adds more logging in certain places, and adds logging to the CLI.
It also allows for certain commands in the CLI to be used without a
daemon connection, namely `init`, which previously required the daemon
to be connected, but now does not since it doesnt need it.
This commit is contained in:
Zoe
2025-05-08 09:53:41 -05:00
parent 5bb696052a
commit c51eca5dab
16 changed files with 538 additions and 470 deletions

View File

@@ -6,17 +6,26 @@ import (
"io"
"net/http"
"strings"
"go.uber.org/zap"
)
func isOk(statusCode int) bool {
return statusCode >= 200 && statusCode < 300
}
// make a function that makes an http GET request to the daemon and returns data of type T
func GetRequest[T any](url string) (*T, error) {
func GetRequest[T any](url string, logger *zap.SugaredLogger) (*T, error) {
resp, err := http.Get(url)
if err != nil {
logger.Debugw("GET request failed", zap.String("url", url), zap.Error(err))
return nil, fmt.Errorf("http get request failed: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
logger.Debugw("GET request", zap.String("url", url), resp)
if !isOk(resp.StatusCode) {
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("error reading response body: %v", err)
@@ -35,7 +44,7 @@ func GetRequest[T any](url string) (*T, error) {
return &data, nil
}
func DeleteRequest(url string) error {
func DeleteRequest(url string, logger *zap.SugaredLogger) error {
req, err := http.NewRequest("DELETE", url, nil)
if err != nil {
return fmt.Errorf("failed to delete: %v", err)
@@ -46,7 +55,9 @@ func DeleteRequest(url string) error {
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
logger.Debugw("DELETE request", zap.String("url", url), resp)
if !isOk(resp.StatusCode) {
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("error reading response body: %v", err)
@@ -60,7 +71,7 @@ func DeleteRequest(url string) error {
return nil
}
func PutRequest(url string, data io.Reader) error {
func PutRequest(url string, data io.Reader, logger *zap.SugaredLogger) error {
req, err := http.NewRequest("PUT", url, data)
if err != nil {
return fmt.Errorf("failed to put: %v", err)
@@ -71,7 +82,9 @@ func PutRequest(url string, data io.Reader) error {
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
logger.Debugw("PUT request", zap.String("url", url), resp)
if !isOk(resp.StatusCode) {
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("error reading response body: %v", err)