34 lines
730 B
Go
34 lines
730 B
Go
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func workspaceDir(w string) string {
|
|
return strings.TrimSpace(w)
|
|
}
|
|
|
|
func prepareWorkspaceDir(w string) (string, error) {
|
|
dir := workspaceDir(w)
|
|
if dir == "" {
|
|
return "", nil
|
|
}
|
|
info, err := os.Stat(dir)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return "", fmt.Errorf("cli adapter: workspace not found: %s", dir)
|
|
}
|
|
return "", fmt.Errorf("cli adapter: workspace inaccessible: %s: %w", dir, err)
|
|
}
|
|
if !info.IsDir() {
|
|
return "", fmt.Errorf("cli adapter: workspace is not a directory: %s", dir)
|
|
}
|
|
if f, err := os.Open(dir); err != nil {
|
|
return "", fmt.Errorf("cli adapter: workspace inaccessible: %s: %w", dir, err)
|
|
} else {
|
|
_ = f.Close()
|
|
}
|
|
return dir, nil
|
|
}
|