@@ -171,14 +171,29 @@ func (t *transformer) transformFile(path string, info os.FileInfo, err error) er
171171 return errors .Errorf ("front matter option set on file that after transformation is non-markdown: %v" , target )
172172 }
173173
174- firstHeader , rest , err := popFirstHeader (path )
174+ dir , file := filepath .Split (path )
175+ // Remove trailing slash after split and check if root file.
176+ if dir [:len (dir )- 1 ] == t .c .InputDir && isMDFile (file ) && tr .PopHeader == nil {
177+ // Default popHeader to true for inputDir root file.
178+ tr .PopHeader = func () * bool { b := true ; return & b }()
179+ }
180+
181+ // If unset and not root file.
182+ if tr .PopHeader == nil {
183+ tr .PopHeader = func () * bool { b := false ; return & b }()
184+ }
185+
186+ firstHeader , rest , err := getFirstHeader (path , * tr .PopHeader )
175187 if err != nil {
176188 return errors .Wrap (err , "read first header" )
177189 }
178190
179- if err := ioutil .WriteFile (target , rest , os .ModePerm ); err != nil {
180- return err
191+ if rest != nil {
192+ if err := ioutil .WriteFile (target , rest , os .ModePerm ); err != nil {
193+ return err
194+ }
181195 }
196+
182197 _ , originFilename := filepath .Split (path )
183198 _ , targetFilename := filepath .Split (target )
184199 opts = append (opts , mdformatter .WithFrontMatterTransformer (& frontMatterTransformer {
@@ -413,7 +428,7 @@ func copyFiles(src, dst string) (err error) {
413428
414429// TODO(bwplotka): Use formatter, remove the title etc.
415430// Super hacky for now.
416- func popFirstHeader (path string ) (_ string , rest []byte , err error ) {
431+ func getFirstHeader (path string , popHeader bool ) (_ string , rest []byte , err error ) {
417432 file , err := os .Open (path )
418433 if err != nil {
419434 return "" , nil , err
@@ -424,6 +439,9 @@ func popFirstHeader(path string) (_ string, rest []byte, err error) {
424439 for scanner .Scan () {
425440 text := scanner .Text ()
426441 if strings .HasPrefix (text , "#" ) {
442+ if ! popHeader {
443+ return strings .TrimPrefix (text , "# " ), rest , scanner .Err ()
444+ }
427445 if _ , err := file .Seek (int64 (len (text )), 0 ); err != nil {
428446 return "" , nil , errors .Wrap (err , "seek" )
429447 }
0 commit comments