mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-04-24 03:00:15 -04:00
refactor: rename fabric_code tool to code_helper for clarity
## CHANGES - Rename tool from `fabric_code` to `code_helper` - Update all documentation references to the tool - Update installation instructions in README - Modify usage examples in documentation - Update tool's self-description and help text
This commit is contained in:
87
plugins/tools/code_helper/main.go
Normal file
87
plugins/tools/code_helper/main.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Define command line flags
|
||||
maxDepth := flag.Int("depth", 3, "Maximum directory depth to scan")
|
||||
ignorePatterns := flag.String("ignore", ".git,node_modules,vendor", "Comma-separated patterns to ignore")
|
||||
outputFile := flag.String("out", "", "Output file (default: stdout)")
|
||||
showHelp := flag.Bool("help", false, "Show help message")
|
||||
|
||||
// Parse command line flags
|
||||
flag.Parse()
|
||||
|
||||
// Show help if requested or no arguments provided
|
||||
if *showHelp || flag.NArg() < 1 {
|
||||
printUsage()
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
// Get directory and instructions from positional arguments
|
||||
directory := flag.Arg(0)
|
||||
instructions := ""
|
||||
if flag.NArg() > 1 {
|
||||
instructions = flag.Arg(1)
|
||||
}
|
||||
|
||||
// Validate directory
|
||||
if _, err := os.Stat(directory); os.IsNotExist(err) {
|
||||
fmt.Fprintf(os.Stderr, "Error: Directory '%s' does not exist\n", directory)
|
||||
os.Exit(1)
|
||||
}
|
||||
// Parse ignore patterns
|
||||
ignoreList := ParseIgnorePatterns(*ignorePatterns)
|
||||
|
||||
// Scan directory and generate JSON
|
||||
var jsonData []byte
|
||||
var err error
|
||||
jsonData, err = ScanDirectory(directory, *maxDepth, instructions, ignoreList)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Write output
|
||||
if *outputFile != "" {
|
||||
if err := os.WriteFile(*outputFile, jsonData, 0644); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error writing to file: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
} else {
|
||||
fmt.Print(string(jsonData))
|
||||
}
|
||||
}
|
||||
|
||||
// ParseIgnorePatterns converts a comma-separated string of patterns to a slice
|
||||
func ParseIgnorePatterns(patterns string) []string {
|
||||
if patterns == "" {
|
||||
return nil
|
||||
}
|
||||
return strings.Split(patterns, ",")
|
||||
}
|
||||
|
||||
func printUsage() {
|
||||
fmt.Println(`code_helper - Code project scanner for use with Fabric AI
|
||||
|
||||
Usage:
|
||||
code_helper [options] <directory> [instructions]
|
||||
|
||||
Examples:
|
||||
# Scan current directory with instructions
|
||||
code_helper . "Add input validation to all user inputs"
|
||||
|
||||
# Scan specific directory with depth limit
|
||||
code_helper -depth 4 ./my-project "Implement error handling"
|
||||
|
||||
# Output to file instead of stdout
|
||||
code_helper -out project.json ./src "Fix security issues"
|
||||
|
||||
Options:`)
|
||||
flag.PrintDefaults()
|
||||
}
|
||||
Reference in New Issue
Block a user