add .dirmd and other metadata
This commit is contained in:
+59
-81
@@ -15,22 +15,9 @@ const (
|
||||
)
|
||||
|
||||
var DefaultIgnores = []string{
|
||||
".git",
|
||||
"node_modules",
|
||||
"vendor",
|
||||
"bin",
|
||||
"go.mod",
|
||||
"go.sum",
|
||||
"target",
|
||||
"build",
|
||||
"dist",
|
||||
"Cargo.lock",
|
||||
".idea",
|
||||
".vscode",
|
||||
"dependency-reduced-pom.xml",
|
||||
"__pycache__",
|
||||
"venv",
|
||||
"env",
|
||||
".git", "node_modules", "vendor", "bin", "go.mod", "go.sum",
|
||||
"target", "build", "dist", "Cargo.lock", ".idea", ".vscode",
|
||||
"dependency-reduced-pom.xml", "__pycache__", "venv", "env",
|
||||
}
|
||||
|
||||
var DefaultExts = []string{
|
||||
@@ -42,10 +29,7 @@ var DefaultExts = []string{
|
||||
".pdf", ".doc", ".docx", ".xls", ".xlsx",
|
||||
".pem", ".key", ".cert",
|
||||
".db", ".sqlite", ".sqlite3",
|
||||
".class",
|
||||
".jar",
|
||||
".war",
|
||||
".ear",
|
||||
".class", ".jar", ".war", ".ear",
|
||||
".pyc", ".pyo",
|
||||
}
|
||||
|
||||
@@ -59,33 +43,28 @@ var FrontendExts = []string{
|
||||
|
||||
type stringSlice []string
|
||||
|
||||
func (s *stringSlice) String() string {
|
||||
return strings.Join(*s, ", ")
|
||||
}
|
||||
|
||||
func (s *stringSlice) Set(v string) error {
|
||||
*s = append(*s, v)
|
||||
return nil
|
||||
}
|
||||
func (s *stringSlice) String() string { return strings.Join(*s, ", ") }
|
||||
func (s *stringSlice) Set(v string) error { *s = append(*s, v); return nil }
|
||||
|
||||
type Config struct {
|
||||
InputPath string
|
||||
OutputPath string
|
||||
AppendMode bool
|
||||
Force bool
|
||||
SingleFile bool
|
||||
MaxSize int64
|
||||
MaxDepth int
|
||||
Ignores []string
|
||||
Extensions []string
|
||||
AbsRoot string
|
||||
ProtonDrive bool
|
||||
DrivePath string
|
||||
VerticalSlices bool
|
||||
SkipFrontend bool
|
||||
FrontendOnly bool
|
||||
OmitTest bool
|
||||
OmitMd bool
|
||||
InputPath string
|
||||
OutputPath string
|
||||
AppendMode bool
|
||||
Force bool
|
||||
SingleFile bool
|
||||
MaxSize int64
|
||||
MaxDepth int
|
||||
Ignores []string
|
||||
Extensions []string
|
||||
AbsRoot string
|
||||
ProtonDrive bool
|
||||
DrivePath string
|
||||
VerticalSlices bool
|
||||
SkipFrontend bool
|
||||
FrontendOnly bool
|
||||
OmitTest bool
|
||||
OmitMd bool
|
||||
IncludeInstructions bool
|
||||
}
|
||||
|
||||
func PrintUsage() {
|
||||
@@ -98,22 +77,23 @@ func PrintUsage() {
|
||||
|
||||
func Parse() (*Config, error) {
|
||||
var (
|
||||
input string
|
||||
output string
|
||||
appendMd bool
|
||||
force bool
|
||||
maxSize int64
|
||||
maxDepth int
|
||||
ignores stringSlice
|
||||
exts stringSlice
|
||||
showVer bool
|
||||
protonDrive bool
|
||||
drivePath string
|
||||
verticalSlices bool
|
||||
skipFrontend bool
|
||||
frontendOnly bool
|
||||
omitTest bool
|
||||
omitMd bool
|
||||
input string
|
||||
output string
|
||||
appendMd bool
|
||||
force bool
|
||||
maxSize int64
|
||||
maxDepth int
|
||||
ignores stringSlice
|
||||
exts stringSlice
|
||||
showVer bool
|
||||
protonDrive bool
|
||||
drivePath string
|
||||
verticalSlices bool
|
||||
skipFrontend bool
|
||||
frontendOnly bool
|
||||
omitTest bool
|
||||
omitMd bool
|
||||
includeInstructions bool
|
||||
)
|
||||
|
||||
flag.StringVar(&input, "i", "", "single file input (append mode only)")
|
||||
@@ -128,10 +108,11 @@ func Parse() (*Config, error) {
|
||||
flag.BoolVar(&protonDrive, "proton-drive", false, "upload output to Proton Drive after writing locally")
|
||||
flag.StringVar(&drivePath, "drive-path", "", "full remote path on Proton Drive (requires --proton-drive")
|
||||
flag.BoolVar(&verticalSlices, "vertical-slices", false, "split output into root file + one markdown per top-level directory")
|
||||
flag.BoolVar(&skipFrontend, "skip-frontend", false, "omit frontend file types (.html, .css, .js, .ts, .vue, .svelte, etc.)")
|
||||
flag.BoolVar(&skipFrontend, "skip-frontend", false, "omit frontend file types")
|
||||
flag.BoolVar(&frontendOnly, "frontend-only", false, "include only frontend file types and README.md")
|
||||
flag.BoolVar(&omitTest, "omit-test", false, "exclude test files (Go *_test.go, Java *Test.java) and strip #[cfg(test)] blocks from Rust")
|
||||
flag.BoolVar(&omitTest, "omit-test", false, "exclude test files and strip #[cfg(test)] blocks")
|
||||
flag.BoolVar(&omitMd, "omit-md", false, "omit all .md files except README.md")
|
||||
flag.BoolVar(&includeInstructions, "instructions", false, "include .dirmd instructions file if present in root")
|
||||
|
||||
flag.Usage = PrintUsage
|
||||
flag.Parse()
|
||||
@@ -144,19 +125,15 @@ func Parse() (*Config, error) {
|
||||
if output == "" {
|
||||
return nil, fmt.Errorf("-o is required")
|
||||
}
|
||||
|
||||
if drivePath != "" && !protonDrive {
|
||||
return nil, fmt.Errorf("--drive-path requires --proton-drive")
|
||||
}
|
||||
|
||||
if verticalSlices && appendMd {
|
||||
return nil, fmt.Errorf("--vertical-slices cannot be used with --append")
|
||||
}
|
||||
|
||||
if verticalSlices && input != "" {
|
||||
return nil, fmt.Errorf("--vertical-slices cannot be used with --input-file")
|
||||
}
|
||||
|
||||
if skipFrontend && frontendOnly {
|
||||
return nil, fmt.Errorf("--skip-frontend and --frontend-only are mutually exclusive")
|
||||
}
|
||||
@@ -167,20 +144,21 @@ func Parse() (*Config, error) {
|
||||
}
|
||||
|
||||
cfg := &Config{
|
||||
OutputPath: output,
|
||||
AppendMode: appendMd,
|
||||
Force: force,
|
||||
MaxSize: maxSize,
|
||||
MaxDepth: maxDepth,
|
||||
Ignores: append(DefaultIgnores, ignores...),
|
||||
Extensions: excludedExts,
|
||||
ProtonDrive: protonDrive,
|
||||
DrivePath: drivePath,
|
||||
VerticalSlices: verticalSlices,
|
||||
SkipFrontend: skipFrontend,
|
||||
FrontendOnly: frontendOnly,
|
||||
OmitTest: omitTest,
|
||||
OmitMd: omitMd,
|
||||
OutputPath: output,
|
||||
AppendMode: appendMd,
|
||||
Force: force,
|
||||
MaxSize: maxSize,
|
||||
MaxDepth: maxDepth,
|
||||
Ignores: append(DefaultIgnores, ignores...),
|
||||
Extensions: excludedExts,
|
||||
ProtonDrive: protonDrive,
|
||||
DrivePath: drivePath,
|
||||
VerticalSlices: verticalSlices,
|
||||
SkipFrontend: skipFrontend,
|
||||
FrontendOnly: frontendOnly,
|
||||
OmitTest: omitTest,
|
||||
OmitMd: omitMd,
|
||||
IncludeInstructions: includeInstructions,
|
||||
}
|
||||
|
||||
if input != "" {
|
||||
|
||||
Reference in New Issue
Block a user