Add a -i flag to force showing 'index.html' in the output listing; by default do not show them.
This commit is contained in:
@@ -125,6 +125,11 @@ func processS3Bucket(s3Config *S3Config, opts *indexgen.Options) error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip index.html files unless ShowIndexFiles is enabled
|
||||||
|
if !opts.ShowIndexFiles && strings.HasSuffix(keyName, opts.OutputFile) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// Simple glob matching for filter
|
// Simple glob matching for filter
|
||||||
if opts.Filter != "*" && opts.Filter != "" {
|
if opts.Filter != "*" && opts.Filter != "" {
|
||||||
matched, err := filepath.Match(opts.Filter, keyName)
|
matched, err := filepath.Match(opts.Filter, keyName)
|
||||||
@@ -339,6 +344,7 @@ func main() {
|
|||||||
var directory string
|
var directory string
|
||||||
var s3URL string
|
var s3URL string
|
||||||
var dryRun bool
|
var dryRun bool
|
||||||
|
var showIndexFiles bool
|
||||||
|
|
||||||
// Set defaults
|
// Set defaults
|
||||||
opts.DirAppend = true
|
opts.DirAppend = true
|
||||||
@@ -352,6 +358,7 @@ func main() {
|
|||||||
flag.BoolVar(&dryRun, "n", false, "dry run: show what would be written without actually writing")
|
flag.BoolVar(&dryRun, "n", false, "dry run: show what would be written without actually writing")
|
||||||
flag.StringVar(&excludeRegexStr, "x", "", "exclude files matching regular expression")
|
flag.StringVar(&excludeRegexStr, "x", "", "exclude files matching regular expression")
|
||||||
flag.BoolVar(&opts.Verbose, "v", false, "verbosely list every processed file")
|
flag.BoolVar(&opts.Verbose, "v", false, "verbosely list every processed file")
|
||||||
|
flag.BoolVar(&showIndexFiles, "i", false, "show index.html files in directory listings")
|
||||||
|
|
||||||
flag.Usage = func() {
|
flag.Usage = func() {
|
||||||
fmt.Fprintf(os.Stderr, "Generate directory index files (recursive is ON, hidden files included by default).\n")
|
fmt.Fprintf(os.Stderr, "Generate directory index files (recursive is ON, hidden files included by default).\n")
|
||||||
@@ -391,8 +398,9 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set dry run flag
|
// Set dry run and show index files flags
|
||||||
opts.DryRun = dryRun
|
opts.DryRun = dryRun
|
||||||
|
opts.ShowIndexFiles = showIndexFiles
|
||||||
|
|
||||||
if s3URL != "" {
|
if s3URL != "" {
|
||||||
// Parse S3 URL
|
// Parse S3 URL
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ type Options struct {
|
|||||||
ExcludeRegex *regexp.Regexp
|
ExcludeRegex *regexp.Regexp
|
||||||
Verbose bool
|
Verbose bool
|
||||||
DryRun bool
|
DryRun bool
|
||||||
|
ShowIndexFiles bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type FileEntry struct {
|
type FileEntry struct {
|
||||||
@@ -275,7 +276,7 @@ func ReadDirEntries(dirPath string, opts *Options) ([]FileEntry, error) {
|
|||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
fileName := file.Name()
|
fileName := file.Name()
|
||||||
|
|
||||||
if strings.EqualFold(fileName, opts.OutputFile) {
|
if !opts.ShowIndexFiles && strings.EqualFold(fileName, opts.OutputFile) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,11 +101,13 @@ func TestHTMLTemplate(t *testing.T) {
|
|||||||
Entries []FileEntry
|
Entries []FileEntry
|
||||||
DirAppend bool
|
DirAppend bool
|
||||||
OutputFile string
|
OutputFile string
|
||||||
|
IsRoot bool
|
||||||
}{
|
}{
|
||||||
DirName: "test-dir",
|
DirName: "test-dir",
|
||||||
Entries: []FileEntry{},
|
Entries: []FileEntry{},
|
||||||
DirAppend: false,
|
DirAppend: false,
|
||||||
OutputFile: "index.html",
|
OutputFile: "index.html",
|
||||||
|
IsRoot: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
@@ -161,11 +163,13 @@ func TestHTMLTemplateWithEntries(t *testing.T) {
|
|||||||
Entries []FileEntry
|
Entries []FileEntry
|
||||||
DirAppend bool
|
DirAppend bool
|
||||||
OutputFile string
|
OutputFile string
|
||||||
|
IsRoot bool
|
||||||
}{
|
}{
|
||||||
DirName: "test-dir",
|
DirName: "test-dir",
|
||||||
Entries: entries,
|
Entries: entries,
|
||||||
DirAppend: false,
|
DirAppend: false,
|
||||||
OutputFile: "index.html",
|
OutputFile: "index.html",
|
||||||
|
IsRoot: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
|
|||||||
@@ -245,9 +245,9 @@ func TestProcessDirWithDirAppend(t *testing.T) {
|
|||||||
|
|
||||||
htmlContent := string(content)
|
htmlContent := string(content)
|
||||||
|
|
||||||
// Check that directory links include index.html (URL escaped)
|
// Check that directory links include index.html
|
||||||
if !strings.Contains(htmlContent, "subdir%2Findex.html") {
|
if !strings.Contains(htmlContent, "subdir/index.html") {
|
||||||
t.Errorf("Directory links should include index.html when DirAppend is true. Expected subdir%%2Findex.html in content")
|
t.Errorf("Directory links should include index.html when DirAppend is true. Expected subdir/index.html in content")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user