|
|
|
@@ -1,8 +1,8 @@
|
|
|
|
|
package utils
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"cook/logger"
|
|
|
|
|
"fmt"
|
|
|
|
|
"modify/logger"
|
|
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"strings"
|
|
|
|
@@ -230,69 +230,38 @@ func ExpandGLobs(patterns map[string]struct{}) ([]string, error) {
|
|
|
|
|
func LoadCommands(args []string) ([]ModifyCommand, error) {
|
|
|
|
|
commands := []ModifyCommand{}
|
|
|
|
|
|
|
|
|
|
logger.Info("Loading commands from cook files: %s", *Cookfile)
|
|
|
|
|
newcommands, err := LoadCommandsFromCookFiles(*Cookfile)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("failed to load commands from cook files: %w", err)
|
|
|
|
|
}
|
|
|
|
|
logger.Info("Successfully loaded %d commands from cook files", len(newcommands))
|
|
|
|
|
commands = append(commands, newcommands...)
|
|
|
|
|
logger.Info("Now total commands: %d", len(commands))
|
|
|
|
|
|
|
|
|
|
logger.Info("Loading commands from arguments: %v", args)
|
|
|
|
|
newcommands, err = LoadCommandFromArgs(args)
|
|
|
|
|
if err != nil {
|
|
|
|
|
if len(commands) == 0 {
|
|
|
|
|
return nil, fmt.Errorf("failed to load commands from args: %w", err)
|
|
|
|
|
logger.Info("Loading commands from cook files: %s", args)
|
|
|
|
|
for _, arg := range args {
|
|
|
|
|
newcommands, err := LoadCommandsFromCookFiles(arg)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("failed to load commands from cook files: %w", err)
|
|
|
|
|
}
|
|
|
|
|
logger.Warning("Failed to load commands from args: %v", err)
|
|
|
|
|
logger.Info("Successfully loaded %d commands from cook iles", len(newcommands))
|
|
|
|
|
commands = append(commands, newcommands...)
|
|
|
|
|
logger.Info("Now total commands: %d", len(commands))
|
|
|
|
|
}
|
|
|
|
|
logger.Info("Successfully loaded %d commands from args", len(newcommands))
|
|
|
|
|
commands = append(commands, newcommands...)
|
|
|
|
|
logger.Info("Now total commands: %d", len(commands))
|
|
|
|
|
|
|
|
|
|
logger.Info("Loaded %d commands from all cook f", len(commands))
|
|
|
|
|
return commands, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func LoadCommandFromArgs(args []string) ([]ModifyCommand, error) {
|
|
|
|
|
// Cannot reset without git, right?
|
|
|
|
|
if *ResetFlag {
|
|
|
|
|
*GitFlag = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(args) < 3 {
|
|
|
|
|
return nil, fmt.Errorf("at least %d arguments are required", 3)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
command := ModifyCommand{
|
|
|
|
|
Regex: args[0],
|
|
|
|
|
Lua: args[1],
|
|
|
|
|
Files: args[2:],
|
|
|
|
|
Git: *GitFlag,
|
|
|
|
|
Reset: *ResetFlag,
|
|
|
|
|
LogLevel: *LogLevel,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := command.Validate(); err != nil {
|
|
|
|
|
return nil, fmt.Errorf("invalid command: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return []ModifyCommand{command}, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func LoadCommandsFromCookFiles(s string) ([]ModifyCommand, error) {
|
|
|
|
|
cwd, err := os.Getwd()
|
|
|
|
|
func LoadCommandsFromCookFiles(pattern string) ([]ModifyCommand, error) {
|
|
|
|
|
root, pattern, err := FigureOutGlobRoot(pattern)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("failed to get current working directory: %w", err)
|
|
|
|
|
return nil, fmt.Errorf("failed to figure out glob root: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
commands := []ModifyCommand{}
|
|
|
|
|
cookFiles, err := doublestar.Glob(os.DirFS(cwd), *Cookfile)
|
|
|
|
|
cookFiles, err := doublestar.Glob(os.DirFS(root), pattern)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("failed to glob cook files: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, cookFile := range cookFiles {
|
|
|
|
|
cookFile = filepath.Clean(cookFile)
|
|
|
|
|
cookFile = strings.ReplaceAll(cookFile, "\\", "/")
|
|
|
|
|
logger.Info("Loading commands from cook file: %s", cookFile)
|
|
|
|
|
|
|
|
|
|
cookFileData, err := os.ReadFile(cookFile)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("failed to read cook file: %w", err)
|
|
|
|
|