mirror of
https://github.com/LukeHagar/slinky.git
synced 2025-12-06 12:47:45 +00:00
Refactor string splitting in check.go and fsurls.go to use strings.SplitSeq for improved performance. Enhance debug output for .gitignore and .slinkignore file handling, providing clearer logging during file checks and reads.
This commit is contained in:
@@ -40,7 +40,7 @@ func init() {
|
|||||||
// Parse targets: allow comma-separated chunks
|
// Parse targets: allow comma-separated chunks
|
||||||
var raw []string
|
var raw []string
|
||||||
for _, a := range args {
|
for _, a := range args {
|
||||||
for _, part := range strings.Split(a, ",") {
|
for part := range strings.SplitSeq(a, ",") {
|
||||||
p := strings.TrimSpace(part)
|
p := strings.TrimSpace(part)
|
||||||
if p != "" {
|
if p != "" {
|
||||||
raw = append(raw, toSlash(p))
|
raw = append(raw, toSlash(p))
|
||||||
@@ -115,6 +115,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
merge(res, "", true)
|
merge(res, "", true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2) Collect for each concrete root
|
// 2) Collect for each concrete root
|
||||||
for _, r := range roots {
|
for _, r := range roots {
|
||||||
clean := toSlash(filepath.Clean(r.path))
|
clean := toSlash(filepath.Clean(r.path))
|
||||||
|
|||||||
@@ -578,39 +578,89 @@ func extractCandidateMatches(content string) []matchCandidate {
|
|||||||
func loadGitIgnore(root string) *ignore.GitIgnore {
|
func loadGitIgnore(root string) *ignore.GitIgnore {
|
||||||
var lines []string
|
var lines []string
|
||||||
gi := filepath.Join(root, ".gitignore")
|
gi := filepath.Join(root, ".gitignore")
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Checking for .gitignore at: %s\n", gi)
|
||||||
|
}
|
||||||
|
if _, err := os.Stat(gi); err != nil {
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: .gitignore not found at: %s\n", gi)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Reading .gitignore from: %s\n", gi)
|
||||||
|
}
|
||||||
if b, err := os.ReadFile(gi); err == nil {
|
if b, err := os.ReadFile(gi); err == nil {
|
||||||
for _, ln := range strings.Split(string(b), "\n") {
|
for ln := range strings.SplitSeq(string(b), "\n") {
|
||||||
lines = append(lines, ln)
|
lines = append(lines, ln)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ge := filepath.Join(root, ".git", "info", "exclude")
|
ge := filepath.Join(root, ".git", "info", "exclude")
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Checking for .git/info/exclude at: %s\n", ge)
|
||||||
|
}
|
||||||
|
if _, err := os.Stat(ge); err != nil {
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: .git/info/exclude not found at: %s\n", ge)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Reading .git/info/exclude from: %s\n", ge)
|
||||||
|
}
|
||||||
if b, err := os.ReadFile(ge); err == nil {
|
if b, err := os.ReadFile(ge); err == nil {
|
||||||
for _, ln := range strings.Split(string(b), "\n") {
|
for ln := range strings.SplitSeq(string(b), "\n") {
|
||||||
lines = append(lines, ln)
|
lines = append(lines, ln)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(lines) == 0 {
|
if len(lines) == 0 {
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: .gitignore or .git/info/exclude is empty\n")
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Compiling .gitignore and .git/info/exclude\n")
|
||||||
|
}
|
||||||
return ignore.CompileIgnoreLines(lines...)
|
return ignore.CompileIgnoreLines(lines...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// .slinkignore support
|
// .slinkignore support
|
||||||
type slinkyIgnore struct {
|
type slinkyIgnore struct {
|
||||||
IgnorePaths []string `json:"ignorePaths"`
|
IgnorePaths []string `json:"ignorePaths" optional:"true"`
|
||||||
IgnoreURLs []string `json:"ignoreURLs"`
|
IgnoreURLs []string `json:"ignoreURLs" optional:"true"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadSlinkyIgnore(root string) (*ignore.GitIgnore, []string) {
|
func loadSlinkyIgnore(root string) (*ignore.GitIgnore, []string) {
|
||||||
cfgPath := filepath.Join(root, ".slinkignore")
|
cfgPath := filepath.Join(root, ".slinkignore")
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Checking for .slinkignore at: %s\n", cfgPath)
|
||||||
|
}
|
||||||
|
if _, err := os.Stat(cfgPath); err != nil {
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: .slinkignore not found at: %s\n", cfgPath)
|
||||||
|
}
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Reading .slinkignore from: %s\n", cfgPath)
|
||||||
|
}
|
||||||
b, err := os.ReadFile(cfgPath)
|
b, err := os.ReadFile(cfgPath)
|
||||||
if err != nil || len(b) == 0 {
|
if err != nil || len(b) == 0 {
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: .slinkignore is empty or not found at: %s\n", cfgPath)
|
||||||
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
var cfg slinkyIgnore
|
var cfg slinkyIgnore
|
||||||
if jerr := json.Unmarshal(b, &cfg); jerr != nil {
|
if jerr := json.Unmarshal(b, &cfg); jerr != nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
if isDebugEnv() {
|
||||||
|
fmt.Printf("::debug:: Loaded .slinkignore from: %s\n", cfgPath)
|
||||||
|
fmt.Printf("::debug:: IgnorePaths: %v\n", cfg.IgnorePaths)
|
||||||
|
fmt.Printf("::debug:: IgnoreURLs: %v\n", cfg.IgnoreURLs)
|
||||||
|
}
|
||||||
var ign *ignore.GitIgnore
|
var ign *ignore.GitIgnore
|
||||||
if len(cfg.IgnorePaths) > 0 {
|
if len(cfg.IgnorePaths) > 0 {
|
||||||
ign = ignore.CompileIgnoreLines(cfg.IgnorePaths...)
|
ign = ignore.CompileIgnoreLines(cfg.IgnorePaths...)
|
||||||
|
|||||||
Reference in New Issue
Block a user