with about plugins
This commit is contained in:
57
pkg/charcontext/context_root.go
Normal file
57
pkg/charcontext/context_root.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package charcontext
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"os"
|
||||
"path"
|
||||
)
|
||||
|
||||
var ErrNoContextFound = errors.New("could not find project root")
|
||||
|
||||
const CharFileName = ".char.yml"
|
||||
|
||||
func FindLocalRoot(ctx context.Context) (string, error) {
|
||||
curdir, err := os.Getwd()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return recursiveFindLocalRoot(ctx, curdir)
|
||||
|
||||
//output, err := exec.Command("git", "rev-parse", "--show-toplevel").CombinedOutput()
|
||||
//if err != nil {
|
||||
// return "", err
|
||||
//}
|
||||
//if len(output) == 0 {
|
||||
// return "", errors.New("could not find absolute path")
|
||||
//}
|
||||
//if _, err := os.Stat(string(output)); errors.Is(err, os.ErrNotExist) {
|
||||
// return "", fmt.Errorf("path does not exist %s", string(output))
|
||||
//}
|
||||
|
||||
//return string(output), nil
|
||||
}
|
||||
|
||||
func recursiveFindLocalRoot(ctx context.Context, localpath string) (string, error) {
|
||||
entries, err := os.ReadDir(localpath)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
for _, entry := range entries {
|
||||
if entry.Name() == CharFileName {
|
||||
return localpath, nil
|
||||
}
|
||||
}
|
||||
|
||||
if localpath == "/" {
|
||||
return "", ErrNoContextFound
|
||||
}
|
||||
|
||||
return recursiveFindLocalRoot(ctx, path.Dir(localpath))
|
||||
}
|
||||
|
||||
func ChangeToPath(_ context.Context, path string) error {
|
||||
return os.Chdir(path)
|
||||
}
|
Reference in New Issue
Block a user