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, " 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")
|
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 bed shitting when doing *.yml in barotrauma directory
|
||||||
// TODO: Fix disaster:
|
// TODO: Fix disaster:
|
||||||
// fatal error: concurrent map writes
|
// fatal error: concurrent map writes
|
||||||
@@ -111,6 +110,12 @@ func main() {
|
|||||||
return
|
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
|
// Then aggregate all the globs and deduplicate them
|
||||||
globs := utils.AggregateGlobs(commands)
|
globs := utils.AggregateGlobs(commands)
|
||||||
logger.Debug("Aggregated %d globs before deduplication", utils.CountGlobsBeforeDedup(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")
|
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")
|
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")
|
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"
|
"fmt"
|
||||||
"modify/logger"
|
"modify/logger"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/bmatcuk/doublestar/v4"
|
"github.com/bmatcuk/doublestar/v4"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
@@ -206,3 +207,16 @@ func CountGlobsBeforeDedup(commands []ModifyCommand) int {
|
|||||||
}
|
}
|
||||||
return count
|
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