Plandex_backup / app /cli /lib /context_paths.go
google-labs-jules[bot]
Final deployment for HF with landing page
93d826e
package lib
import (
"fmt"
"plandex-cli/fs"
"plandex-cli/types"
)
type ParseInputPathsParams struct {
FileOrDirPaths []string
BaseDir string
ProjectPaths *types.ProjectPaths
LoadParams *types.LoadContextParams
}
func ParseInputPaths(params ParseInputPathsParams) ([]string, error) {
fileOrDirPaths := params.FileOrDirPaths
baseDir := params.BaseDir
projectPaths := params.ProjectPaths
loadParams := params.LoadParams
resPaths := []string{}
for path := range projectPaths.AllPaths {
// see if it's a child of any of the fileOrDirPaths
found := false
for _, p := range fileOrDirPaths {
var err error
found, err = fs.IsSubpathOf(p, path, baseDir)
if err != nil {
return nil, fmt.Errorf("error checking if %s is a subpath of %s: %s", path, p, err)
}
if found {
break
}
}
if !found {
continue
}
if projectPaths.AllDirs[path] {
if !(loadParams.Recursive || loadParams.NamesOnly || loadParams.DefsOnly) {
// log.Println("path", path, "info.Name()", info.Name())
return nil, fmt.Errorf("cannot process directory %s: requires --recursive/-r, --tree, or --map flag", path)
}
// calculate directory depth from base
// depth := strings.Count(path[len(p):], string(filepath.Separator))
// if params.MaxDepth != -1 && depth > params.MaxDepth {
// return filepath.SkipDir
// }
if loadParams.NamesOnly {
// add directory name to results
resPaths = append(resPaths, path)
}
} else {
// add file path to results
resPaths = append(resPaths, path)
}
}
return resPaths, nil
}