Add filter flag
This commit is contained in:
7
main.go
7
main.go
@@ -53,7 +53,6 @@ func main() {
|
||||
fmt.Fprintf(os.Stderr, " You can use any valid Lua code, including if statements, loops, etc.\n")
|
||||
fmt.Fprintf(os.Stderr, " Glob patterns are supported for file selection (*.xml, data/**.xml, etc.)\n")
|
||||
}
|
||||
// TODO: Implement -f flag for filtering recipes by name
|
||||
// TODO: Fix bed shitting when doing *.yml in barotrauma directory
|
||||
// TODO: Fix disaster:
|
||||
// fatal error: concurrent map writes
|
||||
@@ -111,6 +110,12 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
if *utils.Filter != "" {
|
||||
logger.Info("Filtering commands by name: %s", *utils.Filter)
|
||||
commands = utils.FilterCommands(commands, *utils.Filter)
|
||||
logger.Info("Filtered %d commands", len(commands))
|
||||
}
|
||||
|
||||
// Then aggregate all the globs and deduplicate them
|
||||
globs := utils.AggregateGlobs(commands)
|
||||
logger.Debug("Aggregated %d globs before deduplication", utils.CountGlobsBeforeDedup(commands))
|
||||
|
@@ -12,4 +12,5 @@ var (
|
||||
LogLevel = flag.String("loglevel", "INFO", "Set log level: ERROR, WARNING, INFO, DEBUG, TRACE")
|
||||
Cookfile = flag.String("cook", "**/cook.yml", "Path to cook config files, can be globbed")
|
||||
ParallelFiles = flag.Int("P", 100, "Number of files to process in parallel")
|
||||
Filter = flag.String("filter", "", "Filter commands before running them")
|
||||
)
|
||||
|
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"modify/logger"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/bmatcuk/doublestar/v4"
|
||||
"gopkg.in/yaml.v3"
|
||||
@@ -206,3 +207,16 @@ func CountGlobsBeforeDedup(commands []ModifyCommand) int {
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
func FilterCommands(commands []ModifyCommand, filter string) []ModifyCommand {
|
||||
filteredCommands := []ModifyCommand{}
|
||||
filters := strings.Split(filter, ",")
|
||||
for _, cmd := range commands {
|
||||
for _, filter := range filters {
|
||||
if strings.Contains(cmd.Name, filter) {
|
||||
filteredCommands = append(filteredCommands, cmd)
|
||||
}
|
||||
}
|
||||
}
|
||||
return filteredCommands
|
||||
}
|
Reference in New Issue
Block a user