MCPcopy Create free account
hub / github.com/diillson/chatcli / loadIgnorePatterns

Function loadIgnorePatterns

utils/file_utils.go:437–470  ·  view source on GitHub ↗

loadIgnorePatterns localiza e carrega o arquivo .chatcliignore apropriado seguindo uma hierarquia de precedência.

(rootDir string, logger *zap.Logger)

Source from the content-addressed store, hash-verified

435
436// loadIgnorePatterns localiza e carrega o arquivo .chatcliignore apropriado seguindo uma hierarquia de precedência.
437func loadIgnorePatterns(rootDir string, logger *zap.Logger) (excludeDirs []string, excludePatterns []string) {
438 // 1. Prioridade Máxima: Variável de Ambiente CHATCLI_IGNORE_PATH
439 if ignorePathEnv := os.Getenv("CHATCLI_IGNORE"); ignorePathEnv != "" {
440 expandedPath, err := ExpandPath(ignorePathEnv)
441 if err != nil {
442 logger.Warn("Não foi possível expandir o caminho de CHATCLI_IGNORE.", zap.String("path", ignorePathEnv), zap.Error(err))
443 return nil, nil
444 }
445 logger.Info("Usando arquivo de ignore definido pela variável de ambiente.", zap.String("path", expandedPath))
446 return readIgnoreFile(expandedPath, logger)
447 }
448
449 // 2. Prioridade Média: Arquivo .chatcliignore no diretório do projeto
450 projectIgnorePath := filepath.Join(rootDir, ".chatignore")
451 dirs, patterns := readIgnoreFile(projectIgnorePath, logger)
452 if dirs != nil || patterns != nil {
453 logger.Info("Usando arquivo de ignore específico do projeto.", zap.String("path", projectIgnorePath))
454 return dirs, patterns
455 }
456
457 // 3. Prioridade Baixa: Arquivo .chatcliignore global no diretório de configuração do usuário
458 homeDir, err := GetHomeDir()
459 if err == nil {
460 globalIgnorePath := filepath.Join(homeDir, ".chatcli", ".chatignore")
461 dirs, patterns := readIgnoreFile(globalIgnorePath, logger)
462 if dirs != nil || patterns != nil {
463 logger.Info("Usando arquivo de ignore global do usuário.", zap.String("path", globalIgnorePath))
464 return dirs, patterns
465 }
466 }
467
468 // 4. Fallback: Nenhum arquivo de ignore encontrado
469 return nil, nil
470}
471
472// readIgnoreFile lê um único arquivo de ignore e retorna os padrões de exclusão.
473// Retorna slices nulos se o arquivo não existir ou não puder ser lido.

Callers 2

ProcessDirectoryFunction · 0.85
CountMatchingFilesFunction · 0.85

Calls 7

ExpandPathFunction · 0.85
readIgnoreFileFunction · 0.85
GetHomeDirFunction · 0.85
WarnMethod · 0.80
ErrorMethod · 0.65
InfoMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected