mirror of
https://github.com/tnypxl/rollup.git
synced 2025-12-15 15:03:17 +00:00
feat: Add ability to ignore specific files and/or file globs
This commit is contained in:
33
cmd/root.go
33
cmd/root.go
@@ -15,6 +15,7 @@ var (
|
|||||||
path string
|
path string
|
||||||
fileTypes string
|
fileTypes string
|
||||||
codeGenPatterns string
|
codeGenPatterns string
|
||||||
|
ignorePatterns string
|
||||||
configFile string
|
configFile string
|
||||||
cfg *config.Config
|
cfg *config.Config
|
||||||
)
|
)
|
||||||
@@ -52,6 +53,7 @@ func init() {
|
|||||||
rootCmd.Flags().StringVarP(&path, "path", "p", ".", "Path to the project directory")
|
rootCmd.Flags().StringVarP(&path, "path", "p", ".", "Path to the project directory")
|
||||||
rootCmd.Flags().StringVarP(&fileTypes, "types", "t", ".go,.md,.txt", "Comma-separated list of file extensions to include")
|
rootCmd.Flags().StringVarP(&fileTypes, "types", "t", ".go,.md,.txt", "Comma-separated list of file extensions to include")
|
||||||
rootCmd.Flags().StringVarP(&codeGenPatterns, "codegen", "g", "", "Comma-separated list of glob patterns for code-generated files")
|
rootCmd.Flags().StringVarP(&codeGenPatterns, "codegen", "g", "", "Comma-separated list of glob patterns for code-generated files")
|
||||||
|
rootCmd.Flags().StringVarP(&ignorePatterns, "ignore", "i", "", "Comma-separated list of glob patterns for files to ignore")
|
||||||
rootCmd.Flags().StringVarP(&configFile, "config", "f", "", "Path to the config file (default: rollup.yml in the current directory)")
|
rootCmd.Flags().StringVarP(&configFile, "config", "f", "", "Path to the config file (default: rollup.yml in the current directory)")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,9 +102,25 @@ func isCodeGenerated(filePath string, patterns []string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isIgnored(filePath string, patterns []string) bool {
|
||||||
|
for _, pattern := range patterns {
|
||||||
|
if strings.Contains(pattern, "**") {
|
||||||
|
if matchGlob(pattern, filePath) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
matched, err := filepath.Match(pattern, filepath.Base(filePath))
|
||||||
|
if err == nil && matched {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func runRollup() error {
|
func runRollup() error {
|
||||||
// Use config if available, otherwise use command-line flags
|
// Use config if available, otherwise use command-line flags
|
||||||
var types, codeGenList []string
|
var types, codeGenList, ignoreList []string
|
||||||
if cfg != nil && len(cfg.FileTypes) > 0 {
|
if cfg != nil && len(cfg.FileTypes) > 0 {
|
||||||
types = cfg.FileTypes
|
types = cfg.FileTypes
|
||||||
} else {
|
} else {
|
||||||
@@ -113,6 +131,11 @@ func runRollup() error {
|
|||||||
} else {
|
} else {
|
||||||
codeGenList = strings.Split(codeGenPatterns, ",")
|
codeGenList = strings.Split(codeGenPatterns, ",")
|
||||||
}
|
}
|
||||||
|
if cfg != nil && len(cfg.Ignore) > 0 {
|
||||||
|
ignoreList = cfg.Ignore
|
||||||
|
} else {
|
||||||
|
ignoreList = strings.Split(ignorePatterns, ",")
|
||||||
|
}
|
||||||
|
|
||||||
// Get the absolute path
|
// Get the absolute path
|
||||||
absPath, err := filepath.Abs(path)
|
absPath, err := filepath.Abs(path)
|
||||||
@@ -145,6 +168,13 @@ func runRollup() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
relPath, _ := filepath.Rel(absPath, path)
|
||||||
|
|
||||||
|
// Check if the file should be ignored
|
||||||
|
if isIgnored(relPath, ignoreList) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
ext := filepath.Ext(path)
|
ext := filepath.Ext(path)
|
||||||
for _, t := range types {
|
for _, t := range types {
|
||||||
if ext == "."+t {
|
if ext == "."+t {
|
||||||
@@ -156,7 +186,6 @@ func runRollup() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if the file is code-generated
|
// Check if the file is code-generated
|
||||||
relPath, _ := filepath.Rel(absPath, path)
|
|
||||||
isCodeGen := isCodeGenerated(relPath, codeGenList)
|
isCodeGen := isCodeGenerated(relPath, codeGenList)
|
||||||
codeGenNote := ""
|
codeGenNote := ""
|
||||||
if isCodeGen {
|
if isCodeGen {
|
||||||
|
|||||||
Reference in New Issue
Block a user