Compare commits
	
		
			6 Commits
		
	
	
		
			v3.5.0
			...
			58586395fb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 58586395fb | |||
| c5a68af5e6 | |||
| b4c0284734 | |||
| c5d1dad8de | |||
| 4ff2ee80ee | |||
| 633eebfd2a | 
							
								
								
									
										28
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							@@ -32,6 +32,28 @@
 | 
				
			|||||||
				"cookassistant.yml",
 | 
									"cookassistant.yml",
 | 
				
			||||||
			]
 | 
								]
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								"name": "Launch Package (Quasimorph cookfile)",
 | 
				
			||||||
 | 
								"type": "go",
 | 
				
			||||||
 | 
								"request": "launch",
 | 
				
			||||||
 | 
								"mode": "auto",
 | 
				
			||||||
 | 
								"program": "${workspaceFolder}",
 | 
				
			||||||
 | 
								"cwd": "C:/Users/Administrator/Seafile/Games-Quasimorph",
 | 
				
			||||||
 | 
								"args": [
 | 
				
			||||||
 | 
									"cook.yml",
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								"name": "Launch Package (Rimworld cookfile)",
 | 
				
			||||||
 | 
								"type": "go",
 | 
				
			||||||
 | 
								"request": "launch",
 | 
				
			||||||
 | 
								"mode": "auto",
 | 
				
			||||||
 | 
								"program": "${workspaceFolder}",
 | 
				
			||||||
 | 
								"cwd": "C:/Users/Administrator/Seafile/Games-Rimworld/294100",
 | 
				
			||||||
 | 
								"args": [
 | 
				
			||||||
 | 
									"cookVehicles.yml",
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			"name": "Launch Package (Workspace)",
 | 
								"name": "Launch Package (Workspace)",
 | 
				
			||||||
			"type": "go",
 | 
								"type": "go",
 | 
				
			||||||
@@ -39,11 +61,7 @@
 | 
				
			|||||||
			"mode": "auto",
 | 
								"mode": "auto",
 | 
				
			||||||
			"program": "${workspaceFolder}",
 | 
								"program": "${workspaceFolder}",
 | 
				
			||||||
			"args": [
 | 
								"args": [
 | 
				
			||||||
				"-loglevel",
 | 
									"tester.yml",
 | 
				
			||||||
				"trace",
 | 
					 | 
				
			||||||
				"(?-s)LightComponent!anyrange=\"(!num)\"",
 | 
					 | 
				
			||||||
				"*4",
 | 
					 | 
				
			||||||
				"**/Outpost*.xml"
 | 
					 | 
				
			||||||
			]
 | 
								]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	]
 | 
						]
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								main.go
									
									
									
									
									
								
							@@ -8,12 +8,12 @@ import (
 | 
				
			|||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"modify/processor"
 | 
						"cook/processor"
 | 
				
			||||||
	"modify/utils"
 | 
						"cook/utils"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/go-git/go-git/v5"
 | 
						"github.com/go-git/go-git/v5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"modify/logger"
 | 
						"cook/logger"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type GlobalStats struct {
 | 
					type GlobalStats struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	lua "github.com/yuin/gopher-lua"
 | 
						lua "github.com/yuin/gopher-lua"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"modify/logger"
 | 
						"cook/logger"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Maybe we make this an interface again for the shits and giggles
 | 
					// Maybe we make this an interface again for the shits and giggles
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,8 +9,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	lua "github.com/yuin/gopher-lua"
 | 
						lua "github.com/yuin/gopher-lua"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"modify/logger"
 | 
						"cook/logger"
 | 
				
			||||||
	"modify/utils"
 | 
						"cook/utils"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CaptureGroup struct {
 | 
					type CaptureGroup struct {
 | 
				
			||||||
@@ -33,6 +33,11 @@ func ProcessRegex(content string, command utils.ModifyCommand, filename string)
 | 
				
			|||||||
	// We don't HAVE to do this multiple times for a pattern
 | 
						// We don't HAVE to do this multiple times for a pattern
 | 
				
			||||||
	// But it's quick enough for us to not care
 | 
						// But it's quick enough for us to not care
 | 
				
			||||||
	pattern := resolveRegexPlaceholders(command.Regex)
 | 
						pattern := resolveRegexPlaceholders(command.Regex)
 | 
				
			||||||
 | 
						// I'm not too happy about having to trim regex, we could have meaningful whitespace or newlines
 | 
				
			||||||
 | 
						// But it's a compromise that allows us to use | in yaml
 | 
				
			||||||
 | 
						// Otherwise we would have to escape every god damn pair of quotation marks
 | 
				
			||||||
 | 
						// And a bunch of other shit
 | 
				
			||||||
 | 
						pattern = strings.TrimSpace(pattern)
 | 
				
			||||||
	logger.Debug("Compiling regex pattern: %s", pattern)
 | 
						logger.Debug("Compiling regex pattern: %s", pattern)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	patternCompileStart := time.Now()
 | 
						patternCompileStart := time.Now()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,8 @@ package processor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
 | 
						"cook/utils"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"modify/utils"
 | 
					 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ package processor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"modify/logger"
 | 
						"cook/logger"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
package regression
 | 
					package regression
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"modify/processor"
 | 
						"cook/processor"
 | 
				
			||||||
	"modify/utils"
 | 
						"cook/utils"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								utils/file.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								utils/file.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func CleanPath(path string) string {
 | 
				
			||||||
 | 
						path = filepath.Clean(path)
 | 
				
			||||||
 | 
						path = strings.ReplaceAll(path, "\\", "/")
 | 
				
			||||||
 | 
						return path
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ToAbs(path string) string {
 | 
				
			||||||
 | 
						if filepath.IsAbs(path) {
 | 
				
			||||||
 | 
							return CleanPath(path)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						cwd, err := os.Getwd()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return CleanPath(path)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return CleanPath(filepath.Join(cwd, path))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -10,7 +10,6 @@ var (
 | 
				
			|||||||
	// Deprecated
 | 
						// Deprecated
 | 
				
			||||||
	ResetFlag     = flag.Bool("reset", false, "Reset files to their original state")
 | 
						ResetFlag     = flag.Bool("reset", false, "Reset files to their original state")
 | 
				
			||||||
	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")
 | 
					 | 
				
			||||||
	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")
 | 
						Filter        = flag.String("filter", "", "Filter commands before running them")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +1,14 @@
 | 
				
			|||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"cook/logger"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"modify/logger"
 | 
					 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/go-git/go-git/v5/plumbing/object"
 | 
					 | 
				
			||||||
	"github.com/go-git/go-git/v5"
 | 
						"github.com/go-git/go-git/v5"
 | 
				
			||||||
 | 
						"github.com/go-git/go-git/v5/plumbing/object"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
@@ -94,4 +94,4 @@ func CleanupGitFiles(files []string) error {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,10 @@
 | 
				
			|||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"cook/logger"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"modify/logger"
 | 
					 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/bmatcuk/doublestar/v4"
 | 
						"github.com/bmatcuk/doublestar/v4"
 | 
				
			||||||
@@ -56,6 +57,24 @@ func Matches(path string, glob string) (bool, error) {
 | 
				
			|||||||
	return matches, nil
 | 
						return matches, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func SplitPattern(pattern string) (string, string) {
 | 
				
			||||||
 | 
						static, pattern := doublestar.SplitPattern(pattern)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cwd, err := os.Getwd()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return "", ""
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if static == "" {
 | 
				
			||||||
 | 
							static = cwd
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !filepath.IsAbs(static) {
 | 
				
			||||||
 | 
							static = filepath.Join(cwd, static)
 | 
				
			||||||
 | 
							static = filepath.Clean(static)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						static = strings.ReplaceAll(static, "\\", "/")
 | 
				
			||||||
 | 
						return static, pattern
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type FileCommandAssociation struct {
 | 
					type FileCommandAssociation struct {
 | 
				
			||||||
	File            string
 | 
						File            string
 | 
				
			||||||
	IsolateCommands []ModifyCommand
 | 
						IsolateCommands []ModifyCommand
 | 
				
			||||||
@@ -74,7 +93,10 @@ func AssociateFilesWithCommands(files []string, commands []ModifyCommand) (map[s
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		for _, command := range commands {
 | 
							for _, command := range commands {
 | 
				
			||||||
			for _, glob := range command.Files {
 | 
								for _, glob := range command.Files {
 | 
				
			||||||
				matches, err := Matches(file, glob)
 | 
									static, pattern := SplitPattern(glob)
 | 
				
			||||||
 | 
									file = strings.ReplaceAll(file, "\\", "/")
 | 
				
			||||||
 | 
									file = strings.Replace(file, static+`/`, "", 1)
 | 
				
			||||||
 | 
									matches, err := Matches(file, pattern)
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
					logger.Trace("Failed to match glob %s with file %s: %v", glob, file, err)
 | 
										logger.Trace("Failed to match glob %s with file %s: %v", glob, file, err)
 | 
				
			||||||
					continue
 | 
										continue
 | 
				
			||||||
@@ -110,6 +132,8 @@ func AggregateGlobs(commands []ModifyCommand) map[string]struct{} {
 | 
				
			|||||||
	globs := make(map[string]struct{})
 | 
						globs := make(map[string]struct{})
 | 
				
			||||||
	for _, command := range commands {
 | 
						for _, command := range commands {
 | 
				
			||||||
		for _, glob := range command.Files {
 | 
							for _, glob := range command.Files {
 | 
				
			||||||
 | 
								glob = strings.Replace(glob, "~", os.Getenv("HOME"), 1)
 | 
				
			||||||
 | 
								glob = strings.ReplaceAll(glob, "\\", "/")
 | 
				
			||||||
			globs[glob] = struct{}{}
 | 
								globs[glob] = struct{}{}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -129,9 +153,11 @@ func ExpandGLobs(patterns map[string]struct{}) ([]string, error) {
 | 
				
			|||||||
	logger.Debug("Expanding patterns from directory: %s", cwd)
 | 
						logger.Debug("Expanding patterns from directory: %s", cwd)
 | 
				
			||||||
	for pattern := range patterns {
 | 
						for pattern := range patterns {
 | 
				
			||||||
		logger.Trace("Processing pattern: %s", pattern)
 | 
							logger.Trace("Processing pattern: %s", pattern)
 | 
				
			||||||
		matches, _ := doublestar.Glob(os.DirFS(cwd), pattern)
 | 
							static, pattern := SplitPattern(pattern)
 | 
				
			||||||
 | 
							matches, _ := doublestar.Glob(os.DirFS(static), pattern)
 | 
				
			||||||
		logger.Debug("Found %d matches for pattern %s", len(matches), pattern)
 | 
							logger.Debug("Found %d matches for pattern %s", len(matches), pattern)
 | 
				
			||||||
		for _, m := range matches {
 | 
							for _, m := range matches {
 | 
				
			||||||
 | 
								m = filepath.Join(static, m)
 | 
				
			||||||
			info, err := os.Stat(m)
 | 
								info, err := os.Stat(m)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				logger.Warning("Error getting file info for %s: %v", m, err)
 | 
									logger.Warning("Error getting file info for %s: %v", m, err)
 | 
				
			||||||
@@ -153,69 +179,35 @@ func ExpandGLobs(patterns map[string]struct{}) ([]string, error) {
 | 
				
			|||||||
func LoadCommands(args []string) ([]ModifyCommand, error) {
 | 
					func LoadCommands(args []string) ([]ModifyCommand, error) {
 | 
				
			||||||
	commands := []ModifyCommand{}
 | 
						commands := []ModifyCommand{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logger.Info("Loading commands from cook files: %s", *Cookfile)
 | 
						logger.Info("Loading commands from cook files: %s", args)
 | 
				
			||||||
	newcommands, err := LoadCommandsFromCookFiles(*Cookfile)
 | 
						for _, arg := range args {
 | 
				
			||||||
	if err != nil {
 | 
							newcommands, err := LoadCommandsFromCookFiles(arg)
 | 
				
			||||||
		return nil, fmt.Errorf("failed to load commands from cook files: %w", err)
 | 
							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.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
 | 
						return commands, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func LoadCommandFromArgs(args []string) ([]ModifyCommand, error) {
 | 
					func LoadCommandsFromCookFiles(pattern string) ([]ModifyCommand, error) {
 | 
				
			||||||
	// Cannot reset without git, right?
 | 
						static, pattern := SplitPattern(pattern)
 | 
				
			||||||
	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()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("failed to get current working directory: %w", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	commands := []ModifyCommand{}
 | 
						commands := []ModifyCommand{}
 | 
				
			||||||
	cookFiles, err := doublestar.Glob(os.DirFS(cwd), *Cookfile)
 | 
						cookFiles, err := doublestar.Glob(os.DirFS(static), pattern)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("failed to glob cook files: %w", err)
 | 
							return nil, fmt.Errorf("failed to glob cook files: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, cookFile := range cookFiles {
 | 
						for _, cookFile := range cookFiles {
 | 
				
			||||||
 | 
							cookFile = filepath.Join(static, cookFile)
 | 
				
			||||||
 | 
							cookFile = filepath.Clean(cookFile)
 | 
				
			||||||
 | 
							cookFile = strings.ReplaceAll(cookFile, "\\", "/")
 | 
				
			||||||
 | 
							logger.Info("Loading commands from cook file: %s", cookFile)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cookFileData, err := os.ReadFile(cookFile)
 | 
							cookFileData, err := os.ReadFile(cookFile)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return nil, fmt.Errorf("failed to read cook file: %w", err)
 | 
								return nil, fmt.Errorf("failed to read cook file: %w", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"cook/logger"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"modify/logger"
 | 
					 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user