initial commit

This commit is contained in:
2025-02-03 22:55:03 -07:00
commit 664b6e1a77
7 changed files with 110 additions and 0 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

9
.idea/llm-file-parser.iml generated Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/llm-file-parser.iml" filepath="$PROJECT_DIR$/.idea/llm-file-parser.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

3
go.mod Normal file
View File

@ -0,0 +1,3 @@
module llm-file-parser
go 1.23

BIN
llmparse.exe Normal file

Binary file not shown.

76
main.go Normal file
View File

@ -0,0 +1,76 @@
package main
import (
"flag"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"path/filepath"
"regexp"
)
func main() {
// Define the output directory flag.
outDir := flag.String("out", ".", "Directory to write output files")
flag.Parse()
// Determine source of input - either a file or STDIN.
var data []byte
var err error
// If no positional arguments or "-" is provided, read from STDIN.
if flag.NArg() < 1 || flag.Arg(0) == "-" {
data, err = io.ReadAll(os.Stdin)
if err != nil {
log.Fatalf("Error reading from STDIN: %v", err)
}
} else {
inputFile := flag.Arg(0)
data, err = ioutil.ReadFile(inputFile)
if err != nil {
log.Fatalf("Error reading file %s: %v", inputFile, err)
}
}
text := string(data)
// Regular expression to match each file block.
// It matches a line starting with "File:" followed by the file name,
// then a divider line with dashes, then captures everything until the next divider.
re := regexp.MustCompile(`(?s)File:\s*(.+?)\s*\n-+\n(.*?)(\n-+\n|$)`)
matches := re.FindAllStringSubmatch(text, -1)
if matches == nil {
log.Println("No file entries found in the input.")
return
}
// Ensure the output directory exists
if err := os.MkdirAll(*outDir, os.ModePerm); err != nil {
log.Fatalf("Error creating output directory %s: %v", *outDir, err)
}
for _, match := range matches {
// match[1] will be the file name, match[2] the file content.
fileName := match[1]
fileContent := match[2]
// Create the full file path using the output directory.
fullPath := filepath.Join(*outDir, fileName)
// Ensure that the directory for the file exists (in case there's nesting).
dir := filepath.Dir(fullPath)
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
log.Printf("Error creating directory %s: %v", dir, err)
continue
}
if err := ioutil.WriteFile(fullPath, []byte(fileContent), 0644); err != nil {
log.Printf("Error writing to file %s: %v", fullPath, err)
} else {
fmt.Printf("Created file: %s\n", fullPath)
}
}
}