databricks-cli/cmd/labs/project/helpers.go

39 lines
766 B
Go
Raw Permalink Normal View History

package project
import (
"context"
"encoding/json"
"errors"
"fmt"
"io/fs"
"os"
"path/filepath"
"github.com/databricks/cli/libs/env"
)
func PathInLabs(ctx context.Context, dirs ...string) (string, error) {
homeDir, err := env.UserHomeDir(ctx)
if err != nil {
return "", err
}
prefix := []string{homeDir, ".databricks", "labs"}
return filepath.Join(append(prefix, dirs...)...), nil
}
func tryLoadAndParseJSON[T any](jsonFile string) (*T, error) {
raw, err := os.ReadFile(jsonFile)
if errors.Is(err, fs.ErrNotExist) {
return nil, err
}
if err != nil {
return nil, fmt.Errorf("read %s: %w", jsonFile, err)
}
var v T
err = json.Unmarshal(raw, &v)
if err != nil {
return nil, fmt.Errorf("parse %s: %w", jsonFile, err)
}
return &v, nil
}