mirror of https://github.com/databricks/cli.git
39 lines
766 B
Go
39 lines
766 B
Go
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
|
|
}
|